From 510ecbcdfbf3c90761eb9f1d08d63a84999a8b9b Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Tue, 24 Sep 2024 10:32:41 +0200 Subject: [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. --- gdb/symmisc.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'gdb') 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, -- cgit v1.1