From: Andrew Cagney <ac131313@redhat.com>
To: Richard Henderson <rth@redhat.com>
Cc: Michal Ludvig <mludvig@suse.cz>,
Daniel Jacobowitz <drow@mvista.com>, gdb <gdb@sources.redhat.com>
Subject: Re: [testsuite & dwarf2] How to handle store.exp failure on AMD64?
Date: Wed, 13 Aug 2003 14:39:00 -0000 [thread overview]
Message-ID: <3F3A4DAD.7000702@redhat.com> (raw)
In-Reply-To: <20030813045405.GB11912@redhat.com>
> On Tue, Aug 12, 2003 at 11:54:32PM -0400, Andrew Cagney wrote:
>
>> I would have expected the CIE.INITIAL_INSTRUCTIONS to specify the
>> default state of all DWARF2 registers, and not just a select few.
>
>
> Folks already complain unwind info is too large.
Sounds like a furphy, the difference really is in the noise.
> As I said, GCC's unwinder assumes DW_CFA_same_value unless otherwise
> stated. Since scratch registers aren't live across the call, it
> doesn't matter that we don't mark registers DW_CFA_undefined; any
> (accurate) debug information you'll find at the call site in the
> caller simply won't say that values are live in those registers.
> Anything else would be a bug.
>
> So assuming DW_CFA_same_value produces the most compact representation.
Hmm, an important detail I should have re-iterated (Daniel's original
post mentioned it but it appears to been lost in that exchange). The
unwind info is in two parts:
CIE: This is a global structure shared between many many FDEs
FDE: This is the thing that describes an unwind table.
The initial status of each register is drawn from the CIE, and not the
FDE. In the case of the example in question (store.c) there are 3 CIEs
(I halved everthing as .eh_frame makes the info appear twice) and 30
FDEs. Breaking it down: 1 CIE appears to have 0 references; 1 has 1
reference; and 1 (the only real one) has the remaining 29 references.
At worst GCC would need to add the information to 3 CIEs, at best 1.
If GCC is going to move forward with optimizations that involve local
functions not complying to the ABI, it will need to supply complete
INITIAL_INSTRUCTIONS information. Might as well fix this bug and start
doing it now.
Andrew
next prev parent reply other threads:[~2003-08-13 14:39 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-08-07 8:49 Michal Ludvig
2003-08-07 13:50 ` Daniel Jacobowitz
2003-08-07 14:58 ` Andrew Cagney
2003-08-07 15:02 ` Daniel Jacobowitz
2003-08-07 15:53 ` Andrew Cagney
2003-08-07 21:40 ` Michal Ludvig
2003-08-13 3:54 ` Andrew Cagney
2003-08-13 4:54 ` Richard Henderson
2003-08-13 14:39 ` Andrew Cagney [this message]
2003-08-13 16:50 ` Richard Henderson
2003-08-13 18:23 ` Andrew Cagney
2003-08-13 23:35 ` Richard Henderson
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=3F3A4DAD.7000702@redhat.com \
--to=ac131313@redhat.com \
--cc=drow@mvista.com \
--cc=gdb@sources.redhat.com \
--cc=mludvig@suse.cz \
--cc=rth@redhat.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