This is the mail archive of the
gdb-prs@sourceware.org
mailing list for the GDB project.
[Bug symtab/17591] New: dwarf2read.c:find_slot_in_mapped_hash needs to handle "(anonymous namespace)"
- From: "dje at google dot com" <sourceware-bugzilla at sourceware dot org>
- To: gdb-prs at sourceware dot org
- Date: Wed, 12 Nov 2014 22:31:38 +0000
- Subject: [Bug symtab/17591] New: dwarf2read.c:find_slot_in_mapped_hash needs to handle "(anonymous namespace)"
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=17591
Bug ID: 17591
Summary: dwarf2read.c:find_slot_in_mapped_hash needs to handle
"(anonymous namespace)"
Product: gdb
Version: 7.8
Status: NEW
Severity: normal
Priority: P2
Component: symtab
Assignee: unassigned at sourceware dot org
Reporter: dje at google dot com
I was debugging a perf issue and found this in find_slot_in_mapped_hash:
if (current_language->la_language == language_cplus
|| current_language->la_language == language_java
|| current_language->la_language == language_fortran)
{
/* NAME is already canonical. Drop any qualifiers as .gdb_index does
not contain any. */
const char *paren = strchr (name, '(');
if (paren)
{
char *dup;
dup = xmalloc (paren - name + 1);
memcpy (dup, name, paren - name);
dup[paren - name] = 0;
make_cleanup (xfree, dup);
name = dup;
}
}
What if name is "(anonymous namespace)" ?
For the program at hand, this results in symbol table entry 0 which has 1085
entries.
[ 0] :
4 [static, function]
5 [static, function]
6 [static, function]
... some global functions
2737 [static, function]
2739 [static, function]
2743 [static, function]
None of the CUs for these entries define anonymous namespace, but since we're
looking up in VAR_DOMAIN the index returns a match and we expand the CU.
While we should fix find_slot_in_mapped_hash, there is a side issue of doing a
general purpose lookup (VAR_DOMAIN) when we have (or should have) enough
knowledge to do a more specific lookup (we're looking for a namespace(/type)
not a function).
--
You are receiving this mail because:
You are on the CC list for the bug.