aboutsummaryrefslogtreecommitdiff
path: root/gdb/minsyms.h
diff options
context:
space:
mode:
authorIjaz, Abdul B <abdul.b.ijaz@intel.com>2024-07-23 17:59:29 +0200
committerAbdul Basit Ijaz <abdul.b.ijaz@intel.com>2024-11-17 02:02:11 +0100
commit9dc89f2b274b8bc8c1c5335580997b2a14865503 (patch)
treed8bca478ce2bb3f03ad70c5a17b67403e2246881 /gdb/minsyms.h
parent231a8ab70fc5af0d7534a9eb36430220c4d65d5d (diff)
downloadbinutils-9dc89f2b274b8bc8c1c5335580997b2a14865503.zip
binutils-9dc89f2b274b8bc8c1c5335580997b2a14865503.tar.gz
binutils-9dc89f2b274b8bc8c1c5335580997b2a14865503.tar.bz2
gdb: Update linkage name lookup function to allow mst_file_data/bss types.
From the commit 667ed4b14ddaa9af196481f1757c0e517e80b6ed onward, instead of normal name GDB looks for the "jit_descriptor" linkage name in the JIT code initialization. Without this change, the function "lookup_minimal_symbol_linkage", only matches the non-static data. So in case jit_debugger is static type then setting up breakpoint in the JIT code fails. Issue is seen for the intel compilers, where jit_debug_descriptor has static type i.e. "mst_file_data". Hence lookup_minimal_symbol_linkage returns nullptr for it. So, in this case breakpoint does not hit in the JIT code. To resolve this, the commit introduces a new boolean argument to the lookup_minimal_symbol_linkage function. This argument allows the function to also match mst_file_data and mst_file_bss types when set to true. The function is called with this new argument set to true only from JIT code initialization handling, ensuring that the current behavior remains unchanged for other cases. Because handling of static types of data symbols for all cases result in regression for "gdb.base/print-file-var.exp" test. Example of minsym for the JIT code emitted by the intel compilers where lookup_minimal_symbol_linkage fails without this change because jit_debugger type is "mst_file_data". (top-gdb) p *msymbol $1 = {<general_symbol_info> = {m_name = 0x7fffcc77dc95 "__jit_debug_descriptor", m_value = {ivalue = 84325936, block = 0x506b630, bytes = 0x506b630 <error: Cannot access memory at address 0x506b630>, address = 0x506b630, unrel_addr = (unknown: 0x506b630), common_block = 0x506b630, chain = 0x506b630}, language_specific = {obstack = 0x0, demangled_name = 0x0}, m_language = language_unknown, ada_mangled = 0, m_section = 29}, m_size = 24, filename = 0x55555a751b70 "JITLoaderGDB.cpp", m_type = mst_file_data, created_by_gdb = 0, m_target_flag_1 = 0, m_target_flag_2 = 0, m_has_size = 1, name_set = 1, hash_next = 0x55555b86e4f0, demangled_hash_next = 0x0} Updated the test "jit-elf-so.exp" to test the static type of jit_descriptor object. Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb/minsyms.h')
-rw-r--r--gdb/minsyms.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/gdb/minsyms.h b/gdb/minsyms.h
index 9659f30..4e6d5db 100644
--- a/gdb/minsyms.h
+++ b/gdb/minsyms.h
@@ -227,11 +227,12 @@ bound_minimal_symbol lookup_minimal_symbol_text (program_space *pspace,
objfiles) for a global (not file-local) minsym whose linkage name
is NAME. This is somewhat similar to lookup_minimal_symbol_text,
only data symbols (not text symbols) are considered, and a non-NULL
- objfile is not accepted. Returns a bound minimal symbol that
- matches, or an "empty" bound minimal symbol otherwise. */
+ objfile is not accepted. The boolean argument allows matching the
+ static types of data symbols also. Returns a bound minimal symbol
+ that matches, or an "empty" bound minimal symbol otherwise. */
-extern bound_minimal_symbol lookup_minimal_symbol_linkage (const char *name,
- struct objfile *objf)
+extern bound_minimal_symbol lookup_minimal_symbol_linkage
+ (const char *name, struct objfile *objf, bool match_static_type)
ATTRIBUTE_NONNULL (1) ATTRIBUTE_NONNULL (2);
/* A variant of lookup_minimal_symbol_linkage that iterates over all