diff options
author | Tom Tromey <tom@tromey.com> | 2016-09-22 14:25:08 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2016-10-21 14:17:33 -0600 |
commit | 8dddcb8f005e8470312bf33041bb6ddaa5084e32 (patch) | |
tree | d88f904c0193031ec5215f25f03201d321a558cc /gdb/coffread.c | |
parent | d25e87199327846e42b5a23f4365d75e75517ab3 (diff) | |
download | gdb-8dddcb8f005e8470312bf33041bb6ddaa5084e32.zip gdb-8dddcb8f005e8470312bf33041bb6ddaa5084e32.tar.gz gdb-8dddcb8f005e8470312bf33041bb6ddaa5084e32.tar.bz2 |
Record minimal symbols directly in reader.
This patch changes minimal symbol creation in two ways. First, it
removes global variables in favor of members of minimal_symbol_reader.
Second, it changes functions like prim_record_minimal_symbol to be
member functions of minimal_symbol_reader.
2016-10-21 Tom Tromey <tom@tromey.com>
* xcoffread.c (record_minimal_symbol, scan_xcoff_symtab): Add
"reader" argument. Update.
(xcoff_initial_scan): Update.
* symfile.h (mdebug_build_psymtabs): Add "reader" argument.
* mipsread.c (mipscoff_symfile_read): Update.
(read_alphacoff_dynamic_symtab): Add "reader" argument. Update.
* minsyms.h (minimal_symbol_reader) <record, record_full>:
Declare.
<m_msym_bunch, m_msym_bunch_index, m_msym_count>: New members.
<record_with_info>: New function, renamed from
prim_record_minimal_symbol_and_info.
* minsyms.c (msym_bunch, msym_bunch_index, msym_count): Remove
globals.
(minimal_symbol_reader): Initialize new members.
(minimal_symbol_reader::record): Renamed from
prim_record_minimal_symbol.
(minimal_symbol_reader::record_full): Renamed from
prim_record_minimal_symbol_full.
(prim_record_minimal_symbol_and_info): Move to minsyms.h; rename.
* mdebugread.c (mdebug_build_psymtabs, parse_partial_symbols)
(record_minimal_symbol): Add "reader" argument. Update.
(elfmdebug_build_psymtabs): Update.
* machoread.c (macho_symtab_add_minsym, macho_symtab_read): Add
"reader" argument. Update.
(macho_symfile_read): Update.
* elfread.c (record_minimal_symbol, elf_symtab_read)
(elf_rel_plt_read): Add "reader" argument. Update.
(elf_read_minimal_symbols): Update.
* dbxread.c (record_minimal_symbol, read_dbx_dynamic_symtab)
(read_dbx_symtab): Add "reader" argument. Update.
(dbx_symfile_read): Update.
* coffread.c (record_minimal_symbol, coff_symtab_read): Add
"reader" argument. Update.
(coff_symfile_read): Update.
* coff-pe-read.h (read_pe_exported_syms): Add "reader" argument.
* coff-pe-read.c (add_pe_exported_sym, add_pe_forwarded_sym)
(read_pe_exported_syms): Add "reader" argument. Update.
Diffstat (limited to 'gdb/coffread.c')
-rw-r--r-- | gdb/coffread.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/gdb/coffread.c b/gdb/coffread.c index b4de08e..3125fb1 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -207,7 +207,8 @@ static void read_one_sym (struct coff_symbol *, struct internal_syment *, union internal_auxent *); -static void coff_symtab_read (long, unsigned int, struct objfile *); +static void coff_symtab_read (minimal_symbol_reader &, + long, unsigned int, struct objfile *); /* We are called once per section from coff_symfile_read. We need to examine each section we are passed, check to see @@ -461,7 +462,8 @@ is_import_fixup_symbol (struct coff_symbol *cs, } static struct minimal_symbol * -record_minimal_symbol (struct coff_symbol *cs, CORE_ADDR address, +record_minimal_symbol (minimal_symbol_reader &reader, + struct coff_symbol *cs, CORE_ADDR address, enum minimal_symbol_type type, int section, struct objfile *objfile) { @@ -479,8 +481,7 @@ record_minimal_symbol (struct coff_symbol *cs, CORE_ADDR address, return NULL; } - return prim_record_minimal_symbol_and_info (cs->c_name, address, - type, section, objfile); + return reader.record_with_info (cs->c_name, address, type, section); } /* coff_symfile_init () @@ -650,7 +651,7 @@ coff_symfile_read (struct objfile *objfile, int symfile_flags) /* Now that the executable file is positioned at symbol table, process it and define symbols accordingly. */ - coff_symtab_read ((long) symtab_offset, num_symbols, objfile); + coff_symtab_read (reader, (long) symtab_offset, num_symbols, objfile); /* Install any minimal symbols that have been collected as the current minimal symbols for this objfile. */ @@ -778,7 +779,8 @@ coff_symfile_finish (struct objfile *objfile) We read them one at a time using read_one_sym (). */ static void -coff_symtab_read (long symtab_offset, unsigned int nsyms, +coff_symtab_read (minimal_symbol_reader &reader, + long symtab_offset, unsigned int nsyms, struct objfile *objfile) { struct gdbarch *gdbarch = get_objfile_arch (objfile); @@ -876,7 +878,7 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms, int section = cs_to_section (cs, objfile); tmpaddr = cs->c_value; - record_minimal_symbol (cs, tmpaddr, mst_text, + record_minimal_symbol (reader, cs, tmpaddr, mst_text, section, objfile); fcn_line_ptr = main_aux.x_sym.x_fcnary.x_fcn.x_lnnoptr; @@ -1036,7 +1038,7 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms, ms_type = mst_unknown; } - msym = record_minimal_symbol (cs, tmpaddr, ms_type, + msym = record_minimal_symbol (reader, cs, tmpaddr, ms_type, sec, objfile); if (msym) gdbarch_coff_make_msymbol_special (gdbarch, @@ -1198,7 +1200,7 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms, { /* We've got no debugging symbols, but it's a portable executable, so try to read the export table. */ - read_pe_exported_syms (objfile); + read_pe_exported_syms (reader, objfile); } if (get_last_source_file ()) |