> On Jul 28, 2014, at 2:26 PM, Alex Pepper <[email protected]> wrote:
> 
> I investigated bug 15302, which is described as:
> 
> "LLDB does not print 'anonymous namespace' prefix for variable names (if 
> inferior built with GCC on Linux)"
> 
> What I found was that the GCC dwarf data does not contain a mangled name for 
> a variable defined in an anonymous namespace, unlike clang.  LLDB 
> VariableObject depends on the mangled name to identify the anonymous 
> namespace for a variable, so in the test case it does no print the (anonymous 
> namespace) prefix.  I checked the dwarf data using dwarfdump and nm.  In the 
> case of dwarfdump the variable is a child of the anonymous namespace but 
> there is no mangled name, but when I use nm to dump the symbols it displays 
> the mangled name.  I am not sure if this means nm is generating the name or 
> getting the symbol from somewhere else.

nm only looks at the symbol table and the symbol table will contain only the 
mangled name for the variable.

> I am looking for suggestions on how to resolve this, should LLDB be inferring 
> the namespace from the hierarchy somehow or should GCC be outputting the 
> mangled symbol?

I believe GCC should emit a mangled name. The problem is you can have:

namespace {
    class Foo {
        static int g_foo;
    }
}

If GCC doesn't emit the full mangled named, then we don't want to have to have 
code that knows how to follow the decl context of g_foo back up and create 
names for everything with proper scoping and decorations.

Greg
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to