summaryrefslogtreecommitdiff
path: root/gdb/buildsym.c
diff options
context:
space:
mode:
authorFred Fish <fnf@specifix.com>1997-06-28 06:10:06 +0000
committerFred Fish <fnf@specifix.com>1997-06-28 06:10:06 +0000
commit609fd03384f8c43977732aac6385c3f7b7298579 (patch)
tree0c8278ef3b17c12b4ffcecf31639115077b3c16e /gdb/buildsym.c
parent70742cd83193a0f11047a5158a60217cfe99dadd (diff)
downloadbinutils-gdb-609fd03384f8c43977732aac6385c3f7b7298579.tar.gz
* 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.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gdb/buildsym.c b/gdb/buildsym.c
index b9c70b75ec2..6c944072e03 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. */