This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[2/8] solib handler rework: solib-frv
- From: "Ulrich Weigand" <uweigand at de dot ibm dot com>
- To: gdb-patches at sourceware dot org
- Date: Fri, 19 Oct 2007 23:32:21 +0200 (CEST)
- Subject: [2/8] solib handler rework: solib-frv
Hello,
this converts solib-frv to the cross-platform form. The handler is
used only on frv targets.
Bye,
Ulrich
ChangeLog:
* frv-tdep.c: Include "solib.h".
(frv_gdbarch_init): Call set_solib_ops.
* frv-tdep.h (struct target_so_ops): Add forward reference.
(frv_so_ops): Add extern declaration.
* solib-frv.c (frv_so_ops): Make global.
(_initialize_frv_solib): Do not set current_target_so_ops.
* Makefile.in: Update dependencies.
diff -urNp gdb-orig/gdb/Makefile.in gdb-head/gdb/Makefile.in
--- gdb-orig/gdb/Makefile.in 2007-10-16 00:43:06.000000000 +0200
+++ gdb-head/gdb/Makefile.in 2007-10-16 00:44:32.000000000 +0200
@@ -2049,7 +2049,8 @@ frv-tdep.o: frv-tdep.c $(defs_h) $(gdb_s
$(arch_utils_h) $(regcache_h) $(frame_h) $(frame_unwind_h) \
$(frame_base_h) $(trad_frame_h) $(dis_asm_h) $(gdb_assert_h) \
$(sim_regno_h) $(gdb_sim_frv_h) $(opcodes_frv_desc_h) $(symtab_h) \
- $(elf_bfd_h) $(elf_frv_h) $(osabi_h) $(infcall_h) $(frv_tdep_h)
+ $(elf_bfd_h) $(elf_frv_h) $(osabi_h) $(infcall_h) $(solib_h) \
+ $(frv_tdep_h)
f-typeprint.o: f-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
$(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(target_h) \
$(f_lang_h) $(gdb_string_h)
diff -urNp gdb-orig/gdb/frv-tdep.c gdb-head/gdb/frv-tdep.c
--- gdb-orig/gdb/frv-tdep.c 2007-10-15 23:34:13.000000000 +0200
+++ gdb-head/gdb/frv-tdep.c 2007-10-16 00:44:32.000000000 +0200
@@ -37,6 +37,7 @@
#include "elf/frv.h"
#include "osabi.h"
#include "infcall.h"
+#include "solib.h"
#include "frv-tdep.h"
extern void _initialize_frv_tdep (void);
@@ -1563,6 +1564,8 @@ frv_gdbarch_init (struct gdbarch_info in
set_gdbarch_convert_from_func_ptr_addr (gdbarch,
frv_convert_from_func_ptr_addr);
+ set_solib_ops (gdbarch, &frv_so_ops);
+
/* Hook in ABI-specific overrides, if they have been registered. */
gdbarch_init_osabi (info, gdbarch);
diff -urNp gdb-orig/gdb/frv-tdep.h gdb-head/gdb/frv-tdep.h
--- gdb-orig/gdb/frv-tdep.h 2007-10-15 23:34:13.000000000 +0200
+++ gdb-head/gdb/frv-tdep.h 2007-10-16 00:44:32.000000000 +0200
@@ -114,3 +114,7 @@ CORE_ADDR frv_fdpic_find_canonical_descr
/* Given an objfile, return the address of its link map. This value is
needed for TLS support. */
CORE_ADDR frv_fetch_objfile_link_map (struct objfile *objfile);
+
+struct target_so_ops;
+extern struct target_so_ops frv_so_ops;
+
diff -urNp gdb-orig/gdb/solib-frv.c gdb-head/gdb/solib-frv.c
--- gdb-orig/gdb/solib-frv.c 2007-10-15 23:34:13.000000000 +0200
+++ gdb-head/gdb/solib-frv.c 2007-10-16 00:44:32.000000000 +0200
@@ -1272,7 +1272,7 @@ frv_fetch_objfile_link_map (struct objfi
return 0;
}
-static struct target_so_ops frv_so_ops;
+struct target_so_ops frv_so_ops;
void
_initialize_frv_solib (void)
@@ -1286,9 +1286,6 @@ _initialize_frv_solib (void)
frv_so_ops.open_symbol_file_object = open_symbol_file_object;
frv_so_ops.in_dynsym_resolve_code = frv_in_dynsym_resolve_code;
- /* FIXME: Don't do this here. *_gdbarch_init() should set so_ops. */
- current_target_so_ops = &frv_so_ops;
-
/* Debug this file's internals. */
add_setshow_zinteger_cmd ("solib-frv", class_maintenance,
&solib_frv_debug, _("\
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com