Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <dan@codesourcery.com>
To: Keith Seitz <keiths@redhat.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFA 2/4] dwarf2_physname
Date: Wed, 03 Feb 2010 02:46:00 -0000	[thread overview]
Message-ID: <20100203024553.GA22235@caradoc.them.org> (raw)
In-Reply-To: <4B68B400.3030407@redhat.com>

On Tue, Feb 02, 2010 at 03:23:44PM -0800, Keith Seitz wrote:
> To elaborate on #2:
> 
> Consider the following class:
> 
> class A
> {
> public:
>  static const int a_constant = 3;
> };
> 
> int
> main (int argc, char* argv[])
> {
>   return A::a_constant;
> }
> 
> Gcc will *NOT* output anything about A::a_constant *except* for a
> DW_TAG_variable describing it (DW_AT_name = "a_constant"). No
> DW_AT_specification (as I think there should be). In fact,
> DW_TAG_class_type for A is completely omitted. The only clue that gdb
> gets (either dwarf2_physname or CVS HEAD) is in
> DW_AT_MIPS_linkage_name. This is obviously a gcc bug.

It's not obvious that it's a bug.  I believe you need to declare the
constant again, outside of the class, for it to be really 'defined'.
This trips people up all the time.  (Including me, so don't trust me
too much.)  e.g. it won't have the correct external linkage it's
supposed to have.

> Or maybe I'm simply not answering your question? [A kind of
> forest/tree thing...]

You're right, we're talking past each other.

I don't doubt that what you've got is correctly identifying and
handling GCC's output.  But it does so by pattern matching on what GCC
currently emits, not by using tests that are sound according to the
standard.  So with some future GCC, or some other non-GCC compiler,
it will probably fall down.

I don't believe that most of GCC's uses of DW_AT_specification are
required by the standard.  And I don't think they're the only valid
uses of DW_AT_specification.  So keying off whether that attribute is
present is too 'fuzzy' for me.

I'm asking for you to either convince me that my assumptions in the
previous paragraph are incorrect, or to find some way that the
standard will support to answer the same query about the properties of
the DW_TAG_variable DIE.  For instance, should we find the DIE's
logical location the same way determine_prefix does (parent, or
specification's parent) and then draw some conclusion based on
the type of the logical parent?

-- 
Daniel Jacobowitz
CodeSourcery


  parent reply	other threads:[~2010-02-03  2:46 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-20 21:20 Keith Seitz
2009-11-20 22:10 ` Daniel Jacobowitz
2009-11-21  0:04   ` Tom Tromey
2009-11-21  3:46     ` Frank Ch. Eigler
2009-11-23 18:06       ` Tom Tromey
2009-11-23 19:00         ` Daniel Jacobowitz
2009-11-23 16:52   ` Keith Seitz
2009-11-23 17:08     ` Daniel Jacobowitz
2009-11-24 19:20       ` Sami Wagiaalla
2010-01-27 17:10         ` Sami Wagiaalla
2009-12-08 19:47   ` Keith Seitz
2009-12-14 19:33     ` Keith Seitz
2009-12-17 20:19       ` Tom Tromey
2009-12-17 20:28         ` Daniel Jacobowitz
2009-12-17 22:39           ` Paul Pluzhnikov
2009-12-22 18:35           ` Tom Tromey
2009-12-22 19:24             ` Daniel Jacobowitz
2010-01-20 20:37               ` Keith Seitz
2010-01-26 21:17                 ` Daniel Jacobowitz
2010-01-27 19:12                   ` Keith Seitz
2010-01-28 20:22                     ` Keith Seitz
2010-01-28 20:24                       ` Daniel Jacobowitz
2010-01-28 23:41                         ` Keith Seitz
2010-02-01 16:48                           ` Daniel Jacobowitz
2010-02-01 19:32                             ` Keith Seitz
2010-02-01 19:39                               ` Daniel Jacobowitz
2010-02-01 21:52                                 ` Keith Seitz
2010-02-01 22:19                                   ` Daniel Jacobowitz
2010-02-02 23:23                                     ` Keith Seitz
2010-02-02 23:31                                       ` Keith Seitz
2010-02-03  2:46                                       ` Daniel Jacobowitz [this message]
2010-02-04 17:48                                         ` Tom Tromey
2010-02-04 18:14                                           ` Daniel Jacobowitz
2010-02-05 17:13                                             ` Keith Seitz
2010-02-05 17:29                                               ` Daniel Jacobowitz
2010-02-05 20:24                                                 ` Keith Seitz
2010-02-05 20:57                                                   ` Daniel Jacobowitz
2010-02-05 23:10                                                     ` Keith Seitz
2010-02-05 23:46                                                       ` Daniel Jacobowitz
2010-02-04 17:21                             ` Tom Tromey
2010-02-04 17:25                               ` Daniel Jacobowitz
2009-11-23  7:31 ` André Pönitz
2009-11-23 16:57   ` Keith Seitz
2009-11-23 17:20     ` Tom Tromey
2009-11-24  7:22     ` André Pönitz
2009-11-24 22:54       ` Tom Tromey
2009-11-25  9:16         ` André Pönitz
2009-11-25 18:14           ` Tom Tromey
2009-11-23 17:15   ` Tom Tromey
2009-11-24 22:11 ` Joel Brobecker

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=20100203024553.GA22235@caradoc.them.org \
    --to=dan@codesourcery.com \
    --cc=gdb-patches@sourceware.org \
    --cc=keiths@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