This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[commit] Eliminate HPPA's IN_SOLIB_CALL_TRAMPOLINE


The target hppa-elf still builds, committed.
Andrew
2004-10-31  Andrew Cagney  <cagney@gnu.org>

	* hppa-tdep.c (hppa_stub_unwind_sniffer): Replace
	IN_SOLIB_CALL_TRAMPOLINE with tdep.in_solib_call_trampoline.
	* hppa-tdep.h (struct gdbarch_tdep): Add in_solib_call_trampoline.
	* hppa-hpux-tdep.c (hppa_hpux_init_abi): Set same.
	* hppa-linux-tdep.c (hppa_linux_init_abi): Ditto.

Index: hppa-hpux-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/hppa-hpux-tdep.c,v
retrieving revision 1.23
diff -p -u -r1.23 hppa-hpux-tdep.c
--- hppa-hpux-tdep.c	12 Jul 2004 17:09:58 -0000	1.23
+++ hppa-hpux-tdep.c	31 Oct 2004 21:07:15 -0000
@@ -1407,11 +1407,9 @@ hppa_hpux_init_abi (struct gdbarch_info 
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
   if (tdep->bytes_per_address == 4)
-    set_gdbarch_in_solib_call_trampoline (gdbarch, 
-					  hppa32_hpux_in_solib_call_trampoline);
+    tdep->in_solib_call_trampoline = hppa32_hpux_in_solib_call_trampoline;
   else
-    set_gdbarch_in_solib_call_trampoline (gdbarch, 
-					  hppa64_hpux_in_solib_call_trampoline);
+    tdep->in_solib_call_trampoline = hppa64_hpux_in_solib_call_trampoline;
 
   set_gdbarch_in_solib_return_trampoline (gdbarch,
 					  hppa_hpux_in_solib_return_trampoline);
Index: hppa-linux-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/hppa-linux-tdep.c,v
retrieving revision 1.10
diff -p -u -r1.10 hppa-linux-tdep.c
--- hppa-linux-tdep.c	20 Jul 2004 19:45:05 -0000	1.10
+++ hppa-linux-tdep.c	31 Oct 2004 21:07:15 -0000
@@ -563,8 +563,7 @@ hppa_linux_init_abi (struct gdbarch_info
   set_solib_svr4_fetch_link_map_offsets
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
 
-  set_gdbarch_in_solib_call_trampoline
-        (gdbarch, hppa_linux_in_solib_call_trampoline);
+  tdep->in_solib_call_trampoline = hppa_linux_in_solib_call_trampoline;
   set_gdbarch_skip_trampoline_code
 	(gdbarch, hppa_linux_skip_trampoline_code);
 
Index: hppa-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/hppa-tdep.c,v
retrieving revision 1.174
diff -p -u -r1.174 hppa-tdep.c
--- hppa-tdep.c	14 Oct 2004 21:08:06 -0000	1.174
+++ hppa-tdep.c	31 Oct 2004 21:07:16 -0000
@@ -2096,9 +2096,12 @@ static const struct frame_unwind *
 hppa_stub_unwind_sniffer (struct frame_info *next_frame)
 {
   CORE_ADDR pc = frame_pc_unwind (next_frame);
+  struct gdbarch *gdbarch = get_frame_arch (next_frame);
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
   if (pc == 0
-      || IN_SOLIB_CALL_TRAMPOLINE (pc, NULL)
+      || (tdep->in_solib_call_trampoline != NULL
+	  && tdep->in_solib_call_trampoline (pc, NULL))
       || IN_SOLIB_RETURN_TRAMPOLINE (pc, NULL))
     return &hppa_stub_frame_unwind;
   return NULL;
Index: hppa-tdep.h
===================================================================
RCS file: /cvs/src/src/gdb/hppa-tdep.h,v
retrieving revision 1.13
diff -p -u -r1.13 hppa-tdep.h
--- hppa-tdep.h	7 Jun 2004 02:17:29 -0000	1.13
+++ hppa-tdep.h	31 Oct 2004 21:07:16 -0000
@@ -82,6 +82,12 @@ struct gdbarch_tdep
   /* Given a function address, try to find the global pointer for the 
      corresponding shared object.  */
   CORE_ADDR (*find_global_pointer) (struct value *);
+
+  /* For shared libraries, each call goes through a small piece of
+     trampoline code in the ".plt", or equivalent, section.
+     IN_SOLIB_CALL_TRAMPOLINE evaluates to nonzero if we are currently
+     stopped in one of these.  */
+  int (*in_solib_call_trampoline) (CORE_ADDR pc, char *name);
 };
 
 /*

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]