diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 19a66576af..44e8575341 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2014-06-24 Yao Qi + + * arm-linux-tdep.c (arm_linux_skip_trampoline_code): New. + (arm_linux_init_abi): Set skip_trampoline_code with + gdbarch_skip_trampoline_code instead of + find_solib_trampoline_target. + 2014-06-24 Yao Qi * arm-tdep.c (arm_stub_unwind_sniffer): Return 1 if diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c index 65d9084e8f..a96ea3fc94 100644 --- a/gdb/arm-linux-tdep.c +++ b/gdb/arm-linux-tdep.c @@ -1322,6 +1322,19 @@ arm_linux_syscall_record (struct regcache *regcache, unsigned long svc_number) return 0; } +/* Implement the skip_trampoline_code gdbarch method. */ + +static CORE_ADDR +arm_linux_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc) +{ + CORE_ADDR target_pc = arm_skip_stub (frame, pc); + + if (target_pc != 0) + return target_pc; + + return find_solib_trampoline_target (frame, pc); +} + static void arm_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) @@ -1387,7 +1400,7 @@ arm_linux_init_abi (struct gdbarch_info info, set_gdbarch_software_single_step (gdbarch, arm_linux_software_single_step); /* Shared library handling. */ - set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); + set_gdbarch_skip_trampoline_code (gdbarch, arm_linux_skip_trampoline_code); set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver); /* Enable TLS support. */