diff options
author | Tom de Vries <tdevries@suse.de> | 2024-09-24 10:32:41 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2024-09-24 10:32:41 +0200 |
commit | 510ecbcdfbf3c90761eb9f1d08d63a84999a8b9b (patch) | |
tree | e8901aa679f46e4e11a7f1b5890cee3bfc0ef05b | |
parent | 21fc5abfb1f15f66f1a4a805a6b74ebfaa9b583d (diff) | |
download | gdb-510ecbcdfbf3c90761eb9f1d08d63a84999a8b9b.zip gdb-510ecbcdfbf3c90761eb9f1d08d63a84999a8b9b.tar.gz gdb-510ecbcdfbf3c90761eb9f1d08d63a84999a8b9b.tar.bz2 |
[gdb/symtab] Use expand_all_symtabs in maint expand-symtabs
When issuing a command "maint expand-symtabs", maintenance_expand_symtabs is
called with regexp == nullptr, and calls expand_symtabs_matching like so:
...
objfile->expand_symtabs_matching
([&] (const char *filename, bool basenames)
{
/* KISS: Only apply the regexp to the complete file name. */
return (!basenames
&& (regexp == NULL || re_exec (filename)));
},
...
To expand all symtabs gdb usually uses expand_all_symtabs (used for -readnow),
but here we try to handle it in the filename_matcher argument.
Make this more similar to how gdb usually works by using expand_all_symtabs.
A previous version of the patch instead used a nullptr filename_matcher for
the regexp == nullptr case. That approach regressed test-cases
gdb.dwarf2/dwz-unused-pu.exp and gdb.dwarf2/dw2-dummy.exp.
Tested on x86_64-linux.
-rw-r--r-- | gdb/symmisc.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/gdb/symmisc.c b/gdb/symmisc.c index 7f81415..caca1e0 100644 --- a/gdb/symmisc.c +++ b/gdb/symmisc.c @@ -903,18 +903,25 @@ maintenance_expand_symtabs (const char *args, int from_tty) } } - if (regexp) - re_comp (regexp); + if (regexp == nullptr) + { + for (struct program_space *pspace : program_spaces) + for (objfile *objfile : pspace->objfiles ()) + objfile->expand_all_symtabs (); + + return; + } + + re_comp (regexp); for (struct program_space *pspace : program_spaces) for (objfile *objfile : pspace->objfiles ()) objfile->expand_symtabs_matching ([&] (const char *filename, bool basenames) - { - /* KISS: Only apply the regexp to the complete file name. */ - return (!basenames - && (regexp == NULL || re_exec (filename))); - }, + { + /* KISS: Only apply the regexp to the complete file name. */ + return !basenames && re_exec (filename); + }, NULL, NULL, NULL, |