From: Tom Tromey <tromey@redhat.com>
To: Pedro Alves <pedro@codesourcery.com>
Cc: gdb-patches@sourceware.org, Daniel Jacobowitz <drow@false.org>,
Joel Brobecker <brobecker@adacore.com>
Subject: Re: RFC: next/finish/etc -vs- exceptions
Date: Wed, 10 Jun 2009 18:32:00 -0000 [thread overview]
Message-ID: <m3tz2oeyd8.fsf@fleche.redhat.com> (raw)
In-Reply-To: <200906101848.04782.pedro@codesourcery.com> (Pedro Alves's message of "Wed\, 10 Jun 2009 18\:48\:04 +0100")
>>>>> "Pedro" == Pedro Alves <pedro@codesourcery.com> writes:
Pedro> Oh, C++ exceptions across signals, neat. Didn't think of that.
Does that work if you specify a signal stack?
I don't know.
Pedro> Other than the cross-arch exceptions, I was thinking of things
Pedro> like using longjmp for continuations and coroutines, and tricks
Pedro> like that. There may be clever ways to do such things with C++
Pedro> exceptions, I don't know then.
I don't think so. But I am prepared to be surprised.
Pedro> Anyway, not wanting to finger-point I was refering to things like
Pedro> these in the patch:
Pedro> + /* We use the current stack pointer and not the CFA here,
Pedro> + because the unwinder seems to compute the callee's CFA, and
Pedro> + so the breakpoint does not trigger. */
Pedro> + stack_ptr = get_frame_sp (frame);
This is bogus, btw, because for the comparison to work properly we
must compute the Dwarf CFA. There's currently no way that I know of
to do this, so presumably some kind of extension to the frame API will
be needed.
Pedro> + if (!nexting_cfa
Pedro> + || gdbarch_inner_than (arch, cfa, nexting_cfa))
Pedro> + {
Pedro> + /* Not an interesting exception. */
Pedro> + break;
Pedro> + }
Pedro> Which I guessed should be using frame_id comparisions, and
Pedro> something other than gdbarch_inner_than, frame_find_by_id perhaps
Pedro> (that does require a well behaved unwinder). I'm not much
Pedro> an expert on C++ unwinding, and haven't really studied the patch,
Pedro> so I don't exactly what is being compared here.
The intent is to compare the "next"ing frame with the target frame of
the exception. Exceptions throw up to or past the nexting frame
should be caught be gdb.
I don't see how this works for longjmp. From the code it looks like
any longjmp is caught... is that the case? I assume I'm missing
something, would you mind point it out?
I suppose the failing case for exception unwinding is if the inferior
stops in a signal handler on a separate stack, then the user "next"s
over a throw in that handler. Does that sound correct?
Thanks for the hint about frame_id comparisons. I will look into
that.
Tom
next prev parent reply other threads:[~2009-06-10 18:32 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-29 22:32 Tom Tromey
2009-05-30 21:08 ` Doug Evans
2009-05-30 23:18 ` Tom Tromey
2009-06-10 16:13 ` Joel Brobecker
2009-06-10 16:50 ` Tom Tromey
2009-06-10 17:05 ` Pedro Alves
2009-06-10 17:13 ` Daniel Jacobowitz
2009-06-10 17:47 ` Pedro Alves
2009-06-10 18:32 ` Tom Tromey [this message]
2009-06-10 18:49 ` Pedro Alves
2009-06-12 20:49 ` Tom Tromey
2009-06-12 21:51 ` Pedro Alves
2009-06-12 22:07 ` Pedro Alves
2010-11-25 4:54 ` Jan Kratochvil
2009-06-11 14:45 ` Joel Brobecker
2009-06-11 15:47 ` Tom Tromey
2009-07-24 17:38 ` Tom Tromey
2009-07-24 18:54 ` Pedro Alves
2009-07-24 19:18 ` Tom Tromey
2009-09-09 18:56 ` Tom Tromey
2010-10-07 1:37 Tom Tromey
2010-11-24 17:53 ` Joel Brobecker
2010-11-24 18:24 ` Tom Tromey
2010-11-25 7:59 ` Jan Kratochvil
2010-11-27 17:25 ` Doug Evans
2010-11-28 8:29 ` Joel Brobecker
2010-11-30 16:43 ` Tom Tromey
2010-11-30 17:02 ` Jan Kratochvil
2010-11-30 17:15 ` Phil Muldoon
2010-11-30 20:15 ` Tom Tromey
2010-12-01 13:42 ` Jan Kratochvil
2010-12-01 21:40 ` Tom Tromey
2010-11-30 18:23 ` Tom Tromey
2010-11-30 18:55 ` Tom Tromey
2010-12-02 15:32 ` Tom Tromey
2010-12-09 16:37 ` Tom Tromey
2010-12-10 4:52 ` Jan Kratochvil
2010-12-10 20:07 ` Tom Tromey
2010-12-11 5:27 ` Jan Kratochvil
2010-12-15 21:18 ` Tom Tromey
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=m3tz2oeyd8.fsf@fleche.redhat.com \
--to=tromey@redhat.com \
--cc=brobecker@adacore.com \
--cc=drow@false.org \
--cc=gdb-patches@sourceware.org \
--cc=pedro@codesourcery.com \
/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