diff options
author | Fred Fish <fnf@specifix.com> | 1997-06-28 06:10:06 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 1997-06-28 06:10:06 +0000 |
commit | 609fd03384f8c43977732aac6385c3f7b7298579 (patch) | |
tree | 0c8278ef3b17c12b4ffcecf31639115077b3c16e /gdb/buildsym.c | |
parent | 70742cd83193a0f11047a5158a60217cfe99dadd (diff) | |
download | gdb-609fd03384f8c43977732aac6385c3f7b7298579.zip gdb-609fd03384f8c43977732aac6385c3f7b7298579.tar.gz gdb-609fd03384f8c43977732aac6385c3f7b7298579.tar.bz2 |
* buildsym.h (struct subfile): Add debugformat member.
(record_debugformat): Declare global function.
* buildsym.c (start_subfile): Initialize debugformat member
to NULL.
(record_debugformat): New function to record the format.
(end_symtab): Copy format into symtab debugformat member.
(end_symtab): Free subfile debugformat member.
* symmisc.c (free_symtab): Free debugformat when freeing
symtab.
* symfile.c (allocate_symtab): Initialize the new debugformat
member for new symtabs.
* symtab.h (struct symtab): Add debugformat member.
* source.c (source_info): Print the debug format.
* os9kread.c (os9k_process_one_symbol): Call record_debugformat
with "OS9".
* hpread.c (hpread_expand_symtab): Call record_debugformat
with "HP".
(hpread_process_one_debug_symbol): Ditto.
* dbxread.c (process_one_symbol): Call record_debugformat
with "stabs".
* coffread.c (coff_start_symtab): Call record_debugformat
with "COFF".
* xcoffread.c (read_xcoff_symtab): Call record_debugformat
with "XCOFF".
* dwarfread.c (read_file_scope): Call record_debugformat
with "DWARF 1".
* dwarf2read.c (read_file_scope): Call record_debugformat
with "DWARF 2".
* dstread.c (dst_end_symtab): Set debugformat to be
"Apollo DST".
* mdebugread.c (new_symtab): Set debugformat to be "ECOFF".
Diffstat (limited to 'gdb/buildsym.c')
-rw-r--r-- | gdb/buildsym.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gdb/buildsym.c b/gdb/buildsym.c index b9c70b7..6c94407 100644 --- a/gdb/buildsym.c +++ b/gdb/buildsym.c @@ -566,6 +566,10 @@ start_subfile (name, dirname) subfile->language = subfile->next->language; } + /* Initialize the debug format string to NULL. We may supply it + later via a call to record_debugformat. */ + subfile->debugformat = NULL; + /* cfront output is a C program, so in most ways it looks like a C program. But to demangle we need to set the language to C++. We can distinguish cfront code by the fact that it has #line @@ -968,6 +972,14 @@ end_symtab (end_addr, objfile, section) language it is from things we found in 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 -> symbol_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. */ @@ -986,6 +998,10 @@ end_symtab (end_addr, objfile, section) { free ((PTR) subfile->line_vector); } + if (subfile->debugformat != NULL) + { + free ((PTR) subfile->debugformat); + } nextsub = subfile->next; free ((PTR)subfile); @@ -1066,6 +1082,14 @@ hashname (name) } +void +record_debugformat (format) + char *format; +{ + current_subfile -> debugformat = savestring (format, strlen (format)); +} + + /* Initialize anything that needs initializing when starting to read a fresh piece of a symbol file, e.g. reading in the stuff corresponding to a psymtab. */ |