[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