From 94a75b0363b1e09416e9bd24cac72d98864688d8 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sat, 10 Feb 2024 15:03:18 -0700 Subject: 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 --- gdb/minsyms.c | 2 +- gdb/objfiles.c | 2 +- gdb/objfiles.h | 6 ++++++ gdb/printcmd.c | 2 +- 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; } -- cgit v1.1