aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/dwarf2/read.c4
-rw-r--r--gdb/psympriv.h16
-rw-r--r--gdb/psymtab.c108
-rw-r--r--gdb/psymtab.h11
4 files changed, 8 insertions, 131 deletions
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index d3e6db4..64cb8d4 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -2257,7 +2257,7 @@ create_signatured_type_table_from_debug_names
}
/* Read the address map data from the mapped index, and use it to
- populate the psymtabs_addrmap. */
+ populate the index_addrmap. */
static void
create_addrmap_from_index (dwarf2_per_objfile *per_objfile,
@@ -2485,7 +2485,7 @@ read_addrmap_from_aranges (dwarf2_per_objfile *per_objfile,
}
/* Read the address map data from DWARF-5 .debug_aranges, and use it to
- populate the psymtabs_addrmap. */
+ populate the index_addrmap. */
static void
create_addrmap_from_aranges (dwarf2_per_objfile *per_objfile,
diff --git a/gdb/psympriv.h b/gdb/psympriv.h
index a7ba82a..61fb5c0 100644
--- a/gdb/psympriv.h
+++ b/gdb/psympriv.h
@@ -277,11 +277,11 @@ struct partial_symtab
const char *dirname = nullptr;
/* Range of text addresses covered by this file; texthigh is the
- beginning of the next section. Do not use if PSYMTABS_ADDRMAP_SUPPORTED
- is set. Do not refer directly to these fields. Instead, use the
- accessors. The validity of these fields is determined by the
- text_low_valid and text_high_valid fields; these are located later
- in this structure for better packing. */
+ beginning of the next section. Do not refer directly to these
+ fields. Instead, use the accessors. The validity of these
+ fields is determined by the text_low_valid and text_high_valid
+ fields; these are located later in this structure for better
+ packing. */
CORE_ADDR m_text_low = 0;
CORE_ADDR m_text_high = 0;
@@ -343,12 +343,6 @@ struct partial_symtab
std::vector<partial_symbol *> static_psymbols;
- /* True iff objfile->psymtabs_addrmap is properly populated for this
- partial_symtab. For discontiguous overlapping psymtabs is the only usable
- info in PSYMTABS_ADDRMAP. */
-
- bool psymtabs_addrmap_supported = false;
-
/* True if the name of this partial symtab is not a source file name. */
bool anonymous = false;
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index bf8a743..d16c3bb 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -98,8 +98,6 @@ find_pc_sect_psymtab_closer (struct objfile *objfile,
struct partial_symtab *best_pst = pst;
CORE_ADDR best_addr = pst->text_low (objfile);
- gdb_assert (!pst->psymtabs_addrmap_supported);
-
/* An objfile that has its functions reordered might have
many partial symbol tables containing the PC, but
we want the partial symbol table that contains the
@@ -171,70 +169,8 @@ psymbol_functions::find_pc_sect_psymtab (struct objfile *objfile,
struct obj_section *section,
struct bound_minimal_symbol msymbol)
{
- /* Try just the PSYMTABS_ADDRMAP mapping first as it has better
- granularity than the later used TEXTLOW/TEXTHIGH one. However, we need
- to take care as the PSYMTABS_ADDRMAP can hold things other than partial
- symtabs in some cases.
-
- This function should only be called for objfiles that are using partial
- symtabs, not for objfiles that are using indexes (.gdb_index or
- .debug_names), however 'maintenance print psymbols' calls this function
- directly for all objfiles. If we assume that PSYMTABS_ADDRMAP contains
- partial symtabs then we will end up returning a pointer to an object
- that is not a partial_symtab, which doesn't end well. */
-
- if (m_partial_symtabs->psymtabs != NULL
- && m_partial_symtabs->psymtabs_addrmap != NULL)
- {
- CORE_ADDR baseaddr = objfile->text_section_offset ();
-
- struct partial_symtab *pst
- = ((struct partial_symtab *)
- m_partial_symtabs->psymtabs_addrmap->find (pc - baseaddr));
- if (pst != NULL)
- {
- /* 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 != NULL && section != NULL)
- {
- struct partial_symbol *p;
-
- /* NOTE: This assumes that every psymbol has a
- corresponding msymbol, which is not necessarily
- 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 == NULL
- || (p->address (objfile)
- != msymbol.value_address ()))
- goto next;
- }
-
- /* We do not try to call FIND_PC_SECT_PSYMTAB_CLOSER as
- PSYMTABS_ADDRMAP we used has already the best 1-byte
- granularity and FIND_PC_SECT_PSYMTAB_CLOSER may mislead us into
- a worse chosen section due to the TEXTLOW/TEXTHIGH ranges
- overlap. */
-
- return pst;
- }
- }
-
- next:
-
- /* Existing PSYMTABS_ADDRMAP mapping is present even for PARTIAL_SYMTABs
- which still have no corresponding full SYMTABs read. But it is not
- present for non-DWARF2 debug infos not supporting PSYMTABS_ADDRMAP in GDB
- so far. */
-
- /* Check even OBJFILE with non-zero PSYMTABS_ADDRMAP as only several of
- its CUs may be missing in PSYMTABS_ADDRMAP as they may be varying
- debug info type in single OBJFILE. */
-
for (partial_symtab *pst : partial_symbols (objfile))
- if (!pst->psymtabs_addrmap_supported
- && pc >= pst->text_low (objfile) && pc < pst->text_high (objfile))
+ if (pc >= pst->text_low (objfile) && pc < pst->text_high (objfile))
{
struct partial_symtab *best_pst;
@@ -780,8 +716,6 @@ dump_psymtab (struct objfile *objfile, struct partial_symtab *psymtab,
gdb_printf (outfile, "-");
gdb_puts (paddress (gdbarch, psymtab->text_high (objfile)), outfile);
gdb_printf (outfile, "\n");
- gdb_printf (outfile, " Address map supported - %s.\n",
- psymtab->psymtabs_addrmap_supported ? "yes" : "no");
gdb_printf (outfile, " Depends on %d other partial symtabs.\n",
psymtab->number_of_dependencies);
for (i = 0; i < psymtab->number_of_dependencies; i++)
@@ -1450,27 +1384,6 @@ psymtab_storage::discard_psymtab (struct partial_symtab *pst)
-/* Helper function for maintenance_print_psymbols to print the addrmap
- of PSYMTAB. If PSYMTAB is NULL print the entire addrmap. */
-
-static void
-dump_psymtab_addrmap (struct objfile *objfile,
- psymtab_storage *partial_symtabs,
- struct partial_symtab *psymtab,
- struct ui_file *outfile)
-{
- if ((psymtab == NULL
- || psymtab->psymtabs_addrmap_supported)
- && partial_symtabs->psymtabs_addrmap != NULL)
- {
- if (psymtab == nullptr)
- gdb_printf (outfile, _("Entire address map:\n"));
- else
- gdb_printf (outfile, _("Address map:\n"));
- addrmap_dump (partial_symtabs->psymtabs_addrmap, outfile, psymtab);
- }
-}
-
static void
maintenance_print_psymbols (const char *args, int from_tty)
{
@@ -1564,9 +1477,6 @@ maintenance_print_psymbols (const char *args, int from_tty)
if (psf == nullptr)
continue;
- psymtab_storage *partial_symtabs
- = psf->get_partial_symtabs ().get ();
-
if (address_arg != NULL)
{
struct bound_minimal_symbol msymbol;
@@ -1584,7 +1494,6 @@ maintenance_print_psymbols (const char *args, int from_tty)
printed_objfile_header = 1;
}
dump_psymtab (objfile, ps, outfile);
- dump_psymtab_addrmap (objfile, partial_symtabs, ps, outfile);
found = 1;
}
}
@@ -1611,21 +1520,9 @@ maintenance_print_psymbols (const char *args, int from_tty)
printed_objfile_header = 1;
}
dump_psymtab (objfile, ps, outfile);
- dump_psymtab_addrmap (objfile, partial_symtabs, ps,
- outfile);
}
}
}
-
- /* If we're printing all the objfile's symbols dump the full addrmap. */
-
- if (address_arg == NULL
- && source_arg == NULL
- && partial_symtabs->psymtabs_addrmap != NULL)
- {
- outfile->puts ("\n");
- dump_psymtab_addrmap (objfile, partial_symtabs, NULL, outfile);
- }
}
}
@@ -1694,9 +1591,6 @@ maintenance_info_psymtabs (const char *regexp, int from_tty)
gdb_puts (paddress (gdbarch,
psymtab->text_high (objfile)));
gdb_printf ("\n");
- gdb_printf (" psymtabs_addrmap_supported %s\n",
- (psymtab->psymtabs_addrmap_supported
- ? "yes" : "no"));
gdb_printf (" globals ");
if (!psymtab->global_psymbols.empty ())
gdb_printf
diff --git a/gdb/psymtab.h b/gdb/psymtab.h
index 70eb3e2..68ef99e 100644
--- a/gdb/psymtab.h
+++ b/gdb/psymtab.h
@@ -121,17 +121,6 @@ public:
struct partial_symtab *psymtabs = nullptr;
- /* 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.
-
- The DWARF parser reuses this addrmap to store things other than
- psymtabs in the cases where debug information is being read from, for
- example, the .debug-names section. */
-
- struct addrmap *psymtabs_addrmap = nullptr;
-
/* A byte cache where we can stash arbitrary "chunks" of bytes that
will not change. */