diff options
author | Tom Tromey <tom@tromey.com> | 2024-02-10 15:03:18 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2024-02-20 08:52:33 -0700 |
commit | 94a75b0363b1e09416e9bd24cac72d98864688d8 (patch) | |
tree | f4b83dd7c2150d7fef8bcb76dfddd4da735a1b52 | |
parent | 8480a37e146c40e82a93c0ecf6144571516c95c5 (diff) | |
download | gdb-94a75b0363b1e09416e9bd24cac72d98864688d8.zip gdb-94a75b0363b1e09416e9bd24cac72d98864688d8.tar.gz gdb-94a75b0363b1e09416e9bd24cac72d98864688d8.tar.bz2 |
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>
-rw-r--r-- | gdb/minsyms.c | 2 | ||||
-rw-r--r-- | gdb/objfiles.c | 2 | ||||
-rw-r--r-- | gdb/objfiles.h | 6 | ||||
-rw-r--r-- | gdb/printcmd.c | 2 | ||||
-rw-r--r-- | gdb/symfile.c | 3 |
5 files changed, 10 insertions, 5 deletions
diff --git a/gdb/minsyms.c b/gdb/minsyms.c index 2a43175..6aa2010 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 bcaae42..d880b93 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 7ed2322..8b8b718 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 43c0f44..63e530e 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 9d5ce7f..db6d76e 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; } |