mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 12:34:43 +00:00
Add another minor hack to cooked_index_entry::full_name
This patch adds another minor hack to cooked_index_entry::full_name. In particular, if GNAT emits non-hierarchical names (still the default as the hierarchical series is blocked on one tricky problem), then a request to compute the "linkage-style" name will now just return the 'name' field. Without this tweak, this series would regress ada-cold-name.exp, because the search would look for "name.cold" but the index would return "name[cold]" as the "linkage" name (which would be wrong). This area is a bit difficult to unravel. The best plan here, IMO, is to change Ada to work like the other languages in gdb: store the natural name and do searches with that name. I think this is achievable, but I didn't want to try it here. I've updated the relevant bug (tagged below) to reflect this. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32766 Acked-By: Simon Marchi <simon.marchi@efficios.com>
This commit is contained in:
@@ -188,8 +188,15 @@ cooked_index_entry::full_name (struct obstack *storage,
|
||||
break;
|
||||
|
||||
case language_ada:
|
||||
/* If GNAT emits hierarchical names (patches not in at the time
|
||||
of writing), then we need to compute the linkage name here.
|
||||
However for traditional GNAT, the linkage name will be in
|
||||
'name'. Detect this by looking for "__"; see also
|
||||
cooked_index_shard::finalize. */
|
||||
if ((name_flags & FOR_ADA_LINKAGE_NAME) != 0)
|
||||
{
|
||||
if (strstr (name, "__") != nullptr)
|
||||
return name;
|
||||
sep = "__";
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user