Browse Source

Add obj_section::contains method

I noticed a number of spots checking whether an address is in an
obj_section.  This patch introduces a new method for this and changes
some code to use it.

Regression tested on x86-64 Fedora 38.

Approved-By: Andrew Burgess <aburgess@redhat.com>
master
Tom Tromey 3 years ago
parent
commit
94a75b0363
  1. 2
      gdb/minsyms.c
  2. 2
      gdb/objfiles.c
  3. 6
      gdb/objfiles.h
  4. 2
      gdb/printcmd.c
  5. 3
      gdb/symfile.c

2
gdb/minsyms.c

@ -716,7 +716,7 @@ frob_address (struct objfile *objfile, CORE_ADDR pc,
{
for (obj_section *iter : objfile->sections ())
{
if (pc >= iter->addr () && pc < iter->endaddr ())
if (iter->contains (pc))
{
*unrel_addr = unrelocated_addr (pc - iter->offset ());
return 1;

2
gdb/objfiles.c

@ -1213,7 +1213,7 @@ is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile)
if (section_is_overlay (osect) && !section_is_mapped (osect))
continue;
if (osect->addr () <= addr && addr < osect->endaddr ())
if (osect->contains (addr))
return true;
}
return false;

6
gdb/objfiles.h

@ -394,6 +394,12 @@ struct obj_section
return this->addr () + bfd_section_size (this->the_bfd_section);
}
/* True if ADDR is in this obj_section, false otherwise. */
bool contains (CORE_ADDR addr) const
{
return addr >= this->addr () && addr < endaddr ();
}
/* BFD section pointer */
struct bfd_section *the_bfd_section;

2
gdb/printcmd.c

@ -1499,7 +1499,7 @@ info_symbol_command (const char *arg, int from_tty)
sect_addr = overlay_mapped_address (addr, osect);
if (osect->addr () <= sect_addr && sect_addr < osect->endaddr ()
if (osect->contains (sect_addr)
&& (msymbol
= lookup_minimal_symbol_by_pc_section (sect_addr,
osect).minsym))

3
gdb/symfile.c

@ -3085,8 +3085,7 @@ pc_in_mapped_range (CORE_ADDR pc, struct obj_section *section)
{
if (section_is_overlay (section))
{
if (section->addr () <= pc
&& pc < section->endaddr ())
if (section->contains (pc))
return true;
}

Loading…
Cancel
Save