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: linkBe 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).