From: Tom Tromey Date: Sat, 10 Feb 2024 22:03:18 +0000 (-0700) Subject: Add obj_section::contains method X-Git-Tag: gdb-15-branchpoint~930 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=94a75b0363b1e09416e9bd24cac72d98864688d8;p=thirdparty%2Fbinutils-gdb.git 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 --- diff --git a/gdb/minsyms.c b/gdb/minsyms.c index 2a43175a170..6aa2010fb01 100644 --- a/gdb/minsyms.c +++ b/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; diff --git a/gdb/objfiles.c b/gdb/objfiles.c index bcaae42a30f..d880b9304d2 100644 --- a/gdb/objfiles.c +++ b/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; diff --git a/gdb/objfiles.h b/gdb/objfiles.h index 7ed23224ba8..8b8b7182e87 100644 --- a/gdb/objfiles.h +++ b/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; diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 43c0f447fa8..63e530e612e 100644 --- a/gdb/printcmd.c +++ b/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)) diff --git a/gdb/symfile.c b/gdb/symfile.c index 9d5ce7f6ad2..db6d76e78bf 100644 --- a/gdb/symfile.c +++ b/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; }