Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Aleksandar Ristovski <aristovski@qnx.com>
To: Daniel Jacobowitz <drow@false.org>
Cc: gdb@sourceware.org
Subject: Re: cp-name-parser.y
Date: Fri, 29 Feb 2008 20:15:00 -0000	[thread overview]
Message-ID: <47C861C5.4060907@qnx.com> (raw)
In-Reply-To: <20080229193229.GA4226@caradoc.them.org>

Daniel Jacobowitz wrote:
> On Fri, Feb 29, 2008 at 02:09:13PM -0500, Aleksandar Ristovski wrote:
>> I am looking at that since right now something like this:
>>
>> -var-create - * "(anonymous namespace)::foobar"
>>
>> will not work since c_parse doesn't know anything about '(anonymous 
>> namespace)'. I guess it wouldn't be too hard to hack around this 
>> particular case, but a proper solution would be preferable.
> 
> I wonder what the right thing to do on a statement like that is.  The
> problem with anonymous namespaces is that we call them all "(anonymous
> namespace)", but they're many different namespaces, one for each file
> with anonymous namespaces.  In that file, you would access the type
> as just "foobar".  Maybe we should give each anonymous namespace
> a different name.
I am not sure, but unique name should already be available in the form of 
mangled name (to me, at a first glance, creating unique names doesn't sound like 
a good idea).

However, in the case I am talking about, it is known which anonymous namespace 
is relevant since we have the frame, so really the only thing that is missing is 
to recognize that '(anonymous namespace)' could, effectively, be removed from 
the type name and then using the 'bare' var name crawl up the blocks to find the 
matching visible var in the given context. But I am not 100% sure the solution 
is generic.

> 
> Anyway, cp-name-parser.y isn't a replacement for c-exp.y.  It's a name
> parser; it accepts both names and types in cases where we don't know
> which are which, and it does not support any expressions except when
> they can appear inside a template argument.  Once you've identified
> something as a symbol name then you might hand it off to this parser
> to find the canonical form of the name, before searching the symbol
> table.
ok. So we could, perhaps, use it if c_parse fails and the language is c++?
> 
>> The issue is evident when using IDE (CDT). IDE will call
>> ptype foobar
>> which prints type (correctly) something like this: '(anonymous  
>> namespace)::FooBar' and then IDE uses this string as argument to 
>> -var-create, but unfortunately, this doesn't work.
> 
> (Why are you creating a varobj for a type, anyway?)
> 
In the example above 'foobar' is a variable defined in the anon. namespace, and 
'FooBar' is class name, and my last comment is not precise; IDE uses the 
variable name correctly but I am not familiar with internals on what does it do 
to build that name. In any case, the '(anonymous namespace)' part comes from gdb.


  reply	other threads:[~2008-02-29 19:49 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-29 18:39 cp-name-parser.y Aleksandar Ristovski
2008-02-29 19:09 ` cp-name-parser.y Daniel Jacobowitz
2008-02-29 19:32   ` cp-name-parser.y Aleksandar Ristovski
2008-02-29 19:49     ` cp-name-parser.y Daniel Jacobowitz
2008-02-29 20:15       ` Aleksandar Ristovski [this message]
2008-02-29 21:49         ` cp-name-parser.y Daniel Jacobowitz
2008-03-03 17:02           ` cp-name-parser.y Aleksandar Ristovski
2008-03-03 17:22             ` Daniel Jacobowitz
2008-03-03 18:33               ` cp-name-parser.y Aleksandar Ristovski
2008-03-03 20:05                 ` cp-name-parser.y 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=47C861C5.4060907@qnx.com \
    --to=aristovski@qnx.com \
    --cc=drow@false.org \
    --cc=gdb@sourceware.org \
    /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