[binutils-gdb] [gdb/symtab] Add find_symbol_for_pc_maybe_inline

Tom de Vries via Gdb-cvs <[email protected]>
Newsgroups gmane.comp.gdb.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f3f78b91d1d71df19cb9621268ed3400689d5cf6

commit f3f78b91d1d71df19cb9621268ed3400689d5cf6
Author: Tom de Vries <[email protected]>
Date:   Tue Apr 14 22:45:23 2026 +0200

    [gdb/symtab] Add find_symbol_for_pc_maybe_inline
    
    We have function find_symbol_for_pc:
    ...
    find_symbol_for_pc (CORE_ADDR pc)
    {
      return find_symbol_for_pc_sect (pc, find_pc_mapped_section (pc));
    }
    ...
    which uses some standard way of getting the section for the given pc.
    
    Add a similar function find_symbol_for_pc_maybe_inline that calls
    find_symbol_for_pc_sect_maybe_inline, and use it in jump_command.
    
    Tested on x86_64-linux.
    
    Approved-By: Tom Tromey <[email protected]>

Diff:
---
 gdb/blockframe.c | 8 ++++++++
 gdb/infcmd.c     | 3 +--
 gdb/symtab.h     | 6 ++++++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index 59efa391604..ce28d99c7e4 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -152,6 +152,14 @@ find_symbol_for_pc (CORE_ADDR pc)
 
 /* See symtab.h.  */
 
+struct symbol *
+find_symbol_for_pc_maybe_inline (CORE_ADDR pc)
+{
+  return find_symbol_for_pc_sect_maybe_inline (pc, find_pc_mapped_section (pc));
+}
+
+/* See symtab.h.  */
+
 struct symbol *
 find_symbol_for_pc_sect_maybe_inline (CORE_ADDR pc, struct obj_section *section)
 {
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index c0d12be6e4a..c6519b71abc 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -1249,8 +1249,7 @@ jump_command (const char *arg, int from_tty)
 
   /* See if we are trying to jump to another function.  */
   fn = get_frame_function (get_current_frame ());
-  sfn = find_symbol_for_pc_sect_maybe_inline (sal.pc,
-					  find_pc_mapped_section (sal.pc));
+  sfn = find_symbol_for_pc_maybe_inline (sal.pc);
   if (fn != nullptr && sfn != fn)
     {
       if (!query (_("Line %ps is not in `%ps'.  Jump anyway? "),
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 6e155192873..0db85bcf5ba 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -2201,6 +2201,12 @@ extern struct type *lookup_enum (const char *, const struct block *);
 
 extern struct symbol *find_symbol_for_pc (CORE_ADDR);
 
+/* Lookup the function symbol corresponding to the address.  The return value
+   will be the closest enclosing function, which might be an inline
+   function.  */
+
+extern struct symbol *find_symbol_for_pc_maybe_inline (CORE_ADDR pc);
+
 /* lookup the function corresponding to the address and section.  The
    return value will not be an inlined function; the containing
    function will be returned instead.  */
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.