* m68k-tdep.c (m68k_register_raw_size): Remove cast.
authorAndreas Schwab <schwab@linux-m68k.org>
Sun, 25 May 2003 18:50:55 +0000 (18:50 +0000)
committerAndreas Schwab <schwab@linux-m68k.org>
Sun, 25 May 2003 18:50:55 +0000 (18:50 +0000)
(m68k_register_virtual_size): Likewise.
(altos_skip_prologue): Remove obsolete function.
(isi_frame_num_args): Likewise.
(news_frame_num_args): Likewise.
(m68k_fix_call_dummy): Make static.
(m68k_push_dummy_frame): Likewise.
(m68k_pop_frame): Likewise.
(m68k_skip_prologue): Likewise.
(m68k_frame_init_saved_regs): Likewise.
(m68k_saved_pc_after_call): Likewise.
(m68k_get_longjmp_target): Make multi-arch.
(m68k_gdbarch_init): Allocate and initialize gdbarch_tdep
structure.  Register m68k_get_longjmp_target if enabled.
* m68k-tdep.h (struct gdbarch_tdep): Define.
* config/m68k/tm-m68k.h: Don't include "regcache.h".

* Makefile.in (config.status): Also depend on configure.tgt
and configure.host.
(m68klinux-tdep.o): Update dependencies.
* configure.tgt (m68*-*-linux*): Set gdb_multi_arch to 1.
* m68klinux-tdep.c (M68K_LINUX_JB_ELEMENT_SIZE): Define.
(M68K_LINUX_JB_PC): Define.
(m68k_linux_pc_in_sigtramp): Renamed from m68k_linux_in_sigtramp
and take additional parameter.
(m68k_linux_sigtramp_saved_pc): Update.
(m68k_linux_init_abi): Set jb_pc and jb_elt_size.  Register
m68k_linux_pc_in_sigtramp, in_plt_section,
find_solib_trampoline_target.
* config/m68k/tm-linux.h: Don't include any tm headers.
(START_INFERIOR_TRAPS_EXPECTED): Remove definition.
(JB_ELEMENT_SIZE): Likewise.
(JB_PC): Likewise.
(GET_LONGJMP_TARGET): Likewise.
(IN_SIGTRAMP): Likewise.
(SVR4_SHARED_LIBS): Define this and include "solib.h".

gdb/ChangeLog
gdb/Makefile.in
gdb/config/m68k/tm-linux.h
gdb/config/m68k/tm-m68k.h
gdb/configure.tgt
gdb/m68k-tdep.c
gdb/m68k-tdep.h
gdb/m68klinux-tdep.c

index f9ba05c71f57d165be42ccc00725d176e81203ed..3d478b3cfef42c245bad60be66bbdb09595d2cc4 100644 (file)
@@ -1,3 +1,42 @@
+2003-05-25  Andreas Schwab  <schwab@suse.de>
+
+       * m68k-tdep.c (m68k_register_raw_size): Remove cast.
+       (m68k_register_virtual_size): Likewise.
+       (altos_skip_prologue): Remove obsolete function.
+       (isi_frame_num_args): Likewise.
+       (news_frame_num_args): Likewise.
+       (m68k_fix_call_dummy): Make static.
+       (m68k_push_dummy_frame): Likewise.
+       (m68k_pop_frame): Likewise.
+       (m68k_skip_prologue): Likewise.
+       (m68k_frame_init_saved_regs): Likewise.
+       (m68k_saved_pc_after_call): Likewise.
+       (m68k_get_longjmp_target): Make multi-arch.
+       (m68k_gdbarch_init): Allocate and initialize gdbarch_tdep
+       structure.  Register m68k_get_longjmp_target if enabled.
+       * m68k-tdep.h (struct gdbarch_tdep): Define.
+       * config/m68k/tm-m68k.h: Don't include "regcache.h".
+
+       * Makefile.in (config.status): Also depend on configure.tgt
+       and configure.host.
+       (m68klinux-tdep.o): Update dependencies.
+       * configure.tgt (m68*-*-linux*): Set gdb_multi_arch to 1.
+       * m68klinux-tdep.c (M68K_LINUX_JB_ELEMENT_SIZE): Define.
+       (M68K_LINUX_JB_PC): Define.
+       (m68k_linux_pc_in_sigtramp): Renamed from m68k_linux_in_sigtramp
+       and take additional parameter.
+       (m68k_linux_sigtramp_saved_pc): Update.
+       (m68k_linux_init_abi): Set jb_pc and jb_elt_size.  Register
+       m68k_linux_pc_in_sigtramp, in_plt_section,
+       find_solib_trampoline_target.
+       * config/m68k/tm-linux.h: Don't include any tm headers.
+       (START_INFERIOR_TRAPS_EXPECTED): Remove definition.
+       (JB_ELEMENT_SIZE): Likewise.
+       (JB_PC): Likewise.
+       (GET_LONGJMP_TARGET): Likewise.
+       (IN_SIGTRAMP): Likewise.
+       (SVR4_SHARED_LIBS): Define this and include "solib.h".
+
 2003-05-25  Mark Kettenis  <kettenis@gnu.org>
 
        * sparc-tdep.c (sparc32_do_push_arguments): New function.
index c4f1d38b02a08cb1143cae2a6f2aac89c121805c..c52eadccfc1769cb15eb98ec0b93a7caeb4861ce 100644 (file)
@@ -1157,7 +1157,7 @@ config.h: stamp-h ; @true
 stamp-h: config.in config.status
        CONFIG_HEADERS=config.h:config.in $(SHELL) config.status
 
-config.status: configure
+config.status: configure configure.tgt configure.host
        $(SHELL) config.status --recheck
 
 force:
@@ -1923,7 +1923,8 @@ m68klinux-nat.o: m68klinux-nat.c $(defs_h) $(frame_h) $(inferior_h) \
        $(language_h) $(gdbcore_h) $(gdb_string_h) $(regcache_h) \
        $(m68k_tdep_h) $(gdb_stat_h) $(floatformat_h) $(target_h)
 m68klinux-tdep.o: m68klinux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \
-       $(target_h) $(gdb_string_h) $(gdbtypes_h) $(osabi_h) $(m68k_tdep_t)
+       $(target_h) $(gdb_string_h) $(gdbtypes_h) $(osabi_h) $(regcache_h) \
+       $(objfiles_h) $(symtab_h) $(m68k_tdep_t)
 m68knbsd-nat.o: m68knbsd-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
        $(regcache_h)
 m68knbsd-tdep.o: m68knbsd-tdep.c $(defs_h) $(gdbtypes_h) $(regcache_h)
index 636df0bb7338ea94563f0d99bea98f6244565c60..fc191b16404cc9ec41ae52ee9f9babb3a14ce229 100644 (file)
    Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include "config/tm-linux.h"
-#include "m68k/tm-m68k.h"
-
-#include "regcache.h"
-
-/* Number of traps that happen between exec'ing the shell to run an
-   inferior, and when we finally get to the inferior code.  This is 2
-   on most implementations.  */
-
-#define START_INFERIOR_TRAPS_EXPECTED 2
-
-/* Offsets (in target ints) into jmp_buf.  */
-
-#define JB_ELEMENT_SIZE 4
-#define JB_PC 7
-
-/* Figure out where the longjmp will land.  Slurp the args out of the stack.
-   We expect the first arg to be a pointer to the jmp_buf structure from which
-   we extract the pc (JB_PC) that we will land at.  The pc is copied into ADDR.
-   This routine returns true on success */
-
-#define GET_LONGJMP_TARGET(ADDR) m68k_get_longjmp_target(ADDR)
-
-#define IN_SIGTRAMP(pc,name) m68k_linux_in_sigtramp (pc)
-extern int m68k_linux_in_sigtramp (CORE_ADDR pc);
+/* We define SVR4_SHARED_LIBS unconditionally, on the assumption that
+   link.h is available on all linux platforms.  For I386 and SH3/4, 
+   we hard-code the information rather than use link.h anyway (for 
+   the benefit of cross-debugging).  We may move to doing that for
+   other architectures as well.  */
+
+#define SVR4_SHARED_LIBS
+#include "solib.h"             /* Support for shared libraries. */
index cb72c982f809c4f7200b4838434b4c78a9ce8299..f773428a2f0188bee0dc46f478bd3052842f8d68 100644 (file)
@@ -1,6 +1,6 @@
 /* Parameters for execution on a 68000 series machine.
    Copyright 1986, 1987, 1989, 1990, 1992, 1993, 1994, 1995, 1996, 1998,
-   1999, 2000 Free Software Foundation, Inc.
+   1999, 2000, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -19,8 +19,6 @@
    Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include "regcache.h"
-
 #define GDB_MULTI_ARCH GDB_MULTI_ARCH_PARTIAL
 
 extern int m68k_get_longjmp_target (CORE_ADDR *);
index fe4cc5d485677c10e817cd180f3e9d55de1a0b2f..955b3a47a6985071dc752bb3c20b2e9751b63c74 100644 (file)
@@ -130,6 +130,7 @@ m68*-*-aout*)               gdb_target=monitor ;;
 m68*-*-coff*)          gdb_target=monitor ;;
 m68*-*-elf*)           gdb_target=monitor ;;
 m68*-*-linux*)         gdb_target=linux
+                       gdb_multi_arch=1
                        build_gdbserver=yes
                        ;;
 m68*-*-lynxos*)                gdb_target=m68klynx ;;
index 087d0bb263342b4f5324bede9108508ed88fb4d5..81973a1d76960aec2544d44a20d80227ad422738 100644 (file)
 #endif
 
 
-void m68k_frame_init_saved_regs (struct frame_info *frame_info);
+static void m68k_frame_init_saved_regs (struct frame_info *frame_info);
 
 
 /* gdbarch_breakpoint_from_pc is set to m68k_local_breakpoint_from_pc
    so m68k_remote_breakpoint_from_pc is currently not used.  */
 
-const static unsigned char *
+static const unsigned char *
 m68k_remote_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
 {
   static unsigned char break_insn[] = {0x4e, (0x40 | REMOTE_BPT_VECTOR)};
@@ -91,7 +91,7 @@ m68k_remote_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
   return break_insn;
 }
 
-const static unsigned char *
+static const unsigned char *
 m68k_local_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
 {
   static unsigned char break_insn[] = {0x4e, (0x40 | BPT_VECTOR)};
@@ -110,13 +110,11 @@ m68k_register_bytes_ok (long numbytes)
 /* Number of bytes of storage in the actual machine representation
    for register regnum.  On the 68000, all regs are 4 bytes
    except the floating point regs which are 12 bytes.  */
-/* Note that the unsigned cast here forces the result of the
-   subtraction to very high positive values if regnum < FP0_REGNUM */
 
 static int
 m68k_register_raw_size (int regnum)
 {
-  return (((unsigned) (regnum) - FP0_REGNUM) < 8 ? 12 : 4);
+  return (regnum >= FP0_REGNUM && regnum < FP0_REGNUM + 8 ? 12 : 4);
 }
 
 /* Number of bytes of storage in the program's representation
@@ -126,7 +124,7 @@ m68k_register_raw_size (int regnum)
 static int
 m68k_register_virtual_size (int regnum)
 {
-  return (((unsigned) (regnum) - FP0_REGNUM) < 8 ? 12 : 4);
+  return (regnum >= FP0_REGNUM && regnum < FP0_REGNUM + 8 ? 12 : 4);
 }
 
 /* Return the GDB type object for the "standard" data type of data in
@@ -296,28 +294,6 @@ m68k_frame_saved_pc (struct frame_info *frame)
 }
 
 
-/* The only reason this is here is the tm-altos.h reference below.  It
-   was moved back here from tm-m68k.h.  FIXME? */
-
-extern CORE_ADDR
-altos_skip_prologue (CORE_ADDR pc)
-{
-  register int op = read_memory_unsigned_integer (pc, 2);
-  if (op == P_LINKW_FP)
-    pc += 4;                   /* Skip link #word */
-  else if (op == P_LINKL_FP)
-    pc += 6;                   /* Skip link #long */
-  /* Not sure why branches are here.  */
-  /* From tm-altos.h */
-  else if (op == 0060000)
-    pc += 4;                   /* Skip bra #word */
-  else if (op == 00600377)
-    pc += 6;                   /* skip bra #long */
-  else if ((op & 0177400) == 0060000)
-    pc += 2;                   /* skip bra #char */
-  return pc;
-}
-
 int
 delta68_in_sigtramp (CORE_ADDR pc, char *name)
 {
@@ -353,31 +329,6 @@ delta68_frame_saved_pc (struct frame_info *frame_info)
                                       + 4, 4);
 }
 
-/* Return number of args passed to a frame.
-   Can return -1, meaning no way to tell.  */
-
-int
-isi_frame_num_args (struct frame_info *fi)
-{
-  int val;
-  CORE_ADDR pc = DEPRECATED_FRAME_SAVED_PC (fi);
-  int insn = read_memory_unsigned_integer (pc, 2);
-  val = 0;
-  if (insn == 0047757 || insn == 0157374)      /* lea W(sp),sp or addaw #W,sp */
-    val = read_memory_integer (pc + 2, 2);
-  else if ((insn & 0170777) == 0050217 /* addql #N, sp */
-          || (insn & 0170777) == 0050117)      /* addqw */
-    {
-      val = (insn >> 9) & 7;
-      if (val == 0)
-       val = 8;
-    }
-  else if (insn == 0157774)    /* addal #WW, sp */
-    val = read_memory_integer (pc + 2, 4);
-  val >>= 2;
-  return val;
-}
-
 int
 delta68_frame_num_args (struct frame_info *fi)
 {
@@ -400,33 +351,11 @@ delta68_frame_num_args (struct frame_info *fi)
   return val;
 }
 
-int
-news_frame_num_args (struct frame_info *fi)
-{
-  int val;
-  CORE_ADDR pc = DEPRECATED_FRAME_SAVED_PC (fi);
-  int insn = read_memory_unsigned_integer (pc, 2);
-  val = 0;
-  if (insn == 0047757 || insn == 0157374)      /* lea W(sp),sp or addaw #W,sp */
-    val = read_memory_integer (pc + 2, 2);
-  else if ((insn & 0170777) == 0050217 /* addql #N, sp */
-          || (insn & 0170777) == 0050117)      /* addqw */
-    {
-      val = (insn >> 9) & 7;
-      if (val == 0)
-       val = 8;
-    }
-  else if (insn == 0157774)    /* addal #WW, sp */
-    val = read_memory_integer (pc + 2, 4);
-  val >>= 2;
-  return val;
-}
-
 /* Insert the specified number of args and function address
    into a call sequence of the above form stored at DUMMYNAME.
    We use the BFD routines to store a big-endian value of known size.  */
 
-void
+static void
 m68k_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs,
                     struct value **args, struct type *type, int gcc_p)
 {
@@ -438,7 +367,7 @@ m68k_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs,
 
 /* Push an empty stack frame, to record the current PC, etc.  */
 
-void
+static void
 m68k_push_dummy_frame (void)
 {
   register CORE_ADDR sp = read_register (SP_REGNUM);
@@ -468,7 +397,7 @@ m68k_push_dummy_frame (void)
 /* Discard from the stack the innermost frame,
    restoring all saved registers.  */
 
-void
+static void
 m68k_pop_frame (void)
 {
   register struct frame_info *frame = get_current_frame ();
@@ -539,7 +468,7 @@ m68k_pop_frame (void)
 
  */
 
-CORE_ADDR
+static CORE_ADDR
 m68k_skip_prologue (CORE_ADDR ip)
 {
   register CORE_ADDR limit;
@@ -580,7 +509,7 @@ m68k_skip_prologue (CORE_ADDR ip)
    ways in the stack frame.  sp is even more special:
    the address we return for it IS the sp for the next frame.  */
 
-void
+static void
 m68k_frame_init_saved_regs (struct frame_info *frame_info)
 {
   register int regnum;
@@ -905,17 +834,19 @@ fill_fpregset (fpregset_t *fpregsetp, int regno)
    we extract the pc (JB_PC) that we will land at.  The pc is copied into PC.
    This routine returns true on success. */
 
-/* NOTE: cagney/2000-11-08: For this function to be fully multi-arched
-   the macro's JB_PC and JB_ELEMENT_SIZE would need to be moved into
-   the ``struct gdbarch_tdep'' object and then set on a target ISA/ABI
-   dependant basis. */
-
 int
 m68k_get_longjmp_target (CORE_ADDR *pc)
 {
-#if defined (JB_PC) && defined (JB_ELEMENT_SIZE)
   char *buf;
   CORE_ADDR sp, jb_addr;
+  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+
+  if (tdep->jb_pc < 0)
+    {
+      internal_error (__FILE__, __LINE__,
+                     "m68k_get_longjmp_target: not implemented");
+      return 0;
+    }
 
   buf = alloca (TARGET_PTR_BIT / TARGET_CHAR_BIT);
   sp = read_register (SP_REGNUM);
@@ -926,18 +857,12 @@ m68k_get_longjmp_target (CORE_ADDR *pc)
 
   jb_addr = extract_address (buf, TARGET_PTR_BIT / TARGET_CHAR_BIT);
 
-  if (target_read_memory (jb_addr + JB_PC * JB_ELEMENT_SIZE, buf,
+  if (target_read_memory (jb_addr + tdep->jb_pc * tdep->jb_elt_size, buf,
                          TARGET_PTR_BIT / TARGET_CHAR_BIT))
     return 0;
 
   *pc = extract_address (buf, TARGET_PTR_BIT / TARGET_CHAR_BIT);
-
   return 1;
-#else
-  internal_error (__FILE__, __LINE__,
-                 "m68k_get_longjmp_target: not implemented");
-  return 0;
-#endif
 }
 
 /* Immediately after a function call, return the saved pc before the frame
@@ -945,7 +870,7 @@ m68k_get_longjmp_target (CORE_ADDR *pc)
    system call, and if so, we know that Sun pushes the call # on the stack
    prior to doing the trap. */
 
-CORE_ADDR
+static CORE_ADDR
 m68k_saved_pc_after_call (struct frame_info *frame)
 {
 #ifdef SYSCALL_TRAP
@@ -979,11 +904,8 @@ m68k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   if (arches != NULL)
     return (arches->gdbarch);
 
-#if 0
-  tdep = (struct gdbarch_tdep *) xmalloc (sizeof (struct gdbarch_tdep));
-#endif
-  gdbarch = gdbarch_alloc (&info, 0);
+  tdep = xmalloc (sizeof (struct gdbarch_tdep));
+  gdbarch = gdbarch_alloc (&info, tdep);
 
   /* NOTE: cagney/2002-12-06: This can be deleted when this arch is
      ready to unwind the PC first (see frame.c:get_prev_frame()).  */
@@ -1053,9 +975,22 @@ m68k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   /* Should be using push_dummy_call.  */
   set_gdbarch_deprecated_dummy_write_sp (gdbarch, generic_target_write_sp);
 
+#if defined JB_PC && defined JB_ELEMENT_SIZE
+  tdep->jb_pc = JB_PC;
+  tdep->jb_elt_size = JB_ELEMENT_SIZE;
+#else
+  tdep->jb_pc = -1;
+#endif
+
   /* Hook in ABI-specific overrides, if they have been registered.  */
   gdbarch_init_osabi (info, gdbarch);
 
+  /* Now we have tuned the configuration, set a few final things,
+     based on what the OS ABI has told us.  */
+
+  if (tdep->jb_pc >= 0)
+    set_gdbarch_get_longjmp_target (gdbarch, m68k_get_longjmp_target);
+
   return gdbarch;
 }
 
@@ -1063,7 +998,10 @@ m68k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 static void
 m68k_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
 {
+  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
 
+  if (tdep == NULL)
+    return;
 }
 
 void
index 8da568e6e27633b3f883d924e7c3cb7f07a7f219..7c499a73ca949a9560b010fdaa77650d2dad55fd 100644 (file)
@@ -1,5 +1,5 @@
 /* Common target dependent code for the Motorola 68000 series.
-   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001, 2003
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -44,4 +44,14 @@ enum
   M68K_FPI_REGNUM = 28
 };
 
+/* Target-dependent structure in gdbarch.  */
+struct gdbarch_tdep
+{
+  /* Offset to PC value in the jump buffer.  If this is negative,
+     longjmp support will be disabled.  */
+  int jb_pc;
+  /* The size of each entry in the jump buffer.  */
+  size_t jb_elt_size;
+};
+
 #endif /* M68K_TDEP_H */
index 8b9193d2cc3b57826bd7d634dfc77844ab7e5920..612f9fd5d9dfc92b9b316f7df09531a8850e0cf6 100644 (file)
 #include "gdb_string.h"
 #include "gdbtypes.h"
 #include "osabi.h"
+#include "regcache.h"
+#include "objfiles.h"
+#include "symtab.h"
 #include "m68k-tdep.h"
 \f
+/* Offsets (in target ints) into jmp_buf.  */
+
+#define M68K_LINUX_JB_ELEMENT_SIZE 4
+#define M68K_LINUX_JB_PC 7
+
 /* Check whether insn1 and insn2 are parts of a signal trampoline.  */
 
 #define IS_SIGTRAMP(insn1, insn2)                                      \
@@ -47,8 +55,8 @@
    of m68k_linux_frame_saved_pc we also distinguish between non-RT and RT
    signal trampolines.  */
 
-int
-m68k_linux_in_sigtramp (CORE_ADDR pc)
+static int
+m68k_linux_pc_in_sigtramp (CORE_ADDR pc, char *name)
 {
   CORE_ADDR sp;
   char buf[12];
@@ -110,7 +118,7 @@ m68k_linux_sigtramp_saved_pc (struct frame_info *frame)
 
   /* Don't cause a memory_error when accessing sigcontext in case the
      stack layout has changed or the stack is corrupt.  */
-  if (m68k_linux_in_sigtramp (get_frame_pc (frame)) == 2)
+  if (m68k_linux_pc_in_sigtramp (get_frame_pc (frame), 0) == 2)
     target_read_memory (sigcontext_addr + UCONTEXT_PC_OFFSET, buf, ptrbytes);
   else
     target_read_memory (sigcontext_addr + SIGCONTEXT_PC_OFFSET, buf, ptrbytes);
@@ -189,6 +197,11 @@ m68k_linux_extract_struct_value_address (char *regbuf)
 static void
 m68k_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+  tdep->jb_pc = M68K_LINUX_JB_PC;
+  tdep->jb_elt_size = M68K_LINUX_JB_ELEMENT_SIZE;
+
   set_gdbarch_deprecated_frame_saved_pc (gdbarch,
                                         m68k_linux_frame_saved_pc);
   set_gdbarch_deprecated_extract_return_value (gdbarch,
@@ -197,6 +210,12 @@ m68k_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
                                             m68k_linux_store_return_value);
   set_gdbarch_deprecated_extract_struct_value_address (gdbarch,
                                                       m68k_linux_extract_struct_value_address);
+
+  set_gdbarch_pc_in_sigtramp (gdbarch, m68k_linux_pc_in_sigtramp);
+
+  /* Shared library handling.  */
+  set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section);
+  set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
 }
 
 void