Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/gpl3/gdb/dist/gdb Add a skip_solib_resolver, from R...



details:   https://anonhg.NetBSD.org/src/rev/4828eca09f0d
branches:  trunk
changeset: 348610:4828eca09f0d
user:      martin <martin%NetBSD.org@localhost>
date:      Sat Oct 29 17:02:06 2016 +0000

description:
Add a skip_solib_resolver, from Rin Okuyama, fixes single stepping for
shared binaries.

diffstat:

 external/gpl3/gdb/dist/gdb/alphanbsd-tdep.c |  15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diffs (39 lines):

diff -r d51d62c8b7a3 -r 4828eca09f0d external/gpl3/gdb/dist/gdb/alphanbsd-tdep.c
--- a/external/gpl3/gdb/dist/gdb/alphanbsd-tdep.c       Sat Oct 29 10:56:57 2016 +0000
+++ b/external/gpl3/gdb/dist/gdb/alphanbsd-tdep.c       Sat Oct 29 17:02:06 2016 +0000
@@ -22,6 +22,7 @@
 #include "defs.h"
 #include "frame.h"
 #include "gdbcore.h"
+#include "objfiles.h"
 #include "osabi.h"
 #include "regcache.h"
 #include "regset.h"
@@ -36,6 +37,19 @@
 #include "tramp-frame.h"
 #include "target.h"
 
+/* from obsd-tdep.c with symbol name adjusted to ours */
+static CORE_ADDR
+alphanbsd_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
+{
+  struct bound_minimal_symbol msym;
+
+  msym = lookup_minimal_symbol("_rtld_bind_start", NULL, NULL);
+  if (msym.minsym && BMSYMBOL_VALUE_ADDRESS (msym) == pc)
+    return frame_unwind_caller_pc (get_current_frame ());
+  else
+    return find_solib_trampoline_target (get_current_frame (), pc);
+}
+
 /* Core file support.  */
 
 /* Even though NetBSD/alpha used ELF since day one, it used the
@@ -333,6 +347,7 @@
   /* NetBSD/alpha has SVR4-style shared libraries.  */
   set_solib_svr4_fetch_link_map_offsets
     (gdbarch, svr4_lp64_fetch_link_map_offsets);
+  set_gdbarch_skip_solib_resolver (gdbarch, alphanbsd_skip_solib_resolver);
 
 #ifdef notyet
   tdep->dynamic_sigtramp_offset = alphanbsd_sigtramp_offset;



Home | Main Index | Thread Index | Old Index