public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
* [SCM]  archer-pmuldoon-next-over-throw: Add temporary symbol lookup (needs debuginfo), and notes on starting to use FDE instead of debuginfo.
@ 2008-11-20 16:25 pmuldoon
  0 siblings, 0 replies; only message in thread
From: pmuldoon @ 2008-11-20 16:25 UTC (permalink / raw)
  To: archer-commits

The branch, archer-pmuldoon-next-over-throw has been updated
       via  2670d7dc0acb201c31384839639c93c8e035c2f7 (commit)
      from  227a0cb2d3e6cd768f4a64f39ead8dd36561af4d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 2670d7dc0acb201c31384839639c93c8e035c2f7
Author: Phil Muldoon <pmuldoon@redhat.com>
Date:   Thu Nov 20 16:23:53 2008 +0000

    Add temporary symbol lookup (needs debuginfo), and notes on starting to use FDE instead of debuginfo.

-----------------------------------------------------------------------

Summary of changes:
 gdb/breakpoint.c |   13 +++++++++
 gdb/unwind_notes |   73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+), 0 deletions(-)
 create mode 100644 gdb/unwind_notes

First 500 lines of diff:
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 912d7ea..d34467f 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -4446,6 +4446,9 @@ create_longjmp_breakpoint (char *func_name)
 void
 set_longjmp_breakpoint (void)
 {
+
+  struct breakpoint *terminate_bp = 0;
+  struct minimal_symbol *tm;
   if (gdbarch_get_longjmp_target_p (current_gdbarch))
     {
       create_longjmp_breakpoint ("longjmp");
@@ -4453,6 +4456,16 @@ set_longjmp_breakpoint (void)
       create_longjmp_breakpoint ("siglongjmp");
       create_longjmp_breakpoint ("_siglongjmp");
     }
+
+
+  tm = lookup_minimal_symbol ("std::terminate()", NULL, NULL); 
+  tm = lookup_minimal_symbol ("uw_install_context", NULL, NULL); 
+  tm = lookup_minimal_symbol ("uw_install_context_1", NULL, NULL); 
+  if (tm != NULL)
+	terminate_bp = set_momentary_breakpoint_at_pc
+	  (SYMBOL_VALUE_ADDRESS (tm),  bp_breakpoint);
+  else
+    printf("Cannot find uw_install_context\n");
 }
 
 /* Delete all longjmp breakpoints from THREAD.  */
diff --git a/gdb/unwind_notes b/gdb/unwind_notes
new file mode 100644
index 0000000..34ccbeb
--- /dev/null
+++ b/gdb/unwind_notes
@@ -0,0 +1,73 @@
+Breakpoint 2, _Unwind_RaiseException (exc=0x937060) at /home/pmuldoon/gcc-4.3.0/libgcc/../gcc/unwind.inc:140
+140	  uw_install_context (&this_context, &cur_context);
+Current language:  auto; currently c
+
+(pg-gdb) p this_context
+$14 = {
+  reg = {0x7fffca0ee188, 0x7fffca0ee190, 0x0, 0x7fffca0ee198, 0x0, 0x0, 0x7fffca0ee1c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffca0ee1a0, 0x7fffca0ee1a8, 
+    0x7fffca0ee1b0, 0x7fffca0ee1b8, 0x7fffca0ee1c8, 0x0}, 
+  cfa = 0x7fffca0ee1d0, 
+  ra = 0x6dc0bb, 
+  lsda = 0x0, 
+  bases = {
+    tbase = 0x0, 
+    dbase = 0x0, 
+    func = 0x129f4f
+  }, 
+  flags = 4611686018427387904, 
+  version = 0, 
+  args_size = 0, 
+  by_value = '\0' <repeats 17 times>
+}
+
+(pg-gdb) p cur_context
+$15 = {
+  reg = {0x7fffca0ee188, 0x7fffca0ee190, 0x0, 0x7fffca0ee198, 0x0, 0x0, 0x7fffca0ee220, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffca0ee1a0, 0x7fffca0ee1a8, 
+    0x7fffca0ee1b0, 0x7fffca0ee1b8, 0x7fffca0ee228, 0x0}, 
+  cfa = 0x7fffca0ee230, 
+  ra = 0x4007f2, 
+  lsda = 0x400a74, 
+  bases = {
+    tbase = 0x0, 
+    dbase = 0x0, 
+    func = 0x4007e0
+  }, 
+  flags = 4611686018427387904, 
+  version = 0, 
+  args_size = 0, 
+  by_value = '\0' <repeats 17 times>
+}
+
+(pg-gdb) bt
+#0  _Unwind_RaiseException (exc=0x937060) at /home/pmuldoon/gcc-4.3.0/libgcc/../gcc/unwind.inc:140
+#1  0x00000000006dc0bb in __cxa_throw (obj=0x937080, tinfo=0x600ce0, dest=0) at /home/pmuldoon/gcc-4.3.0/libstdc++-v3/libsupc++/eh_throw.cc:71
+#2  0x00000000004007d5 in function1 () at test_throw.cxx:4
+#3  0x00000000004007de in function2 () at test_throw.cxx:8
+#4  0x00000000004007f0 in main () at test_throw.cxx:13
+
+
+(pg-gdb) ptype cur_context
+type = struct _Unwind_Context {
+    void *reg[18];
+    void *cfa;
+    void *ra;
+    void *lsda;
+    struct dwarf_eh_bases bases;
+    _Unwind_Word flags;
+    _Unwind_Word version;
+    _Unwind_Word args_size;
+
+
+.eh_frame notes
+
+The .eh_frame contains one or more Call Frame Informations (CFI)
+records. Each CFI contains a Common Information Entry (CIE) and 1 or
+more Frame Description Entry (FDE) records.
+
+CFI -> CIE -> (n) -> FDE.
+
+Try working backwards to the FDE from the pc at the next command?
+
+static struct dwarf2_fde *
+dwarf2_frame_find_fde (CORE_ADDR *pc)
+


hooks/post-receive
--
Repository for Project Archer.


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-11-20 16:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-11-20 16:25 [SCM] archer-pmuldoon-next-over-throw: Add temporary symbol lookup (needs debuginfo), and notes on starting to use FDE instead of debuginfo pmuldoon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).