From: Tom Tromey Date: Sun, 18 Jan 2026 17:05:23 +0000 (-0700) Subject: Remove cp_lookup_transparent_type X-Git-Tag: binutils-2_46~136 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3aa5a9655e634e9172be89b12a978e61eeb9f2e8;p=thirdparty%2Fbinutils-gdb.git Remove cp_lookup_transparent_type cp_lookup_transparent_type seems to be a workaround for bugs in very old compilers. A comment mentions that the bugs are fixed in GCC 3.4 -- released in 2004. I think this is long past due for removal, which this patch does. Approved-By: Simon Marchi --- diff --git a/gdb/c-lang.c b/gdb/c-lang.c index 8f5dcb0f29e..033a4b174e9 100644 --- a/gdb/c-lang.c +++ b/gdb/c-lang.c @@ -919,14 +919,6 @@ public: lai->set_bool_type (builtin->builtin_bool, "bool"); } - /* See language.h. */ - struct type *lookup_transparent_type (const char *name, - domain_search_flags flags) - const override - { - return cp_lookup_transparent_type (name, flags); - } - /* See language.h. */ unsigned int search_name_hash (const char *name) const override { diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c index c7832088a91..2e3c539507c 100644 --- a/gdb/cp-namespace.c +++ b/gdb/cp-namespace.c @@ -44,10 +44,6 @@ static struct block_symbol const domain_search_flags domain, int basic_lookup, int is_in_anonymous); -static struct type *cp_lookup_transparent_type_loop (const char *name, - const char *scope, - int scope_len); - /* Check to see if SYMBOL refers to an object contained within an anonymous namespace; if so, add an appropriate using directive. */ @@ -966,80 +962,6 @@ cp_lookup_nested_symbol (struct type *parent_type, } } -/* The C++-version of lookup_transparent_type. */ - -/* FIXME: carlton/2004-01-16: The problem that this is trying to - address is that, unfortunately, sometimes NAME is wrong: it may not - include the name of namespaces enclosing the type in question. - lookup_transparent_type gets called when the type in question - is a declaration, and we're trying to find its definition; but, for - declarations, our type name deduction mechanism doesn't work. - There's nothing we can do to fix this in general, I think, in the - absence of debug information about namespaces (I've filed PR - gdb/1511 about this); until such debug information becomes more - prevalent, one heuristic which sometimes looks is to search for the - definition in namespaces containing the current namespace. - - We should delete this functions once the appropriate debug - information becomes more widespread. (GCC 3.4 will be the first - released version of GCC with such information.) */ - -struct type * -cp_lookup_transparent_type (const char *name, domain_search_flags flags) -{ - /* First, try the honest way of looking up the definition. */ - struct type *t = basic_lookup_transparent_type (name, flags); - const char *scope; - - if (t != NULL) - return t; - - /* If that doesn't work and we're within a namespace, look there - instead. */ - const block *block = get_selected_block (0); - if (block == nullptr) - return nullptr; - - scope = block->scope (); - - if (scope[0] == '\0') - return NULL; - - return cp_lookup_transparent_type_loop (name, scope, 0); -} - -/* Lookup the type definition associated to NAME in namespaces/classes - containing SCOPE whose name is strictly longer than LENGTH. LENGTH - must be the index of the start of a component of SCOPE. */ - -static struct type * -cp_lookup_transparent_type_loop (const char *name, - const char *scope, - int length) -{ - int scope_length = length + cp_find_first_component (scope + length); - char *full_name; - - /* If the current scope is followed by "::", look in the next - component. */ - if (scope[scope_length] == ':') - { - struct type *retval - = cp_lookup_transparent_type_loop (name, scope, - scope_length + 2); - - if (retval != NULL) - return retval; - } - - full_name = (char *) alloca (scope_length + 2 + strlen (name) + 1); - strncpy (full_name, scope, scope_length); - memcpy (full_name + scope_length, "::", 2); - strcpy (full_name + scope_length + 2, name); - - return basic_lookup_transparent_type (full_name); -} - /* This used to do something but was removed when it became obsolete. */ diff --git a/gdb/cp-support.h b/gdb/cp-support.h index c4579fe24c6..fb41a3c15b2 100644 --- a/gdb/cp-support.h +++ b/gdb/cp-support.h @@ -161,9 +161,6 @@ extern struct block_symbol const struct block *block, const domain_search_flags domain); -struct type *cp_lookup_transparent_type (const char *name, - domain_search_flags flags); - /* See description in cp-namespace.c. */ struct type *cp_find_type_baseclass_by_name (struct type *parent_type,