From: Tom de Vries Date: Tue, 24 Sep 2024 08:32:41 +0000 (+0200) Subject: [gdb/symtab] Use expand_all_symtabs in maint expand-symtabs X-Git-Tag: gdb-16-branchpoint~839 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=510ecbcdfbf3c90761eb9f1d08d63a84999a8b9b;p=thirdparty%2Fbinutils-gdb.git [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. --- diff --git a/gdb/symmisc.c b/gdb/symmisc.c index 7f8141588b7..caca1e09f64 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,