From cb9f919f0f4b7f30023f353a8fd16979f8ace99a Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Tue, 16 Jul 2024 23:52:05 -0400 Subject: [PATCH] gdb: add program_space parameter to lookup_minimal_symbol_text Make the current program space reference bubble up one level. Use a program space from the context whenever that makes sense. Change-Id: Id3b0bf4490178d71a9aecdbf404b9287c22b30f5 Reviewed-by: Keith Seitz Approved-By: Andrew Burgess --- gdb/breakpoint.c | 8 +++++--- gdb/jit.c | 2 +- gdb/minsyms.c | 5 +++-- gdb/minsyms.h | 7 ++++--- gdb/symtab.c | 4 +++- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index dd015b8ce97..9d9ce6e1e66 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -3571,7 +3571,8 @@ create_overlay_event_breakpoint (void) if (bp_objfile_data->overlay_msym.minsym == NULL) { bound_minimal_symbol m - = lookup_minimal_symbol_text (func_name, objfile); + = lookup_minimal_symbol_text (current_program_space, func_name, + objfile); if (m.minsym == NULL) { /* Avoid future lookups in this objfile. */ @@ -3675,7 +3676,8 @@ create_longjmp_master_breakpoint_names (objfile *objfile) if (bp_objfile_data->longjmp_msym[i].minsym == NULL) { bound_minimal_symbol m - = lookup_minimal_symbol_text (func_name, objfile); + = lookup_minimal_symbol_text (objfile->pspace (), func_name, + objfile); if (m.minsym == NULL) { /* Prevent future lookups in this objfile. */ @@ -3845,7 +3847,7 @@ create_exception_master_breakpoint_hook (objfile *objfile) if (bp_objfile_data->exception_msym.minsym == NULL) { bound_minimal_symbol debug_hook - = lookup_minimal_symbol_text (func_name, objfile); + = lookup_minimal_symbol_text (objfile->pspace (), func_name, objfile); if (debug_hook.minsym == NULL) { bp_objfile_data->exception_msym.minsym = &msym_not_found; diff --git a/gdb/jit.c b/gdb/jit.c index 2744d03f8f8..d4513325190 100644 --- a/gdb/jit.c +++ b/gdb/jit.c @@ -880,7 +880,7 @@ jit_breakpoint_re_set_internal (struct gdbarch *gdbarch, program_space *pspace) /* Lookup the registration symbol. If it is missing, then we assume we are not attached to a JIT. */ bound_minimal_symbol reg_symbol - = lookup_minimal_symbol_text (jit_break_name, the_objfile); + = lookup_minimal_symbol_text (pspace, jit_break_name, the_objfile); if (reg_symbol.minsym == NULL || reg_symbol.value_address () == 0) { diff --git a/gdb/minsyms.c b/gdb/minsyms.c index 40d63404fce..b5c4b95f1ba 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -607,7 +607,8 @@ lookup_minimal_symbol_linkage (program_space *pspace, const char *name, /* See minsyms.h. */ bound_minimal_symbol -lookup_minimal_symbol_text (const char *name, struct objfile *objf) +lookup_minimal_symbol_text (program_space *pspace, const char *name, + objfile *objf) { struct minimal_symbol *msymbol; bound_minimal_symbol found_symbol; @@ -643,7 +644,7 @@ lookup_minimal_symbol_text (const char *name, struct objfile *objf) if (objf == nullptr) { - for (objfile *objfile : current_program_space->objfiles ()) + for (objfile *objfile : pspace->objfiles ()) { if (found_symbol.minsym != NULL) break; diff --git a/gdb/minsyms.h b/gdb/minsyms.h index f84d3e81848..9659f30dff8 100644 --- a/gdb/minsyms.h +++ b/gdb/minsyms.h @@ -211,7 +211,7 @@ bound_minimal_symbol lookup_minimal_symbol (program_space *pspace, objfile *obj = nullptr, const char *sfile = nullptr); -/* Look through all the current minimal symbol tables and find the +/* Look through all the minimal symbol tables in PSPACE and find the first minimal symbol that matches NAME and has text type. If OBJF is non-NULL, limit the search to that objfile. Returns a bound minimal symbol that matches, or an "empty" bound minimal symbol @@ -219,8 +219,9 @@ bound_minimal_symbol lookup_minimal_symbol (program_space *pspace, This function only searches the mangled (linkage) names. */ -bound_minimal_symbol lookup_minimal_symbol_text (const char *, - struct objfile *); +bound_minimal_symbol lookup_minimal_symbol_text (program_space *pspace, + const char *name, + objfile *objf); /* Look through the minimal symbols in OBJF (and its separate debug objfiles) for a global (not file-local) minsym whose linkage name diff --git a/gdb/symtab.c b/gdb/symtab.c index 9da148b3394..9b3562eeb30 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -3174,7 +3174,9 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent) if (msymbol.minsym->type () == mst_solib_trampoline) { bound_minimal_symbol mfunsym - = lookup_minimal_symbol_text (msymbol.minsym->linkage_name (), NULL); + = lookup_minimal_symbol_text (section->objfile->pspace (), + msymbol.minsym->linkage_name (), + nullptr); if (mfunsym.minsym == NULL) /* I eliminated this warning since it is coming out