objfiles.h,psympriv.h,psymtab.c: Whitespace.
gdb/ChangeLog: * objfiles.h: Whitespace cleanup. * psympriv.h: Whitespace cleanup. * psymtab.c: Whitespace/coding convention cleanup.
This commit is contained in:
parent
e3ae3c4345
commit
95cf586902
@ -1,3 +1,9 @@
|
||||
2015-08-15 Doug Evans <xdje42@gmail.com>
|
||||
|
||||
* objfiles.h: Whitespace cleanup.
|
||||
* psympriv.h: Whitespace cleanup.
|
||||
* psymtab.c: Whitespace/coding convention cleanup.
|
||||
|
||||
2015-08-15 Patrick Palka <patrick@parcs.ath.cx>
|
||||
|
||||
* inferior.c (detach_inferior_command): Don't call
|
||||
|
288
gdb/objfiles.h
288
gdb/objfiles.h
@ -75,7 +75,7 @@ struct objfile_data;
|
||||
process startup code. Since we have no guarantee that the linked
|
||||
in startup modules have any debugging information that gdb can use,
|
||||
we need to avoid following frame pointers back into frames that might
|
||||
have been built in the startup code, as we might get hopelessly
|
||||
have been built in the startup code, as we might get hopelessly
|
||||
confused. However, we almost always have debugging information
|
||||
available for main().
|
||||
|
||||
@ -99,33 +99,34 @@ struct objfile_data;
|
||||
from user code don't go wandering off into the startup code. */
|
||||
|
||||
struct entry_info
|
||||
{
|
||||
/* The unrelocated value we should use for this objfile entry point. */
|
||||
CORE_ADDR entry_point;
|
||||
{
|
||||
/* The unrelocated value we should use for this objfile entry point. */
|
||||
CORE_ADDR entry_point;
|
||||
|
||||
/* The index of the section in which the entry point appears. */
|
||||
int the_bfd_section_index;
|
||||
/* The index of the section in which the entry point appears. */
|
||||
int the_bfd_section_index;
|
||||
|
||||
/* Set to 1 iff ENTRY_POINT contains a valid value. */
|
||||
unsigned entry_point_p : 1;
|
||||
/* Set to 1 iff ENTRY_POINT contains a valid value. */
|
||||
unsigned entry_point_p : 1;
|
||||
|
||||
/* Set to 1 iff this object was initialized. */
|
||||
unsigned initialized : 1;
|
||||
};
|
||||
/* Set to 1 iff this object was initialized. */
|
||||
unsigned initialized : 1;
|
||||
};
|
||||
|
||||
/* Sections in an objfile. The section offsets are stored in the
|
||||
OBJFILE. */
|
||||
|
||||
struct obj_section
|
||||
{
|
||||
struct bfd_section *the_bfd_section; /* BFD section pointer */
|
||||
{
|
||||
/* BFD section pointer */
|
||||
struct bfd_section *the_bfd_section;
|
||||
|
||||
/* Objfile this section is part of. */
|
||||
struct objfile *objfile;
|
||||
/* Objfile this section is part of. */
|
||||
struct objfile *objfile;
|
||||
|
||||
/* True if this "overlay section" is mapped into an "overlay region". */
|
||||
int ovly_mapped;
|
||||
};
|
||||
/* True if this "overlay section" is mapped into an "overlay region". */
|
||||
int ovly_mapped;
|
||||
};
|
||||
|
||||
/* Relocation offset applied to S. */
|
||||
#define obj_section_offset(s) \
|
||||
@ -149,13 +150,22 @@ struct obj_section
|
||||
read, size of string table (if any), etc. */
|
||||
|
||||
struct objstats
|
||||
{
|
||||
int n_psyms; /* Number of partial symbols read */
|
||||
int n_syms; /* Number of full symbols read */
|
||||
int n_stabs; /* Number of ".stabs" read (if applicable) */
|
||||
int n_types; /* Number of types */
|
||||
int sz_strtab; /* Size of stringtable, (if applicable) */
|
||||
};
|
||||
{
|
||||
/* Number of partial symbols read. */
|
||||
int n_psyms;
|
||||
|
||||
/* Number of full symbols read. */
|
||||
int n_syms;
|
||||
|
||||
/* Number of ".stabs" read (if applicable). */
|
||||
int n_stabs;
|
||||
|
||||
/* Number of types. */
|
||||
int n_types;
|
||||
|
||||
/* Size of stringtable, (if applicable). */
|
||||
int sz_strtab;
|
||||
};
|
||||
|
||||
#define OBJSTAT(objfile, expr) (objfile -> stats.expr)
|
||||
#define OBJSTATS struct objstats stats
|
||||
@ -175,12 +185,13 @@ struct objfile_per_bfd_storage
|
||||
/* The storage has an obstack of its own. */
|
||||
|
||||
struct obstack storage_obstack;
|
||||
|
||||
|
||||
/* Byte cache for file names. */
|
||||
|
||||
struct bcache *filename_cache;
|
||||
|
||||
/* Byte cache for macros. */
|
||||
|
||||
struct bcache *macro_cache;
|
||||
|
||||
/* The gdbarch associated with the BFD. Note that this gdbarch is
|
||||
@ -195,6 +206,7 @@ struct objfile_per_bfd_storage
|
||||
both null-terminated; the first one is a mangled or linkage
|
||||
name, and the second is the demangled name or just a zero byte
|
||||
if the name doesn't demangle. */
|
||||
|
||||
struct htab *demangled_names_hash;
|
||||
|
||||
/* The per-objfile information about the entry point, the scope (file/func)
|
||||
@ -226,6 +238,7 @@ struct objfile_per_bfd_storage
|
||||
de-duplication is applied. Note in particular that this has only
|
||||
a passing relationship with the actual size of the table above;
|
||||
use minimal_symbol_count if you need the true size. */
|
||||
|
||||
int n_minsyms;
|
||||
|
||||
/* This is true if minimal symbols have already been read. Symbol
|
||||
@ -257,162 +270,165 @@ struct objfile_per_bfd_storage
|
||||
(see remote-vx.c). */
|
||||
|
||||
struct objfile
|
||||
{
|
||||
{
|
||||
/* All struct objfile's are chained together by their next pointers.
|
||||
The program space field "objfiles" (frequently referenced via
|
||||
the macro "object_files") points to the first link in this chain. */
|
||||
|
||||
/* All struct objfile's are chained together by their next pointers.
|
||||
The program space field "objfiles" (frequently referenced via
|
||||
the macro "object_files") points to the first link in this
|
||||
chain. */
|
||||
struct objfile *next;
|
||||
|
||||
struct objfile *next;
|
||||
/* The object file's original name as specified by the user,
|
||||
made absolute, and tilde-expanded. However, it is not canonicalized
|
||||
(i.e., it has not been passed through gdb_realpath).
|
||||
This pointer is never NULL. This does not have to be freed; it is
|
||||
guaranteed to have a lifetime at least as long as the objfile. */
|
||||
|
||||
/* The object file's original name as specified by the user,
|
||||
made absolute, and tilde-expanded. However, it is not canonicalized
|
||||
(i.e., it has not been passed through gdb_realpath).
|
||||
This pointer is never NULL. This does not have to be freed; it is
|
||||
guaranteed to have a lifetime at least as long as the objfile. */
|
||||
char *original_name;
|
||||
|
||||
char *original_name;
|
||||
CORE_ADDR addr_low;
|
||||
|
||||
CORE_ADDR addr_low;
|
||||
/* Some flag bits for this objfile.
|
||||
The values are defined by OBJF_*. */
|
||||
|
||||
/* Some flag bits for this objfile.
|
||||
The values are defined by OBJF_*. */
|
||||
unsigned short flags;
|
||||
|
||||
unsigned short flags;
|
||||
/* The program space associated with this objfile. */
|
||||
|
||||
/* The program space associated with this objfile. */
|
||||
struct program_space *pspace;
|
||||
|
||||
struct program_space *pspace;
|
||||
/* List of compunits.
|
||||
These are used to do symbol lookups and file/line-number lookups. */
|
||||
|
||||
/* List of compunits.
|
||||
These are used to do symbol lookups and file/line-number lookups. */
|
||||
struct compunit_symtab *compunit_symtabs;
|
||||
|
||||
struct compunit_symtab *compunit_symtabs;
|
||||
/* Each objfile points to a linked list of partial symtabs derived from
|
||||
this file, one partial symtab structure for each compilation unit
|
||||
(source file). */
|
||||
|
||||
/* Each objfile points to a linked list of partial symtabs derived from
|
||||
this file, one partial symtab structure for each compilation unit
|
||||
(source file). */
|
||||
struct partial_symtab *psymtabs;
|
||||
|
||||
struct partial_symtab *psymtabs;
|
||||
/* Map addresses to the entries of PSYMTABS. It would be more efficient to
|
||||
have a map per the whole process but ADDRMAP cannot selectively remove
|
||||
its items during FREE_OBJFILE. This mapping is already present even for
|
||||
PARTIAL_SYMTABs which still have no corresponding full SYMTABs read. */
|
||||
|
||||
/* Map addresses to the entries of PSYMTABS. It would be more efficient to
|
||||
have a map per the whole process but ADDRMAP cannot selectively remove
|
||||
its items during FREE_OBJFILE. This mapping is already present even for
|
||||
PARTIAL_SYMTABs which still have no corresponding full SYMTABs read. */
|
||||
struct addrmap *psymtabs_addrmap;
|
||||
|
||||
struct addrmap *psymtabs_addrmap;
|
||||
/* List of freed partial symtabs, available for re-use. */
|
||||
|
||||
/* List of freed partial symtabs, available for re-use. */
|
||||
struct partial_symtab *free_psymtabs;
|
||||
|
||||
struct partial_symtab *free_psymtabs;
|
||||
/* The object file's BFD. Can be null if the objfile contains only
|
||||
minimal symbols, e.g. the run time common symbols for SunOS4. */
|
||||
|
||||
/* The object file's BFD. Can be null if the objfile contains only
|
||||
minimal symbols, e.g. the run time common symbols for SunOS4. */
|
||||
bfd *obfd;
|
||||
|
||||
bfd *obfd;
|
||||
/* The per-BFD data. Note that this is treated specially if OBFD
|
||||
is NULL. */
|
||||
|
||||
/* The per-BFD data. Note that this is treated specially if OBFD
|
||||
is NULL. */
|
||||
struct objfile_per_bfd_storage *per_bfd;
|
||||
|
||||
struct objfile_per_bfd_storage *per_bfd;
|
||||
/* The modification timestamp of the object file, as of the last time
|
||||
we read its symbols. */
|
||||
|
||||
/* The modification timestamp of the object file, as of the last time
|
||||
we read its symbols. */
|
||||
long mtime;
|
||||
|
||||
long mtime;
|
||||
/* Obstack to hold objects that should be freed when we load a new symbol
|
||||
table from this object file. */
|
||||
|
||||
/* Obstack to hold objects that should be freed when we load a new symbol
|
||||
table from this object file. */
|
||||
struct obstack objfile_obstack;
|
||||
|
||||
struct obstack objfile_obstack;
|
||||
/* A byte cache where we can stash arbitrary "chunks" of bytes that
|
||||
will not change. */
|
||||
|
||||
/* A byte cache where we can stash arbitrary "chunks" of bytes that
|
||||
will not change. */
|
||||
struct psymbol_bcache *psymbol_cache; /* Byte cache for partial syms. */
|
||||
|
||||
struct psymbol_bcache *psymbol_cache; /* Byte cache for partial syms. */
|
||||
/* Vectors of all partial symbols read in from file. The actual data
|
||||
is stored in the objfile_obstack. */
|
||||
|
||||
/* Vectors of all partial symbols read in from file. The actual data
|
||||
is stored in the objfile_obstack. */
|
||||
struct psymbol_allocation_list global_psymbols;
|
||||
struct psymbol_allocation_list static_psymbols;
|
||||
|
||||
struct psymbol_allocation_list global_psymbols;
|
||||
struct psymbol_allocation_list static_psymbols;
|
||||
/* Structure which keeps track of functions that manipulate objfile's
|
||||
of the same type as this objfile. I.e. the function to read partial
|
||||
symbols for example. Note that this structure is in statically
|
||||
allocated memory, and is shared by all objfiles that use the
|
||||
object module reader of this type. */
|
||||
|
||||
/* Structure which keeps track of functions that manipulate objfile's
|
||||
of the same type as this objfile. I.e. the function to read partial
|
||||
symbols for example. Note that this structure is in statically
|
||||
allocated memory, and is shared by all objfiles that use the
|
||||
object module reader of this type. */
|
||||
const struct sym_fns *sf;
|
||||
|
||||
const struct sym_fns *sf;
|
||||
/* Per objfile data-pointers required by other GDB modules. */
|
||||
|
||||
/* Per objfile data-pointers required by other GDB modules. */
|
||||
REGISTRY_FIELDS;
|
||||
|
||||
REGISTRY_FIELDS;
|
||||
/* Set of relocation offsets to apply to each section.
|
||||
The table is indexed by the_bfd_section->index, thus it is generally
|
||||
as large as the number of sections in the binary.
|
||||
The table is stored on the objfile_obstack.
|
||||
|
||||
/* Set of relocation offsets to apply to each section.
|
||||
The table is indexed by the_bfd_section->index, thus it is generally
|
||||
as large as the number of sections in the binary.
|
||||
The table is stored on the objfile_obstack.
|
||||
These offsets indicate that all symbols (including partial and
|
||||
minimal symbols) which have been read have been relocated by this
|
||||
much. Symbols which are yet to be read need to be relocated by it. */
|
||||
|
||||
These offsets indicate that all symbols (including partial and
|
||||
minimal symbols) which have been read have been relocated by this
|
||||
much. Symbols which are yet to be read need to be relocated by it. */
|
||||
struct section_offsets *section_offsets;
|
||||
int num_sections;
|
||||
|
||||
struct section_offsets *section_offsets;
|
||||
int num_sections;
|
||||
/* Indexes in the section_offsets array. These are initialized by the
|
||||
*_symfile_offsets() family of functions (som_symfile_offsets,
|
||||
xcoff_symfile_offsets, default_symfile_offsets). In theory they
|
||||
should correspond to the section indexes used by bfd for the
|
||||
current objfile. The exception to this for the time being is the
|
||||
SOM version. */
|
||||
|
||||
/* Indexes in the section_offsets array. These are initialized by the
|
||||
*_symfile_offsets() family of functions (som_symfile_offsets,
|
||||
xcoff_symfile_offsets, default_symfile_offsets). In theory they
|
||||
should correspond to the section indexes used by bfd for the
|
||||
current objfile. The exception to this for the time being is the
|
||||
SOM version. */
|
||||
int sect_index_text;
|
||||
int sect_index_data;
|
||||
int sect_index_bss;
|
||||
int sect_index_rodata;
|
||||
|
||||
int sect_index_text;
|
||||
int sect_index_data;
|
||||
int sect_index_bss;
|
||||
int sect_index_rodata;
|
||||
/* These pointers are used to locate the section table, which
|
||||
among other things, is used to map pc addresses into sections.
|
||||
SECTIONS points to the first entry in the table, and
|
||||
SECTIONS_END points to the first location past the last entry
|
||||
in the table. The table is stored on the objfile_obstack. The
|
||||
sections are indexed by the BFD section index; but the
|
||||
structure data is only valid for certain sections
|
||||
(e.g. non-empty, SEC_ALLOC). */
|
||||
|
||||
/* These pointers are used to locate the section table, which
|
||||
among other things, is used to map pc addresses into sections.
|
||||
SECTIONS points to the first entry in the table, and
|
||||
SECTIONS_END points to the first location past the last entry
|
||||
in the table. The table is stored on the objfile_obstack. The
|
||||
sections are indexed by the BFD section index; but the
|
||||
structure data is only valid for certain sections
|
||||
(e.g. non-empty, SEC_ALLOC). */
|
||||
struct obj_section *sections, *sections_end;
|
||||
|
||||
struct obj_section *sections, *sections_end;
|
||||
/* GDB allows to have debug symbols in separate object files. This is
|
||||
used by .gnu_debuglink, ELF build id note and Mach-O OSO.
|
||||
Although this is a tree structure, GDB only support one level
|
||||
(ie a separate debug for a separate debug is not supported). Note that
|
||||
separate debug object are in the main chain and therefore will be
|
||||
visited by ALL_OBJFILES & co iterators. Separate debug objfile always
|
||||
has a non-nul separate_debug_objfile_backlink. */
|
||||
|
||||
/* GDB allows to have debug symbols in separate object files. This is
|
||||
used by .gnu_debuglink, ELF build id note and Mach-O OSO.
|
||||
Although this is a tree structure, GDB only support one level
|
||||
(ie a separate debug for a separate debug is not supported). Note that
|
||||
separate debug object are in the main chain and therefore will be
|
||||
visited by ALL_OBJFILES & co iterators. Separate debug objfile always
|
||||
has a non-nul separate_debug_objfile_backlink. */
|
||||
/* Link to the first separate debug object, if any. */
|
||||
|
||||
/* Link to the first separate debug object, if any. */
|
||||
struct objfile *separate_debug_objfile;
|
||||
struct objfile *separate_debug_objfile;
|
||||
|
||||
/* If this is a separate debug object, this is used as a link to the
|
||||
actual executable objfile. */
|
||||
struct objfile *separate_debug_objfile_backlink;
|
||||
/* If this is a separate debug object, this is used as a link to the
|
||||
actual executable objfile. */
|
||||
|
||||
/* If this is a separate debug object, this is a link to the next one
|
||||
for the same executable objfile. */
|
||||
struct objfile *separate_debug_objfile_link;
|
||||
struct objfile *separate_debug_objfile_backlink;
|
||||
|
||||
/* Place to stash various statistics about this objfile. */
|
||||
OBJSTATS;
|
||||
/* If this is a separate debug object, this is a link to the next one
|
||||
for the same executable objfile. */
|
||||
|
||||
/* A linked list of symbols created when reading template types or
|
||||
function templates. These symbols are not stored in any symbol
|
||||
table, so we have to keep them here to relocate them
|
||||
properly. */
|
||||
struct symbol *template_symbols;
|
||||
};
|
||||
struct objfile *separate_debug_objfile_link;
|
||||
|
||||
/* Place to stash various statistics about this objfile. */
|
||||
|
||||
OBJSTATS;
|
||||
|
||||
/* A linked list of symbols created when reading template types or
|
||||
function templates. These symbols are not stored in any symbol
|
||||
table, so we have to keep them here to relocate them
|
||||
properly. */
|
||||
|
||||
struct symbol *template_symbols;
|
||||
};
|
||||
|
||||
/* Defines for the objfile flag word. */
|
||||
|
||||
|
@ -28,7 +28,7 @@ struct psymbol_allocation_list;
|
||||
symbols whose types we have not parsed yet. For functions, it also
|
||||
contains their memory address, so we can find them from a PC value.
|
||||
Each partial_symbol sits in a partial_symtab, all of which are chained
|
||||
on a partial symtab list and which points to the corresponding
|
||||
on a partial symtab list and which points to the corresponding
|
||||
normal symtab once the partial_symtab has been referenced. */
|
||||
|
||||
/* This structure is space critical. See space comments at the top of
|
||||
@ -36,7 +36,6 @@ struct psymbol_allocation_list;
|
||||
|
||||
struct partial_symbol
|
||||
{
|
||||
|
||||
/* The general symbol info required for all types of symbols. */
|
||||
|
||||
struct general_symbol_info ginfo;
|
||||
@ -50,7 +49,6 @@ struct partial_symbol
|
||||
no need. */
|
||||
|
||||
ENUM_BITFIELD(address_class) aclass : 6;
|
||||
|
||||
};
|
||||
|
||||
#define PSYMBOL_DOMAIN(psymbol) (psymbol)->domain
|
||||
@ -79,7 +77,6 @@ enum psymtab_search_status
|
||||
|
||||
struct partial_symtab
|
||||
{
|
||||
|
||||
/* Chain of all existing partial symtabs. */
|
||||
|
||||
struct partial_symtab *next;
|
||||
@ -126,7 +123,7 @@ struct partial_symtab
|
||||
In DWARF terms, a shared psymtab is a DW_TAG_partial_unit; but
|
||||
of course using a name based on that would be too confusing, so
|
||||
"shared" was chosen instead.
|
||||
|
||||
|
||||
Only a single user is needed because, when expanding a shared
|
||||
psymtab, we only need to expand its "canonical" non-shared user.
|
||||
The choice of which one should be canonical is left to the
|
||||
|
157
gdb/psymtab.c
157
gdb/psymtab.c
@ -1,5 +1,5 @@
|
||||
/* Partial symbol tables.
|
||||
|
||||
|
||||
Copyright (C) 2009-2015 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
@ -238,12 +238,12 @@ find_pc_sect_psymtab_closer (struct objfile *objfile,
|
||||
many partial symbol tables containing the PC, but
|
||||
we want the partial symbol table that contains the
|
||||
function containing the PC. */
|
||||
if (!(objfile->flags & OBJF_REORDERED) &&
|
||||
section == 0) /* Can't validate section this way. */
|
||||
if (!(objfile->flags & OBJF_REORDERED)
|
||||
&& section == NULL) /* Can't validate section this way. */
|
||||
return pst;
|
||||
|
||||
if (msymbol.minsym == NULL)
|
||||
return (pst);
|
||||
return pst;
|
||||
|
||||
/* The code range of partial symtabs sometimes overlap, so, in
|
||||
the loop below, we need to check all partial symtabs and
|
||||
@ -265,8 +265,8 @@ find_pc_sect_psymtab_closer (struct objfile *objfile,
|
||||
object's symbol table. */
|
||||
p = find_pc_sect_psymbol (objfile, tpst, pc, section);
|
||||
if (p != NULL
|
||||
&& SYMBOL_VALUE_ADDRESS (p)
|
||||
== BMSYMBOL_VALUE_ADDRESS (msymbol))
|
||||
&& (SYMBOL_VALUE_ADDRESS (p)
|
||||
== BMSYMBOL_VALUE_ADDRESS (msymbol)))
|
||||
return tpst;
|
||||
|
||||
/* Also accept the textlow value of a psymtab as a
|
||||
@ -298,10 +298,11 @@ find_pc_sect_psymtab_closer (struct objfile *objfile,
|
||||
return best_pst;
|
||||
}
|
||||
|
||||
/* Find which partial symtab contains PC and SECTION. Return 0 if
|
||||
/* Find which partial symtab contains PC and SECTION. Return NULL if
|
||||
none. We return the psymtab that contains a symbol whose address
|
||||
exactly matches PC, or, if we cannot find an exact match, the
|
||||
psymtab that contains a symbol whose address is closest to PC. */
|
||||
|
||||
static struct partial_symtab *
|
||||
find_pc_sect_psymtab (struct objfile *objfile, CORE_ADDR pc,
|
||||
struct obj_section *section,
|
||||
@ -320,7 +321,7 @@ find_pc_sect_psymtab (struct objfile *objfile, CORE_ADDR pc,
|
||||
/* FIXME: addrmaps currently do not handle overlayed sections,
|
||||
so fall back to the non-addrmap case if we're debugging
|
||||
overlays and the addrmap returned the wrong section. */
|
||||
if (overlay_debugging && msymbol.minsym && section)
|
||||
if (overlay_debugging && msymbol.minsym != NULL && section != NULL)
|
||||
{
|
||||
struct partial_symbol *p;
|
||||
|
||||
@ -329,9 +330,9 @@ find_pc_sect_psymtab (struct objfile *objfile, CORE_ADDR pc,
|
||||
true; the debug info might be much richer than the
|
||||
object's symbol table. */
|
||||
p = find_pc_sect_psymbol (objfile, pst, pc, section);
|
||||
if (!p
|
||||
|| SYMBOL_VALUE_ADDRESS (p)
|
||||
!= BMSYMBOL_VALUE_ADDRESS (msymbol))
|
||||
if (p == NULL
|
||||
|| (SYMBOL_VALUE_ADDRESS (p)
|
||||
!= BMSYMBOL_VALUE_ADDRESS (msymbol)))
|
||||
goto next;
|
||||
}
|
||||
|
||||
@ -371,8 +372,8 @@ find_pc_sect_psymtab (struct objfile *objfile, CORE_ADDR pc,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Psymtab version of find_pc_sect_compunit_symtab. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of find_pc_sect_compunit_symtab. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static struct compunit_symtab *
|
||||
psym_find_pc_sect_compunit_symtab (struct objfile *objfile,
|
||||
@ -383,7 +384,7 @@ psym_find_pc_sect_compunit_symtab (struct objfile *objfile,
|
||||
{
|
||||
struct partial_symtab *ps = find_pc_sect_psymtab (objfile, pc, section,
|
||||
msymbol);
|
||||
if (ps)
|
||||
if (ps != NULL)
|
||||
{
|
||||
if (warn_if_readin && ps->readin)
|
||||
/* Might want to error() here (in case symtab is corrupt and
|
||||
@ -399,7 +400,7 @@ psym_find_pc_sect_compunit_symtab (struct objfile *objfile,
|
||||
}
|
||||
|
||||
/* Find which partial symbol within a psymtab matches PC and SECTION.
|
||||
Return 0 if none. */
|
||||
Return NULL if none. */
|
||||
|
||||
static struct partial_symbol *
|
||||
find_pc_sect_psymbol (struct objfile *objfile,
|
||||
@ -418,8 +419,8 @@ find_pc_sect_psymbol (struct objfile *objfile,
|
||||
find_pc_partial_function doesn't use a minimal symbol and thus
|
||||
cache a bad endaddr. */
|
||||
for (pp = objfile->global_psymbols.list + psymtab->globals_offset;
|
||||
(pp - (objfile->global_psymbols.list + psymtab->globals_offset)
|
||||
< psymtab->n_global_syms);
|
||||
(pp - (objfile->global_psymbols.list + psymtab->globals_offset)
|
||||
< psymtab->n_global_syms);
|
||||
pp++)
|
||||
{
|
||||
p = *pp;
|
||||
@ -430,7 +431,7 @@ find_pc_sect_psymbol (struct objfile *objfile,
|
||||
|| (psymtab->textlow == 0
|
||||
&& best_pc == 0 && SYMBOL_VALUE_ADDRESS (p) == 0)))
|
||||
{
|
||||
if (section) /* Match on a specific section. */
|
||||
if (section != NULL) /* Match on a specific section. */
|
||||
{
|
||||
fixup_psymbol_section (p, objfile);
|
||||
if (!matching_obj_sections (SYMBOL_OBJ_SECTION (objfile, p),
|
||||
@ -443,8 +444,8 @@ find_pc_sect_psymbol (struct objfile *objfile,
|
||||
}
|
||||
|
||||
for (pp = objfile->static_psymbols.list + psymtab->statics_offset;
|
||||
(pp - (objfile->static_psymbols.list + psymtab->statics_offset)
|
||||
< psymtab->n_static_syms);
|
||||
(pp - (objfile->static_psymbols.list + psymtab->statics_offset)
|
||||
< psymtab->n_static_syms);
|
||||
pp++)
|
||||
{
|
||||
p = *pp;
|
||||
@ -455,7 +456,7 @@ find_pc_sect_psymbol (struct objfile *objfile,
|
||||
|| (psymtab->textlow == 0
|
||||
&& best_pc == 0 && SYMBOL_VALUE_ADDRESS (p) == 0)))
|
||||
{
|
||||
if (section) /* Match on a specific section. */
|
||||
if (section != NULL) /* Match on a specific section. */
|
||||
{
|
||||
fixup_psymbol_section (p, objfile);
|
||||
if (!matching_obj_sections (SYMBOL_OBJ_SECTION (objfile, p),
|
||||
@ -475,7 +476,7 @@ fixup_psymbol_section (struct partial_symbol *psym, struct objfile *objfile)
|
||||
{
|
||||
CORE_ADDR addr;
|
||||
|
||||
if (!psym)
|
||||
if (psym == NULL)
|
||||
return;
|
||||
|
||||
if (SYMBOL_SECTION (psym) >= 0)
|
||||
@ -499,8 +500,8 @@ fixup_psymbol_section (struct partial_symbol *psym, struct objfile *objfile)
|
||||
fixup_section (&psym->ginfo, addr, objfile);
|
||||
}
|
||||
|
||||
/* Psymtab version of lookup_symbol. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of lookup_symbol. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static struct compunit_symtab *
|
||||
psym_lookup_symbol (struct objfile *objfile,
|
||||
@ -675,9 +676,7 @@ lookup_partial_symbol (struct objfile *objfile,
|
||||
struct cleanup *cleanup;
|
||||
|
||||
if (length == 0)
|
||||
{
|
||||
return (NULL);
|
||||
}
|
||||
return NULL;
|
||||
|
||||
search_name = psymtab_search_name (name);
|
||||
cleanup = make_cleanup (xfree, search_name);
|
||||
@ -737,7 +736,7 @@ lookup_partial_symbol (struct objfile *objfile,
|
||||
SYMBOL_DOMAIN (*top), domain))
|
||||
{
|
||||
do_cleanups (cleanup);
|
||||
return (*top);
|
||||
return *top;
|
||||
}
|
||||
top++;
|
||||
}
|
||||
@ -755,13 +754,13 @@ lookup_partial_symbol (struct objfile *objfile,
|
||||
&& SYMBOL_MATCHES_SEARCH_NAME (*psym, search_name))
|
||||
{
|
||||
do_cleanups (cleanup);
|
||||
return (*psym);
|
||||
return *psym;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
do_cleanups (cleanup);
|
||||
return (NULL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Get the symbol table that corresponds to a partial_symtab.
|
||||
@ -794,8 +793,8 @@ psymtab_to_symtab (struct objfile *objfile, struct partial_symtab *pst)
|
||||
return pst->compunit_symtab;
|
||||
}
|
||||
|
||||
/* Psymtab version of relocate. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of relocate. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static void
|
||||
psym_relocate (struct objfile *objfile,
|
||||
@ -831,14 +830,14 @@ psym_relocate (struct objfile *objfile,
|
||||
}
|
||||
}
|
||||
|
||||
/* Psymtab version of find_last_source_symtab. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of find_last_source_symtab. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static struct symtab *
|
||||
psym_find_last_source_symtab (struct objfile *ofp)
|
||||
{
|
||||
struct partial_symtab *ps;
|
||||
struct partial_symtab *cs_pst = 0;
|
||||
struct partial_symtab *cs_pst = NULL;
|
||||
|
||||
ALL_OBJFILE_PSYMTABS_REQUIRED (ofp, ps)
|
||||
{
|
||||
@ -870,8 +869,8 @@ psym_find_last_source_symtab (struct objfile *ofp)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Psymtab version of forget_cached_source_info. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of forget_cached_source_info. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static void
|
||||
psym_forget_cached_source_info (struct objfile *objfile)
|
||||
@ -1053,8 +1052,8 @@ dump_psymtab (struct objfile *objfile, struct partial_symtab *psymtab,
|
||||
fprintf_filtered (outfile, "\n");
|
||||
}
|
||||
|
||||
/* Psymtab version of print_stats. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of print_stats. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static void
|
||||
psym_print_stats (struct objfile *objfile)
|
||||
@ -1071,8 +1070,8 @@ psym_print_stats (struct objfile *objfile)
|
||||
printf_filtered (_(" Number of psym tables (not yet expanded): %d\n"), i);
|
||||
}
|
||||
|
||||
/* Psymtab version of dump. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of dump. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static void
|
||||
psym_dump (struct objfile *objfile)
|
||||
@ -1096,8 +1095,8 @@ psym_dump (struct objfile *objfile)
|
||||
}
|
||||
}
|
||||
|
||||
/* Psymtab version of expand_symtabs_for_function. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of expand_symtabs_for_function. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static void
|
||||
psym_expand_symtabs_for_function (struct objfile *objfile,
|
||||
@ -1118,8 +1117,8 @@ psym_expand_symtabs_for_function (struct objfile *objfile,
|
||||
}
|
||||
}
|
||||
|
||||
/* Psymtab version of expand_all_symtabs. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of expand_all_symtabs. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static void
|
||||
psym_expand_all_symtabs (struct objfile *objfile)
|
||||
@ -1132,8 +1131,8 @@ psym_expand_all_symtabs (struct objfile *objfile)
|
||||
}
|
||||
}
|
||||
|
||||
/* Psymtab version of expand_symtabs_with_fullname. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of expand_symtabs_with_fullname. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static void
|
||||
psym_expand_symtabs_with_fullname (struct objfile *objfile,
|
||||
@ -1156,8 +1155,8 @@ psym_expand_symtabs_with_fullname (struct objfile *objfile,
|
||||
}
|
||||
}
|
||||
|
||||
/* Psymtab version of map_symbol_filenames. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of map_symbol_filenames. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static void
|
||||
psym_map_symbol_filenames (struct objfile *objfile,
|
||||
@ -1232,15 +1231,15 @@ psymtab_to_fullname (struct partial_symtab *ps)
|
||||
ps->fullname = xstrdup (fullname);
|
||||
do_cleanups (back_to);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ps->fullname;
|
||||
}
|
||||
|
||||
/* For all symbols, s, in BLOCK that are in DOMAIN and match NAME
|
||||
according to the function MATCH, call CALLBACK(BLOCK, s, DATA).
|
||||
BLOCK is assumed to come from OBJFILE. Returns 1 iff CALLBACK
|
||||
ever returns non-zero, and otherwise returns 0. */
|
||||
/* For all symbols, s, in BLOCK that are in DOMAIN and match NAME
|
||||
according to the function MATCH, call CALLBACK(BLOCK, s, DATA).
|
||||
BLOCK is assumed to come from OBJFILE. Returns 1 iff CALLBACK
|
||||
ever returns non-zero, and otherwise returns 0. */
|
||||
|
||||
static int
|
||||
map_block (const char *name, domain_enum domain, struct objfile *objfile,
|
||||
@ -1254,7 +1253,7 @@ map_block (const char *name, domain_enum domain, struct objfile *objfile,
|
||||
for (sym = block_iter_match_first (block, name, match, &iter);
|
||||
sym != NULL; sym = block_iter_match_next (name, match, &iter))
|
||||
{
|
||||
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
|
||||
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
|
||||
SYMBOL_DOMAIN (sym), domain))
|
||||
{
|
||||
if (callback (block, sym, data))
|
||||
@ -1265,8 +1264,8 @@ map_block (const char *name, domain_enum domain, struct objfile *objfile,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Psymtab version of map_matching_symbols. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of map_matching_symbols. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static void
|
||||
psym_map_matching_symbols (struct objfile *objfile,
|
||||
@ -1301,7 +1300,7 @@ psym_map_matching_symbols (struct objfile *objfile,
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* A helper for psym_expand_symtabs_matching that handles
|
||||
searching included psymtabs. This returns 1 if a symbol is found,
|
||||
@ -1391,8 +1390,8 @@ recursively_search_psymtabs (struct partial_symtab *ps,
|
||||
return result == PST_SEARCHED_AND_FOUND;
|
||||
}
|
||||
|
||||
/* Psymtab version of expand_symtabs_matching. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of expand_symtabs_matching. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static void
|
||||
psym_expand_symtabs_matching
|
||||
@ -1454,8 +1453,8 @@ psym_expand_symtabs_matching
|
||||
}
|
||||
}
|
||||
|
||||
/* Psymtab version of has_symbols. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
/* Psymtab version of has_symbols. See its definition in
|
||||
the definition of quick_symbol_functions in symfile.h. */
|
||||
|
||||
static int
|
||||
psym_has_symbols (struct objfile *objfile)
|
||||
@ -1525,7 +1524,7 @@ start_psymtab_common (struct objfile *objfile,
|
||||
psymtab->texthigh = psymtab->textlow; /* default */
|
||||
psymtab->globals_offset = global_syms - objfile->global_psymbols.list;
|
||||
psymtab->statics_offset = static_syms - objfile->static_psymbols.list;
|
||||
return (psymtab);
|
||||
return psymtab;
|
||||
}
|
||||
|
||||
/* Calculate a hash code for the given partial symbol. The hash is
|
||||
@ -1575,11 +1574,13 @@ struct psymbol_bcache *
|
||||
psymbol_bcache_init (void)
|
||||
{
|
||||
struct psymbol_bcache *bcache = XCNEW (struct psymbol_bcache);
|
||||
|
||||
bcache->bcache = bcache_xmalloc (psymbol_hash, psymbol_compare);
|
||||
return bcache;
|
||||
}
|
||||
|
||||
/* Free a partial symbol bcache. */
|
||||
|
||||
void
|
||||
psymbol_bcache_free (struct psymbol_bcache *bcache)
|
||||
{
|
||||
@ -1614,7 +1615,7 @@ psymbol_bcache_full (struct partial_symbol *sym,
|
||||
added);
|
||||
}
|
||||
|
||||
/* Helper function, initialises partial symbol structure and stashes
|
||||
/* Helper function, initialises partial symbol structure and stashes
|
||||
it into objfile's bcache. Note that our caching mechanism will
|
||||
use all fields of struct partial_symbol to determine hash value of the
|
||||
structure. In other words, having two symbols with the same name but
|
||||
@ -1653,9 +1654,7 @@ add_psymbol_to_bcache (const char *name, int namelength, int copy_name,
|
||||
SYMBOL_SET_NAMES (&psymbol, name, namelength, copy_name, objfile);
|
||||
|
||||
/* Stash the partial symbol away in the cache. */
|
||||
return psymbol_bcache_full (&psymbol,
|
||||
objfile->psymbol_cache,
|
||||
added);
|
||||
return psymbol_bcache_full (&psymbol, objfile->psymbol_cache, added);
|
||||
}
|
||||
|
||||
/* Increase the space allocated for LISTP, which is probably
|
||||
@ -1687,8 +1686,7 @@ extend_psymbol_list (struct psymbol_allocation_list *listp,
|
||||
listp->size = new_size;
|
||||
}
|
||||
|
||||
/* Helper function, adds partial symbol to the given partial symbol
|
||||
list. */
|
||||
/* Helper function, adds partial symbol to the given partial symbol list. */
|
||||
|
||||
static void
|
||||
append_psymbol_to_list (struct psymbol_allocation_list *list,
|
||||
@ -1709,7 +1707,7 @@ void
|
||||
add_psymbol_to_list (const char *name, int namelength, int copy_name,
|
||||
domain_enum domain,
|
||||
enum address_class theclass,
|
||||
struct psymbol_allocation_list *list,
|
||||
struct psymbol_allocation_list *list,
|
||||
long val, /* Value as a long */
|
||||
CORE_ADDR coreaddr, /* Value as a CORE_ADDR */
|
||||
enum language language, struct objfile *objfile)
|
||||
@ -1739,13 +1737,9 @@ init_psymbol_list (struct objfile *objfile, int total_symbols)
|
||||
/* Free any previously allocated psymbol lists. */
|
||||
|
||||
if (objfile->global_psymbols.list)
|
||||
{
|
||||
xfree (objfile->global_psymbols.list);
|
||||
}
|
||||
xfree (objfile->global_psymbols.list);
|
||||
if (objfile->static_psymbols.list)
|
||||
{
|
||||
xfree (objfile->static_psymbols.list);
|
||||
}
|
||||
xfree (objfile->static_psymbols.list);
|
||||
|
||||
/* Current best guess is that approximately a twentieth
|
||||
of the total symbols (in a debugging file) are global or static
|
||||
@ -1817,7 +1811,7 @@ allocate_psymtab (const char *filename, struct objfile *objfile)
|
||||
host_address_to_string (psymtab), filename);
|
||||
}
|
||||
|
||||
return (psymtab);
|
||||
return psymtab;
|
||||
}
|
||||
|
||||
void
|
||||
@ -1920,7 +1914,7 @@ print-psymbols takes an output file name and optional symbol file name"));
|
||||
make_cleanup (xfree, filename);
|
||||
|
||||
outfile = gdb_fopen (filename, FOPEN_WT);
|
||||
if (outfile == 0)
|
||||
if (outfile == NULL)
|
||||
perror_with_name (filename);
|
||||
make_cleanup_ui_file_delete (outfile);
|
||||
|
||||
@ -1934,6 +1928,7 @@ print-psymbols takes an output file name and optional symbol file name"));
|
||||
}
|
||||
|
||||
/* List all the partial symbol tables whose names match REGEXP (optional). */
|
||||
|
||||
static void
|
||||
maintenance_info_psymtabs (char *regexp, int from_tty)
|
||||
{
|
||||
@ -1964,14 +1959,14 @@ maintenance_info_psymtabs (char *regexp, int from_tty)
|
||||
{
|
||||
printf_filtered ("{ objfile %s ", objfile_name (objfile));
|
||||
wrap_here (" ");
|
||||
printf_filtered ("((struct objfile *) %s)\n",
|
||||
printf_filtered ("((struct objfile *) %s)\n",
|
||||
host_address_to_string (objfile));
|
||||
printed_objfile_start = 1;
|
||||
}
|
||||
|
||||
printf_filtered (" { psymtab %s ", psymtab->filename);
|
||||
wrap_here (" ");
|
||||
printf_filtered ("((struct partial_symtab *) %s)\n",
|
||||
printf_filtered ("((struct partial_symtab *) %s)\n",
|
||||
host_address_to_string (psymtab));
|
||||
|
||||
printf_filtered (" readin %s\n",
|
||||
@ -2022,7 +2017,7 @@ maintenance_info_psymtabs (char *regexp, int from_tty)
|
||||
/* Note the string concatenation there --- no comma. */
|
||||
printf_filtered (" psymtab %s "
|
||||
"((struct partial_symtab *) %s)\n",
|
||||
dep->filename,
|
||||
dep->filename,
|
||||
host_address_to_string (dep));
|
||||
}
|
||||
printf_filtered (" }\n");
|
||||
|
Loading…
x
Reference in New Issue
Block a user