gdb: remove COMPUNIT_BLOCK_LINE_SECTION macro, add getter/setter

Add a getter and a setter for a compunit_symtab's block line section.  Remove
the corresponding macro and adjust all callers.

Change-Id: I3eb1a323388ad55eae8bfa45f5bc4a08dc3df455
This commit is contained in:
Simon Marchi
2021-11-19 22:31:55 -05:00
committed by Simon Marchi
parent af39c5c874
commit c1e35bc9c6
6 changed files with 17 additions and 8 deletions

View File

@ -1022,7 +1022,7 @@ buildsym_compunit::end_symtab_with_blockvector (struct block *static_block,
set_block_compunit_symtab (b, cu); set_block_compunit_symtab (b, cu);
} }
COMPUNIT_BLOCK_LINE_SECTION (cu) = section; cu->set_block_line_section (section);
COMPUNIT_MACRO_TABLE (cu) = release_macros (); COMPUNIT_MACRO_TABLE (cu) = release_macros ();

View File

@ -717,7 +717,7 @@ call_site_to_target_addr (struct gdbarch *call_site_gdbarch,
{ {
dwarf2_per_objfile *per_objfile = call_site->per_objfile; dwarf2_per_objfile *per_objfile = call_site->per_objfile;
compunit_symtab *cust = per_objfile->get_symtab (call_site->per_cu); compunit_symtab *cust = per_objfile->get_symtab (call_site->per_cu);
int sect_idx = COMPUNIT_BLOCK_LINE_SECTION (cust); int sect_idx = cust->block_line_section ();
CORE_ADDR delta = per_objfile->objfile->section_offsets[sect_idx]; CORE_ADDR delta = per_objfile->objfile->section_offsets[sect_idx];
return call_site->target.loc_physaddr () + delta; return call_site->target.loc_physaddr () + delta;

View File

@ -6285,7 +6285,7 @@ call_site::pc () const
{ {
compunit_symtab *cust = this->per_objfile->get_symtab (this->per_cu); compunit_symtab *cust = this->per_objfile->get_symtab (this->per_cu);
CORE_ADDR delta CORE_ADDR delta
= this->per_objfile->objfile->section_offsets[COMPUNIT_BLOCK_LINE_SECTION (cust)]; = this->per_objfile->objfile->section_offsets[cust->block_line_section ()];
return m_unrelocated_pc + delta; return m_unrelocated_pc + delta;
} }

View File

@ -660,7 +660,7 @@ objfile_relocate1 (struct objfile *objfile,
if (l) if (l)
{ {
for (int i = 0; i < l->nitems; ++i) for (int i = 0; i < l->nitems; ++i)
l->item[i].pc += delta[COMPUNIT_BLOCK_LINE_SECTION (cust)]; l->item[i].pc += delta[cust->block_line_section ()];
} }
} }
} }
@ -668,7 +668,7 @@ objfile_relocate1 (struct objfile *objfile,
for (compunit_symtab *cust : objfile->compunits ()) for (compunit_symtab *cust : objfile->compunits ())
{ {
const struct blockvector *bv = cust->blockvector (); const struct blockvector *bv = cust->blockvector ();
int block_line_section = COMPUNIT_BLOCK_LINE_SECTION (cust); int block_line_section = cust->block_line_section ();
if (BLOCKVECTOR_MAP (bv)) if (BLOCKVECTOR_MAP (bv))
addrmap_relocate (BLOCKVECTOR_MAP (bv), delta[block_line_section]); addrmap_relocate (BLOCKVECTOR_MAP (bv), delta[block_line_section]);

View File

@ -338,7 +338,7 @@ compunit_symtab::find_call_site (CORE_ADDR pc) const
return nullptr; return nullptr;
CORE_ADDR delta CORE_ADDR delta
= this->objfile ()->section_offsets[COMPUNIT_BLOCK_LINE_SECTION (this)]; = this->objfile ()->section_offsets[this->block_line_section ()];
CORE_ADDR unrelocated_pc = pc - delta; CORE_ADDR unrelocated_pc = pc - delta;
struct call_site call_site_local (unrelocated_pc, nullptr, nullptr); struct call_site call_site_local (unrelocated_pc, nullptr, nullptr);

View File

@ -1521,6 +1521,16 @@ struct compunit_symtab
m_blockvector = blockvector; m_blockvector = blockvector;
} }
int block_line_section () const
{
return m_block_line_section;
}
void set_block_line_section (int block_line_section)
{
m_block_line_section = block_line_section;
}
/* Make PRIMARY_FILETAB the primary filetab of this compunit symtab. /* Make PRIMARY_FILETAB the primary filetab of this compunit symtab.
PRIMARY_FILETAB must already be a filetab of this compunit symtab. */ PRIMARY_FILETAB must already be a filetab of this compunit symtab. */
@ -1578,7 +1588,7 @@ struct compunit_symtab
/* Section in objfile->section_offsets for the blockvector and /* Section in objfile->section_offsets for the blockvector and
the linetable. Probably always SECT_OFF_TEXT. */ the linetable. Probably always SECT_OFF_TEXT. */
int block_line_section; int m_block_line_section;
/* Symtab has been compiled with both optimizations and debug info so that /* Symtab has been compiled with both optimizations and debug info so that
GDB may stop skipping prologues as variables locations are valid already GDB may stop skipping prologues as variables locations are valid already
@ -1616,7 +1626,6 @@ struct compunit_symtab
using compunit_symtab_range = next_range<compunit_symtab>; using compunit_symtab_range = next_range<compunit_symtab>;
#define COMPUNIT_BLOCK_LINE_SECTION(cust) ((cust)->block_line_section)
#define COMPUNIT_LOCATIONS_VALID(cust) ((cust)->locations_valid) #define COMPUNIT_LOCATIONS_VALID(cust) ((cust)->locations_valid)
#define COMPUNIT_EPILOGUE_UNWIND_VALID(cust) ((cust)->epilogue_unwind_valid) #define COMPUNIT_EPILOGUE_UNWIND_VALID(cust) ((cust)->epilogue_unwind_valid)
#define COMPUNIT_MACRO_TABLE(cust) ((cust)->macro_table) #define COMPUNIT_MACRO_TABLE(cust) ((cust)->macro_table)