public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
From: pmuldoon@sourceware.org
To: archer-commits@sourceware.org
Subject: [SCM]  archer-pmuldoon-next-over-throw: Add temporary symbol lookup (needs debuginfo), and notes on starting to use FDE instead of debuginfo.
Date: Thu, 20 Nov 2008 16:25:00 -0000	[thread overview]
Message-ID: <20081120162504.2566.qmail@sourceware.org> (raw)

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.


                 reply	other threads:[~2008-11-20 16:25 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20081120162504.2566.qmail@sourceware.org \
    --to=pmuldoon@sourceware.org \
    --cc=archer-commits@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).