Mirror of the gdb mailing list
 help / color / mirror / Atom feed
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



  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