gdb: remove BLOCKVECTOR_MAP macro

Replace with equivalent methods.

Change-Id: I4e56c76dfc363c1447686fb29c4212ea18b4dba0
This commit is contained in:
Simon Marchi
2022-04-20 17:17:11 -04:00
parent bad9471aab
commit 414705d1c2
7 changed files with 26 additions and 17 deletions

View File

@ -138,8 +138,8 @@ find_block_in_blockvector (const struct blockvector *bl, CORE_ADDR pc)
/* If we have an addrmap mapping code addresses to blocks, then use /* If we have an addrmap mapping code addresses to blocks, then use
that. */ that. */
if (BLOCKVECTOR_MAP (bl)) if (bl->map () != nullptr)
return (const struct block *) addrmap_find (BLOCKVECTOR_MAP (bl), pc); return (const struct block *) addrmap_find (bl->map (), pc);
/* Otherwise, use binary search to find the last block that starts /* Otherwise, use binary search to find the last block that starts
before PC. before PC.

View File

@ -296,12 +296,24 @@ struct blockvector
const struct block *static_block () const const struct block *static_block () const
{ return this->block (STATIC_BLOCK); } { return this->block (STATIC_BLOCK); }
/* Return the address -> block map of this blockvector. */
addrmap *map ()
{ return m_map; }
/* Const version of the above. */
const addrmap *map () const
{ return m_map; }
/* Set this blockvector's address -> block map. */
void set_map (addrmap *map)
{ m_map = map; }
private:
/* An address map mapping addresses to blocks in this blockvector. /* An address map mapping addresses to blocks in this blockvector.
This pointer is zero if the blocks' start and end addresses are This pointer is zero if the blocks' start and end addresses are
enough. */ enough. */
struct addrmap *map; struct addrmap *m_map;
private:
/* Number of blocks in the list. */ /* Number of blocks in the list. */
int m_num_blocks; int m_num_blocks;
@ -309,8 +321,6 @@ private:
struct block *m_blocks[1]; struct block *m_blocks[1];
}; };
#define BLOCKVECTOR_MAP(blocklist) ((blocklist)->map)
/* Return the objfile of BLOCK, which must be non-NULL. */ /* Return the objfile of BLOCK, which must be non-NULL. */
extern struct objfile *block_objfile (const struct block *block); extern struct objfile *block_objfile (const struct block *block);

View File

@ -457,10 +457,10 @@ buildsym_compunit::make_blockvector ()
/* If we needed an address map for this symtab, record it in the /* If we needed an address map for this symtab, record it in the
blockvector. */ blockvector. */
if (m_pending_addrmap != nullptr && m_pending_addrmap_interesting) if (m_pending_addrmap != nullptr && m_pending_addrmap_interesting)
BLOCKVECTOR_MAP (blockvector) blockvector->set_map
= addrmap_create_fixed (m_pending_addrmap, &m_objfile->objfile_obstack); (addrmap_create_fixed (m_pending_addrmap, &m_objfile->objfile_obstack));
else else
BLOCKVECTOR_MAP (blockvector) = 0; blockvector->set_map (nullptr);
/* Some compilers output blocks in the wrong order, but we depend on /* Some compilers output blocks in the wrong order, but we depend on
their being in the right order so we can binary search. Check the their being in the right order so we can binary search. Check the

View File

@ -286,11 +286,10 @@ block_starting_point_at (CORE_ADDR pc, const struct block *block)
const struct block *new_block; const struct block *new_block;
bv = blockvector_for_pc (pc, NULL); bv = blockvector_for_pc (pc, NULL);
if (BLOCKVECTOR_MAP (bv) == NULL) if (bv->map () == nullptr)
return 0; return 0;
new_block = (const struct block *) addrmap_find (BLOCKVECTOR_MAP (bv), new_block = (const struct block *) addrmap_find (bv->map (), pc - 1);
pc - 1);
if (new_block == NULL) if (new_block == NULL)
return 1; return 1;

View File

@ -562,7 +562,7 @@ finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
/* At the end of this function, (begin, end) will contain the PC range this /* At the end of this function, (begin, end) will contain the PC range this
entire blockvector spans. */ entire blockvector spans. */
BLOCKVECTOR_MAP (bv) = NULL; bv->set_map (nullptr);
begin = stab->blocks.front ().begin; begin = stab->blocks.front ().begin;
end = stab->blocks.front ().end; end = stab->blocks.front ().end;
bv->set_num_blocks (actual_nblocks); bv->set_num_blocks (actual_nblocks);

View File

@ -667,8 +667,8 @@ objfile_relocate1 (struct objfile *objfile,
struct blockvector *bv = cust->blockvector (); struct blockvector *bv = cust->blockvector ();
int block_line_section = cust->block_line_section (); int block_line_section = cust->block_line_section ();
if (BLOCKVECTOR_MAP (bv)) if (bv->map () != nullptr)
addrmap_relocate (BLOCKVECTOR_MAP (bv), delta[block_line_section]); addrmap_relocate (bv->map (), delta[block_line_section]);
for (block *b : bv->blocks ()) for (block *b : bv->blocks ())
{ {

View File

@ -2987,9 +2987,9 @@ find_pc_sect_compunit_symtab (CORE_ADDR pc, struct obj_section *section)
if (!in_range_p) if (!in_range_p)
continue; continue;
if (BLOCKVECTOR_MAP (bv)) if (bv->map () != nullptr)
{ {
if (addrmap_find (BLOCKVECTOR_MAP (bv), pc) == nullptr) if (addrmap_find (bv->map (), pc) == nullptr)
continue; continue;
return cust; return cust;