From 831a0c44472cd3c9933a6e0d2d55d4c9d68f0645 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Fri, 17 Jul 2009 17:08:23 +0000 Subject: [PATCH] * solib.c (solib_bfd_open): Do not call ops->bfd_open. (solib_map_sections): Call ops->bfd_open instead of solib_bfd_open. * solib-frv.c (_initialize_frv_solib): Initialize bfd_open member. * solib-irix.c (_initialize_irix_solib): Likewise. * solib-null.c (_initialize_null_solib): Likewise. * solib-osf.c (_initialize_osf_solib): Likewise. * solib-pa64.c (_initialize_pa64_solib): Likewise. * solib-som.c (_initialize_som_solib): Likewise. * solib-sunos.c (_initialize_sunos_solib): Likewise. * solib-svr4.c (_initialize_svr4_solib): Likewise. * solib-target.c (_initialize_solib_target): Likewise. --- gdb/ChangeLog | 14 ++++++++++++++ gdb/solib-frv.c | 1 + gdb/solib-irix.c | 1 + gdb/solib-null.c | 1 + gdb/solib-osf.c | 1 + gdb/solib-pa64.c | 1 + gdb/solib-som.c | 1 + gdb/solib-sunos.c | 1 + gdb/solib-svr4.c | 1 + gdb/solib-target.c | 1 + gdb/solib.c | 10 ++-------- 11 files changed, 25 insertions(+), 8 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 661bb45975c..5128dc6e879 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,17 @@ +2009-07-17 Ulrich Weigand + + * solib.c (solib_bfd_open): Do not call ops->bfd_open. + (solib_map_sections): Call ops->bfd_open instead of solib_bfd_open. + * solib-frv.c (_initialize_frv_solib): Initialize bfd_open member. + * solib-irix.c (_initialize_irix_solib): Likewise. + * solib-null.c (_initialize_null_solib): Likewise. + * solib-osf.c (_initialize_osf_solib): Likewise. + * solib-pa64.c (_initialize_pa64_solib): Likewise. + * solib-som.c (_initialize_som_solib): Likewise. + * solib-sunos.c (_initialize_sunos_solib): Likewise. + * solib-svr4.c (_initialize_svr4_solib): Likewise. + * solib-target.c (_initialize_solib_target): Likewise. + 2009-07-17 Ulrich Weigand * mi/mi-cmd-disas.c (mi_cmd_disassemble): Respect mixed_mode flag. diff --git a/gdb/solib-frv.c b/gdb/solib-frv.c index eec4e782661..b8d5528d5fb 100644 --- a/gdb/solib-frv.c +++ b/gdb/solib-frv.c @@ -1300,6 +1300,7 @@ _initialize_frv_solib (void) frv_so_ops.current_sos = frv_current_sos; frv_so_ops.open_symbol_file_object = open_symbol_file_object; frv_so_ops.in_dynsym_resolve_code = frv_in_dynsym_resolve_code; + frv_so_ops.bfd_open = solib_bfd_open; /* Debug this file's internals. */ add_setshow_zinteger_cmd ("solib-frv", class_maintenance, diff --git a/gdb/solib-irix.c b/gdb/solib-irix.c index 4cf8cc67cc8..a0c1cd216e5 100644 --- a/gdb/solib-irix.c +++ b/gdb/solib-irix.c @@ -740,4 +740,5 @@ _initialize_irix_solib (void) irix_so_ops.current_sos = irix_current_sos; irix_so_ops.open_symbol_file_object = irix_open_symbol_file_object; irix_so_ops.in_dynsym_resolve_code = irix_in_dynsym_resolve_code; + irix_so_ops.bfd_open = solib_bfd_open; } diff --git a/gdb/solib-null.c b/gdb/solib-null.c index 695c11415da..b39ccdbc40b 100644 --- a/gdb/solib-null.c +++ b/gdb/solib-null.c @@ -81,6 +81,7 @@ _initialize_null_solib (void) null_so_ops.current_sos = null_current_sos; null_so_ops.open_symbol_file_object = null_open_symbol_file_object; null_so_ops.in_dynsym_resolve_code = null_in_dynsym_resolve_code; + null_so_ops.bfd_open = solib_bfd_open; /* Set current_target_so_ops to null_so_ops if not already set. */ if (current_target_so_ops == 0) diff --git a/gdb/solib-osf.c b/gdb/solib-osf.c index 5bd2895eed9..c295335bae5 100644 --- a/gdb/solib-osf.c +++ b/gdb/solib-osf.c @@ -631,6 +631,7 @@ _initialize_osf_solib (void) osf_so_ops.current_sos = osf_current_sos; osf_so_ops.open_symbol_file_object = osf_open_symbol_file_object; osf_so_ops.in_dynsym_resolve_code = osf_in_dynsym_resolve_code; + osf_so_ops.bfd_open = solib_bfd_open; /* FIXME: Don't do this here. *_gdbarch_init() should set so_ops. */ current_target_so_ops = &osf_so_ops; diff --git a/gdb/solib-pa64.c b/gdb/solib-pa64.c index 3d22ee53336..637fc1a6898 100644 --- a/gdb/solib-pa64.c +++ b/gdb/solib-pa64.c @@ -658,6 +658,7 @@ _initialize_pa64_solib (void) pa64_so_ops.current_sos = pa64_current_sos; pa64_so_ops.open_symbol_file_object = pa64_open_symbol_file_object; pa64_so_ops.in_dynsym_resolve_code = pa64_in_dynsym_resolve_code; + pa64_so_ops.bfd_open = solib_bfd_open; memset (&dld_cache, 0, sizeof (dld_cache)); } diff --git a/gdb/solib-som.c b/gdb/solib-som.c index 457930c1f64..16f00a32733 100644 --- a/gdb/solib-som.c +++ b/gdb/solib-som.c @@ -812,6 +812,7 @@ _initialize_som_solib (void) som_so_ops.current_sos = som_current_sos; som_so_ops.open_symbol_file_object = som_open_symbol_file_object; som_so_ops.in_dynsym_resolve_code = som_in_dynsym_resolve_code; + som_so_ops.bfd_open = solib_bfd_open; } void diff --git a/gdb/solib-sunos.c b/gdb/solib-sunos.c index ff41847ac5b..9b2a470c376 100644 --- a/gdb/solib-sunos.c +++ b/gdb/solib-sunos.c @@ -840,6 +840,7 @@ _initialize_sunos_solib (void) sunos_so_ops.current_sos = sunos_current_sos; sunos_so_ops.open_symbol_file_object = open_symbol_file_object; sunos_so_ops.in_dynsym_resolve_code = sunos_in_dynsym_resolve_code; + sunos_so_ops.bfd_open = solib_bfd_open; /* FIXME: Don't do this here. *_gdbarch_init() should set so_ops. */ current_target_so_ops = &sunos_so_ops; diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 0f175846a59..6cfaa85ea8e 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -1934,6 +1934,7 @@ _initialize_svr4_solib (void) svr4_so_ops.current_sos = svr4_current_sos; svr4_so_ops.open_symbol_file_object = open_symbol_file_object; svr4_so_ops.in_dynsym_resolve_code = svr4_in_dynsym_resolve_code; + svr4_so_ops.bfd_open = solib_bfd_open; svr4_so_ops.lookup_lib_global_symbol = elf_lookup_lib_symbol; svr4_so_ops.same = svr4_same; diff --git a/gdb/solib-target.c b/gdb/solib-target.c index f41dc51f2f2..07415e441b1 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -492,4 +492,5 @@ _initialize_solib_target (void) = solib_target_open_symbol_file_object; solib_target_so_ops.in_dynsym_resolve_code = solib_target_in_dynsym_resolve_code; + solib_target_so_ops.bfd_open = solib_bfd_open; } diff --git a/gdb/solib.c b/gdb/solib.c index 53d5d1bcb75..157aabaf17a 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -285,16 +285,11 @@ solib_bfd_fopen (char *pathname, int fd) bfd * solib_bfd_open (char *pathname) { - struct target_so_ops *ops = solib_ops (target_gdbarch); char *found_pathname; int found_file; bfd *abfd; const struct bfd_arch_info *b; - /* Use target-specific override if present. */ - if (ops->bfd_open) - return ops->bfd_open (pathname); - /* Search for shared library file. */ found_pathname = solib_find (pathname, &found_file); if (found_pathname == NULL) @@ -354,6 +349,7 @@ static int solib_map_sections (void *arg) { struct so_list *so = (struct so_list *) arg; /* catch_errors bogon */ + struct target_so_ops *ops = solib_ops (target_gdbarch); char *filename; struct target_section *p; struct cleanup *old_chain; @@ -361,7 +357,7 @@ solib_map_sections (void *arg) filename = tilde_expand (so->so_name); old_chain = make_cleanup (xfree, filename); - abfd = solib_bfd_open (filename); + abfd = ops->bfd_open (filename); do_cleanups (old_chain); /* Leave bfd open, core_xfer_memory and "info files" need it. */ @@ -381,8 +377,6 @@ solib_map_sections (void *arg) for (p = so->sections; p < so->sections_end; p++) { - struct target_so_ops *ops = solib_ops (target_gdbarch); - /* Relocate the section binding addresses as recorded in the shared object's file by the base address to which the object was actually mapped. */ -- 2.30.2