* xcoffread.c (read_xcoff_symtab): Make `debugfmt' const.

* symtab.h (struct symtab) <producer, debugformat>: Now const.
	* symmisc.c (free_symtab): Don't free debugformat.
	* buildsym.h (struct subfile) <producer, debugformat>: Now const.
	(record_debugformat, record_producer): Document.
	* buildsym.c (end_symtab): Don't save debugformat and producer
	names on obstack.
	(end_symtab): Don't free debugformat and producer fields.
	(record_debugformat): Don't call xstrdup.
	(record_producer): Likewise.
This commit is contained in:
Tom Tromey 2011-04-04 14:29:27 +00:00
parent d4d4db8a72
commit 554d387d4c
6 changed files with 30 additions and 36 deletions

View File

@ -1,3 +1,16 @@
2011-04-04 Tom Tromey <tromey@redhat.com>
* xcoffread.c (read_xcoff_symtab): Make `debugfmt' const.
* symtab.h (struct symtab) <producer, debugformat>: Now const.
* symmisc.c (free_symtab): Don't free debugformat.
* buildsym.h (struct subfile) <producer, debugformat>: Now const.
(record_debugformat, record_producer): Document.
* buildsym.c (end_symtab): Don't save debugformat and producer
names on obstack.
(end_symtab): Don't free debugformat and producer fields.
(record_debugformat): Don't call xstrdup.
(record_producer): Likewise.
2011-04-04 Tom Tromey <tromey@redhat.com>
* source.c (find_source_lines): Remove LSEEK_NOT_LINEAR code.

View File

@ -1111,20 +1111,6 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
the symbols. */
symtab->language = subfile->language;
/* Save the debug format string (if any) in the symtab. */
if (subfile->debugformat != NULL)
{
symtab->debugformat = obsavestring (subfile->debugformat,
strlen (subfile->debugformat),
&objfile->objfile_obstack);
}
/* Similarly for the producer. */
if (subfile->producer != NULL)
symtab->producer = obsavestring (subfile->producer,
strlen (subfile->producer),
&objfile->objfile_obstack);
/* All symtabs for the main file and the subfiles share a
blockvector, so we need to clear primary for everything
but the main file. */
@ -1169,12 +1155,6 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
{
xfree ((void *) subfile->line_vector);
}
if (subfile->debugformat != NULL)
{
xfree ((void *) subfile->debugformat);
}
if (subfile->producer != NULL)
xfree (subfile->producer);
nextsub = subfile->next;
xfree ((void *) subfile);
@ -1279,20 +1259,15 @@ hashname (char *name)
void
record_debugformat (char *format)
record_debugformat (const char *format)
{
current_subfile->debugformat = xstrdup (format);
current_subfile->debugformat = format;
}
void
record_producer (const char *producer)
{
/* The producer is not always provided in the debugging info.
Do nothing if PRODUCER is NULL. */
if (producer == NULL)
return;
current_subfile->producer = xstrdup (producer);
current_subfile->producer = producer;
}
/* Merge the first symbol list SRCLIST into the second symbol list

View File

@ -70,8 +70,8 @@ struct subfile
struct linetable *line_vector;
int line_vector_length;
enum language language;
char *producer;
char *debugformat;
const char *producer;
const char *debugformat;
struct symtab *symtab;
};
@ -292,7 +292,15 @@ extern void record_pending_block (struct objfile *objfile,
struct block *block,
struct pending_block *opblock);
extern void record_debugformat (char *format);
/* Record the name of the debug format in the current pending symbol
table. FORMAT must be a string with a lifetime at least as long as
the symtab's objfile. */
extern void record_debugformat (const char *format);
/* Record the name of the debuginfo producer (usually the compiler) in
the current pending symbol table. PRODUCER must be a string with a
lifetime at least as long as the symtab's objfile. */
extern void record_producer (const char *producer);

View File

@ -115,8 +115,6 @@ free_symtab (struct symtab *s)
xfree (s->line_charpos);
if (s->fullname != NULL)
xfree (s->fullname);
if (s->debugformat != NULL)
xfree (s->debugformat);
xfree (s);
}

View File

@ -817,11 +817,11 @@ struct symtab
for automated testing of gdb but may also be information that is
useful to the user. */
char *debugformat;
const char *debugformat;
/* String of producer version information. May be zero. */
char *producer;
const char *producer;
/* Full name of file as found by searching the source path.
NULL if not yet known. */

View File

@ -944,7 +944,7 @@ read_xcoff_symtab (struct partial_symtab *pst)
((struct coff_symfile_info *) objfile->deprecated_sym_private)->strtbl;
char *debugsec =
((struct coff_symfile_info *) objfile->deprecated_sym_private)->debugsec;
char *debugfmt = bfd_xcoff_is_xcoff64 (abfd) ? "XCOFF64" : "XCOFF";
const char *debugfmt = bfd_xcoff_is_xcoff64 (abfd) ? "XCOFF64" : "XCOFF";
struct internal_syment symbol[1];
union internal_auxent main_aux;