From: Simon Marchi Date: Mon, 26 May 2025 20:26:15 +0000 (-0400) Subject: gdb/solib: make implementation of solib_ops::open_symbol_file_object optional X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=134767de03c9b95c285758da98156484e31c8342;p=thirdparty%2Fbinutils-gdb.git gdb/solib: make implementation of solib_ops::open_symbol_file_object optional The only solib implementation that implements open_symbol_file_object is SVR4. All others just return 0. Make it optional, to avoid having these empty functions. Change-Id: I835197a73323d39231d071f9a9eaac2553f10726 Reviewed-By: Guinevere Larsen --- diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c index 4eb89e9341b..7ff9bf4482e 100644 --- a/gdb/solib-aix.c +++ b/gdb/solib-aix.c @@ -489,14 +489,6 @@ solib_aix_current_sos () return sos; } -/* Implement the "open_symbol_file_object" solib_ops method. */ - -static int -solib_aix_open_symbol_file_object (int from_tty) -{ - return 0; -} - /* Implement the "in_dynsym_resolve_code" solib_ops method. */ static bool @@ -683,7 +675,7 @@ const solib_ops solib_aix_so_ops = nullptr, solib_aix_solib_create_inferior_hook, solib_aix_current_sos, - solib_aix_open_symbol_file_object, + nullptr, solib_aix_in_dynsym_resolve_code, solib_aix_bfd_open, nullptr, diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c index 86a71bb2280..14db2efd735 100644 --- a/gdb/solib-darwin.c +++ b/gdb/solib-darwin.c @@ -188,16 +188,6 @@ find_program_interpreter (void) return buf; } -/* Not used. I don't see how the main symbol file can be found: the - interpreter name is needed and it is known from the executable file. - Note that darwin-nat.c implements pid_to_exec_file. */ - -static int -open_symbol_file_object (int from_tty) -{ - return 0; -} - /* Build a list of currently loaded shared objects. See solib-svr4.c. */ static owning_intrusive_list @@ -649,7 +639,7 @@ const solib_ops darwin_so_ops = darwin_clear_solib, darwin_solib_create_inferior_hook, darwin_current_sos, - open_symbol_file_object, + nullptr, darwin_in_dynsym_resolve_code, darwin_bfd_open, nullptr, diff --git a/gdb/solib-dsbt.c b/gdb/solib-dsbt.c index ed6580eca0f..2b315369280 100644 --- a/gdb/solib-dsbt.c +++ b/gdb/solib-dsbt.c @@ -392,15 +392,6 @@ fetch_loadmap (CORE_ADDR ldmaddr) static void dsbt_relocate_main_executable (void); static int enable_break (void); -/* See solib.h. */ - -static int -open_symbol_file_object (int from_tty) -{ - /* Unimplemented. */ - return 0; -} - /* Given a loadmap and an address, return the displacement needed to relocate the address. */ @@ -909,7 +900,7 @@ const solib_ops dsbt_so_ops = dsbt_clear_solib, dsbt_solib_create_inferior_hook, dsbt_current_sos, - open_symbol_file_object, + nullptr, dsbt_in_dynsym_resolve_code, solib_bfd_open, nullptr, diff --git a/gdb/solib-frv.c b/gdb/solib-frv.c index 0ccbf903309..ceef72208a1 100644 --- a/gdb/solib-frv.c +++ b/gdb/solib-frv.c @@ -236,15 +236,6 @@ static void frv_relocate_main_executable (void); static CORE_ADDR main_got (void); static int enable_break2 (void); -/* Implement the "open_symbol_file_object" solib_ops method. */ - -static int -open_symbol_file_object (int from_tty) -{ - /* Unimplemented. */ - return 0; -} - /* Cached value for lm_base(), below. */ static CORE_ADDR lm_base_cache = 0; @@ -1080,7 +1071,7 @@ const solib_ops frv_so_ops = frv_clear_solib, frv_solib_create_inferior_hook, frv_current_sos, - open_symbol_file_object, + nullptr, frv_in_dynsym_resolve_code, solib_bfd_open, nullptr, diff --git a/gdb/solib-target.c b/gdb/solib-target.c index 7ccb87daa95..c20a843449b 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -382,14 +382,6 @@ Could not relocate shared library \"%s\": bad offsets"), so.name.c_str ()); sec->endaddr += offset; } -static int -solib_target_open_symbol_file_object (int from_tty) -{ - /* We can't locate the main symbol file based on the target's - knowledge; the user has to specify it. */ - return 0; -} - static bool solib_target_in_dynsym_resolve_code (CORE_ADDR pc) { @@ -406,7 +398,7 @@ const solib_ops solib_target_so_ops = nullptr, solib_target_solib_create_inferior_hook, solib_target_current_sos, - solib_target_open_symbol_file_object, + nullptr, solib_target_in_dynsym_resolve_code, solib_bfd_open, nullptr, diff --git a/gdb/solib.c b/gdb/solib.c index 8a997a40c22..e357803bc76 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -723,7 +723,8 @@ update_solib_list (int from_tty) have not opened a symbol file, we may be able to get its symbols now! */ if (inf->attach_flag - && current_program_space->symfile_object_file == NULL) + && current_program_space->symfile_object_file == nullptr + && ops->open_symbol_file_object != nullptr) { try {