From: "Ulrich Weigand" <uweigand@de.ibm.com>
To: dan@codesourcery.com (Daniel Jacobowitz)
Cc: gdb-patches@sourceware.org, rearnsha@arm.com,
matthew.gretton-dann@arm.com
Subject: Re: [rfc/rfa] Use ARM exception tables as GDB unwinder
Date: Wed, 01 Dec 2010 16:45:00 -0000 [thread overview]
Message-ID: <201012011645.oB1GjVXw001375@d06av02.portsmouth.uk.ibm.com> (raw)
In-Reply-To: <20101021204306.GU8337@caradoc.them.org> from "Daniel Jacobowitz" at Oct 21, 2010 04:43:07 PM
Dan Jacobowitz wrote:
> On Thu, Oct 21, 2010 at 10:29:32PM +0200, Ulrich Weigand wrote:
> > Right, for C code there should be no problem. The problems I've been
> > seeing all come from *assembler* source files using the DO_CALL macro.
> > This gets CFI correct, but doesn't create any unwind records ...
>
> Oh.... yes, we could move that out of line for ARM too. I don't like
> the solution much though, because it lengthens all syscall backtraces
> unnecessarily.
>
> We're getting into the point where backtraces using the ARM unwinder
> are not useful for GDB because they're flow-insensitive. But if all
> the callers of DO_CALL don't contain any other calls, we have the
> option to record the ip = r7 save as if the syscall is the only
> possible 'call site'.
Hmm, looking at DO_CALL a bit more I think this can actually be handled
inline just fine:
#define DO_CALL(syscall_name, args) \
DOARGS_##args; \
mov ip, r7; \
cfi_register (r7, ip); \
ldr r7, =SYS_ify (syscall_name); \
swi 0x0; \
mov r7, ip; \
cfi_restore (r7); \
UNDOARGS_##args
Note the calls to DOARGS_... / UNDOARGS_..., which actually save and
restore registers on the stack anyway (just not r7). Why not simply
have (a variant) of [UN]DOARGS_... save r7 to the stack, and then
provide both correct CFI and ARM unwind records for it? [ Saving
to IP would then be no longer necessary. ]
Am I missing something here?
Bye,
Ulrich
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com
next prev parent reply other threads:[~2010-12-01 16:45 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-20 0:01 Ulrich Weigand
2010-10-20 11:14 ` Matthew Gretton-Dann
2010-10-21 15:39 ` Ulrich Weigand
2010-10-20 13:27 ` Daniel Jacobowitz
2010-10-21 15:51 ` Ulrich Weigand
2010-10-21 16:02 ` Daniel Jacobowitz
2010-10-21 18:26 ` Ulrich Weigand
2010-10-21 18:42 ` Daniel Jacobowitz
2010-10-21 20:29 ` Ulrich Weigand
2010-10-21 20:43 ` Daniel Jacobowitz
2010-12-01 16:45 ` Ulrich Weigand [this message]
2010-12-12 4:21 ` Daniel Jacobowitz
2010-12-12 12:24 ` Andreas Schwab
2011-03-09 19:11 ` Ulrich Weigand
2011-03-11 22:35 ` Daniel Jacobowitz
2011-03-19 4:25 ` Ulrich Weigand
2011-03-21 14:51 ` Daniel Jacobowitz
2011-03-21 20:06 ` Ulrich Weigand
2010-10-21 22:26 ` Ulrich Weigand
2010-10-26 13:43 ` Daniel Jacobowitz
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=201012011645.oB1GjVXw001375@d06av02.portsmouth.uk.ibm.com \
--to=uweigand@de.ibm.com \
--cc=dan@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=matthew.gretton-dann@arm.com \
--cc=rearnsha@arm.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).