[PATCH][PR c++/17976, symtab/17821] Fix.

Doug Evans dje@google.com
Sun Feb 22 06:03:00 GMT 2015


On Fri, Feb 13, 2015 at 12:46 PM, Doug Evans <dje@google.com> wrote:
> Hi.
>
> This patch addresses two issues.
>
> The basic problem is that "(anonymous namespace)" doesn't get entered
> into the symbol table because when dwarf2read.c:new_symbol_full is called
> the DIE has no name (dwarf2_name returns NULL).
>
> PR 17976: ptype '(anonymous namespace)' should work like any namespace
>
> PR 17821: perf issue looking up (anonymous namespace)
>
> bash$ gdb monster-program
> (gdb) mt set per on
> (gdb) mt set symbol-cache-size 0
> (gdb) break (anonymous namespace)::foo
>
> Before:
>
> Command execution time: 3.266289 (cpu), 6.169030 (wall)
> Space used: 811429888 (+12910592 for this command)
> #symtabs: 28017 (+21119), #compunits: 402 (+302), #blocks: 18373 (+17011)
>
> After:
>
> Command execution time: 1.264076 (cpu), 4.057408 (wall)
> Space used: 798781440 (+0 for this command)
> #symtabs: 6898 (+0), #compunits: 100 (+0), #blocks: 1362 (+0)
>
> Regression tested on amd64-linux.
>
> 2015-02-13  Doug Evans  <dje@google.com>
>
>         PR c++/17976, symtab/17821
>         * cp-namespace.c (cp_search_static_and_baseclasses): New parameter
>         is_in_anonymous.  All callers updated.
>         (find_symbol_in_baseclass): Ditto.
>         (cp_lookup_nested_symbol_1): Ditto.  Don't search all static blocks
>         for symbols in an anonymous namespace.
>         * dwarf2read.c (namespace_name): Don't call dwarf2_name, fetch
>         DW_AT_name directly.
>         (dwarf2_name): Convert missing namespace name to
>         CP_ANONYMOUS_NAMESPACE_STR.
>
>         testsuite/
>         * gdb.cp/anon-ns.exp: Add test for ptype '(anonymous namespace)'.

Committed.



More information about the Gdb-patches mailing list