aboutsummaryrefslogtreecommitdiff
path: root/gdb/symtab.h
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2024-02-14 09:48:34 -0700
committerTom Tromey <tromey@adacore.com>2024-03-19 11:53:21 -0600
commit1ab9eefe3cea741aba17e11ff28ed48ac3a8293a (patch)
tree618699fc2561149ed37db02151ad2457c14339cf /gdb/symtab.h
parent12d5d5bfd0201711ac3b14d8cd92589919a82b7a (diff)
downloadgdb-1ab9eefe3cea741aba17e11ff28ed48ac3a8293a.zip
gdb-1ab9eefe3cea741aba17e11ff28ed48ac3a8293a.tar.gz
gdb-1ab9eefe3cea741aba17e11ff28ed48ac3a8293a.tar.bz2
Speed up lookup of "type_specific_data"
I noticed that "info locals" on a certain large Ada program was very slow. I tracked this down to ada_get_tsd_type expanding nearly every CU in the program. This patch fixes the problem by changing this code to use the more efficient lookup_transparent_type which, unlike the Ada-specific lookup functions, does not try to find all matching instances. Note that I first tried fixing this by changing ada_find_any_type, but this did not work -- I may revisit this approach at some later date. Also note that the copyright dates on the test files are set that way because I copied them from another test. New in v2: the new test failed on the Linaro regression tester. Looking at the logs, it seems that gdb was picking up a 'value' from libgnat: $1 = {<text variable, no debug info>} 0xf7e227a4 <ada.calendar.formatting.value> This version renames the local variable in an attempt to work around this. v3: In v2, while trying to reproduce the problem locally, I accidentally forgot to commit one of the changes.
Diffstat (limited to 'gdb/symtab.h')
-rw-r--r--gdb/symtab.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 5bd6397..e23eaed 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -2307,9 +2307,11 @@ extern void reread_symbols (int from_tty);
The type returned must not be opaque -- i.e., must have at least one field
defined. */
-extern struct type *lookup_transparent_type (const char *);
+extern struct type *lookup_transparent_type
+ (const char *name, domain_search_flags flags = SEARCH_STRUCT_DOMAIN);
-extern struct type *basic_lookup_transparent_type (const char *);
+extern struct type *basic_lookup_transparent_type
+ (const char *name, domain_search_flags flags = SEARCH_STRUCT_DOMAIN);
/* Macro for name of symbol to indicate a file compiled with gcc. */
#ifndef GCC_COMPILED_FLAG_SYMBOL