Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH RFC 0/2] Remove -readnow
@ 2026-02-11 18:49 Tom Tromey
  2026-02-11 18:49 ` [PATCH RFC 1/2] Remove "readnow" support Tom Tromey
  2026-02-11 18:49 ` [PATCH RFC 2/2] Remove quick_symbol_functions::expand_all_symtabs Tom Tromey
  0 siblings, 2 replies; 9+ messages in thread
From: Tom Tromey @ 2026-02-11 18:49 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

This short series removes the -readnow feature and then some
supporting code.

The justification is all in the first patch.

Regression tested on x86-64 Fedora 40.

Signed-off-by: Tom Tromey <tom@tromey.com>
---
Tom Tromey (2):
      Remove "readnow" support
      Remove quick_symbol_functions::expand_all_symtabs

 gdb/NEWS                                           |   4 +
 gdb/doc/gdb.texinfo                                |  23 +----
 gdb/dwarf2/cooked-index.h                          |   6 --
 gdb/dwarf2/read.c                                  | 101 +--------------------
 gdb/dwarf2/read.h                                  |   4 +-
 gdb/expanded-symbol.h                              |   4 -
 gdb/machoread.c                                    |   2 +-
 gdb/main.c                                         |  24 +----
 gdb/objfile-flags.h                                |  11 +--
 gdb/objfiles.h                                     |   3 -
 gdb/psymtab.c                                      |  10 --
 gdb/psymtab.h                                      |   2 -
 gdb/quick-symbol.h                                 |   3 -
 gdb/symfile-debug.c                                |  11 ---
 gdb/symfile.c                                      |  83 ++++-------------
 gdb/symfile.h                                      |   6 +-
 gdb/symmisc.c                                      |  14 +--
 gdb/testsuite/boards/README                        |   3 +-
 gdb/testsuite/boards/readnow.exp                   |  27 ------
 gdb/testsuite/gdb.ada/call_pn.exp                  |   9 +-
 gdb/testsuite/gdb.ada/data-sections.exp            |   8 +-
 .../gdb.arch/arm-pthread_cond_timedwait-bt.exp     |   4 -
 gdb/testsuite/gdb.base/bfd-errors.exp              |  10 +-
 .../gdb.base/break-on-linker-gcd-function.exp      |   9 --
 gdb/testsuite/gdb.base/c-linkage-name.exp          |  23 ++---
 gdb/testsuite/gdb.base/cached-source-file.exp      |   3 +-
 gdb/testsuite/gdb.base/code_elim.exp               |  15 ---
 gdb/testsuite/gdb.base/include-main.exp            |   6 +-
 gdb/testsuite/gdb.base/index-cache.exp             |   4 +-
 gdb/testsuite/gdb.base/list-ambiguous-readnow.exp  |  22 -----
 gdb/testsuite/gdb.base/main-c.exp                  |   2 -
 .../gdb.base/maint-expand-symbols-header-file.exp  |   4 -
 gdb/testsuite/gdb.base/maint.exp                   |  20 ++--
 gdb/testsuite/gdb.base/readnever.exp               |  25 -----
 gdb/testsuite/gdb.base/relocate.exp                |  27 +++---
 gdb/testsuite/gdb.base/signed-builtin-types.exp    |   5 -
 gdb/testsuite/gdb.base/style.exp                   |  11 +--
 gdb/testsuite/gdb.cp/main-cp.exp                   |   2 -
 gdb/testsuite/gdb.cp/nsalias.exp                   |  12 +--
 gdb/testsuite/gdb.cp/psymtab-parameter.exp         |   6 +-
 gdb/testsuite/gdb.cp/readnow-language.cc           |  22 -----
 gdb/testsuite/gdb.cp/readnow-language.exp          |  27 ------
 .../gdb.debuginfod/build-id-no-debug-warning.exp   |   2 +-
 gdb/testsuite/gdb.debuginfod/crc_mismatch.exp      |   2 +-
 .../gdb.dwarf2/backward-spec-inter-cu.exp          |   1 -
 .../debug-aranges-duplicate-offset-warning.exp     |  19 ++--
 .../gdb.dwarf2/debug-names-missing-cu.exp          |   4 -
 gdb/testsuite/gdb.dwarf2/debug-names-tu.exp.tcl    |   4 -
 .../gdb.dwarf2/dw-form-strx-out-of-bounds.exp      |   4 -
 .../gdb.dwarf2/dw2-bad-parameter-type.exp          |   2 +-
 gdb/testsuite/gdb.dwarf2/dw2-error.exp             |   1 -
 gdb/testsuite/gdb.dwarf2/dw2-icycle.exp            |  11 +--
 gdb/testsuite/gdb.dwarf2/dw2-missing-cu-tag.exp    |  22 +----
 gdb/testsuite/gdb.dwarf2/dw2-modula2-self-type.exp |   2 +-
 gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp    |   5 -
 .../gdb.dwarf2/dw2-symtab-includes-lookup.exp      |   6 +-
 gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp   |   4 -
 gdb/testsuite/gdb.dwarf2/dw2-using-debug-str.exp   |  15 +--
 gdb/testsuite/gdb.dwarf2/dw2-var-zero-addr.exp     |   9 --
 gdb/testsuite/gdb.dwarf2/dw2-zero-range.exp        |  22 ++---
 gdb/testsuite/gdb.dwarf2/dw4-sig-type-unused.exp   |   7 +-
 gdb/testsuite/gdb.dwarf2/dwznolink.exp             |   6 +-
 gdb/testsuite/gdb.dwarf2/enum-type-c++.exp         |   2 -
 gdb/testsuite/gdb.dwarf2/enum-type.exp             |   1 -
 gdb/testsuite/gdb.dwarf2/forward-spec-inter-cu.exp |   1 -
 gdb/testsuite/gdb.dwarf2/forward-spec.exp          |   2 -
 gdb/testsuite/gdb.dwarf2/gdb-index-nodebug.exp     |   3 +-
 gdb/testsuite/gdb.dwarf2/gdb-index-tilde.exp       |   3 -
 .../gdb.dwarf2/gdb-index-types-dwarf5.exp          |   4 -
 gdb/testsuite/gdb.dwarf2/gdb-index.exp             |   3 -
 gdb/testsuite/gdb.dwarf2/macro-complaints.exp      |   1 -
 gdb/testsuite/gdb.dwarf2/multidictionary.exp       |  10 +-
 gdb/testsuite/gdb.dwarf2/no-expand-mixed-case.exp  |   2 -
 gdb/testsuite/gdb.dwarf2/nostaticblock.exp         |   7 +-
 gdb/testsuite/gdb.dwarf2/per-bfd-sharing.exp       |  11 +--
 gdb/testsuite/gdb.dwarf2/self-spec.exp             |   2 -
 gdb/testsuite/gdb.fortran/info-main.exp            |  14 +--
 gdb/testsuite/gdb.gdb/index-file.exp               |   3 -
 gdb/testsuite/gdb.gdb/python-helper.exp            |   2 +-
 gdb/testsuite/gdb.mi/mi-info-sources.exp           |   6 +-
 gdb/testsuite/gdb.multi/remove-inferiors.exp       |   3 +-
 gdb/testsuite/gdb.opt/break-on-_exit.exp           |   6 --
 gdb/testsuite/gdb.python/py-symbol.exp             |  11 +--
 gdb/testsuite/gdb.server/target-exec-file.exp      |   7 --
 gdb/testsuite/gdb.threads/detach-step-over.exp     |   3 +-
 gdb/testsuite/lib/gdb.exp                          |  21 +----
 gdb/testsuite/lib/mi-support.exp                   |   8 --
 gdb/testsuite/make-check-all.sh                    |   1 -
 88 files changed, 140 insertions(+), 762 deletions(-)
---
base-commit: 0fb67a2cf68660cbda609ba57f1c179dc6373da3
change-id: 20260211-nuke-readnow-f826a37ee233

Best regards,
-- 
Tom Tromey <tom@tromey.com>


^ permalink raw reply	[flat|nested] 9+ messages in thread
* Re: [PATCH RFC 1/2] Remove "readnow" support
@ 2026-02-12 21:32 Jan Vrany
  0 siblings, 0 replies; 9+ messages in thread
From: Jan Vrany @ 2026-02-12 21:32 UTC (permalink / raw)
  To: Simon Marchi, Andrew Burgess, eliz, Tom Tromey, GDB Patches

On Thu, 2026-02-12 at 19:39 +0000, Simon Marchi wrote:
> https://inbox.sourceware.org/gdb-patches/945d83fc-5518-4e04-8fe8-ebcca0acf0bd@simark.ca/
> 
> On 2/12/26 8:29 AM, Andrew Burgess wrote:
> > Eli Zaretskii <eliz@gnu.org> writes:
> > 
> > > > From: Tom Tromey <tom@tromey.com>
> > > > Date: Wed, 11 Feb 2026 11:49:09 -0700
> > > > Cc: Tom Tromey <tom@tromey.com>
> > > > 
> > > > I think the "readnow" feature should be removed.
> > > > 
> > > > "readnow" exists basically to work around potential bugs in any
> > > > "partial" reader.  This used to work ok because gdb would scan all the
> > > > expanded symtabs in addition to using the "quick" functions.  This
> > > > changed with the "search via psyms" series.
> > > > 
> > > > So now, "readnow" is basically its own separate implementation.  As
> > > > such, I don't think it carries its weight.  It is very slow and uses a
> > > > lot of memory, and can have its own bugs requiring extra work on our
> > > > part.
> > > 
> > > Is there any other way for the user to force GDB to read all of the
> > > symbols from all of the object files?  If not, perhaps this
> > > functionality still has its value?  Maybe we should make it a "maint"
> > > command instead?
> > 
> > I second this.  We do run into bugs with the indexes from time to time,
> > and it's good to have some way to tell GDB to go read the full debug
> > information so we can narrow the bug down.  Plus it offers a work around
> > in these cases.
> > 
> > Is 'maint expand-symtabs' the equivalent?  When someone uses -readnow
> > should we maybe guide them towards the new way of doing things, even all
> > we do is point towards a particular entry in the manual maybe?
> 
> From what I understand, "maint expand-symtabs" is not an exact
> replacement for readnow.  With the recent changes that Tom Tromey did
> (always search via the "quick" functions), this is how it works when
> searching for a symbol:
> 
>  - the code invokes the quick_symbol_functions::search method
>    (cooked_index_functions::search for the DWARF index).
>  - if a compunit_symtab looks like it could contain said symbol, the
>    quick functions' search method calls a callback, passing the
>    compunit_symtab, and the core searches it
>  - if you "maint expand-symtabs" first, the search still goes through
>    cooked_index_functions::search.  So if there is a bug in
>    cooked_index_functions::search, it won't bypass it.  In other words,
>    which symtabs are currently expanded should not affect a search (this
>    was the point of the change, that was a source of bugs)
> 
> With readnow, the cooked index is not built.  Instead, compunit_symtab
> are built from the start, 

I'm not sure this is exactly how it works. My undestanding is that with -readnow,
index is not build, but all_units is build. compunit_symtabs are built later on
and lazily in dw2_instantiate_symtab. In another words, with -readnow all the work
is done except creation of compunit_symtabs. 
See patch https://inbox.sourceware.org/gdb-patches/20251124195535.2116845-9-jan.vrany@labware.com/

> and readnow_functions is used instead of
> cooked_index_functions.  readnow_functions::search goes over the
> all_units vector and searches all of them (I wonder if it could use
> expanded_symbols_functions instead...).  

It could - this is what I originally did in v1 and v2 of what then became
expanded_symbol_functions (https://inbox.sourceware.org/gdb-patches/20251124195535.2116845-1-jan.vrany@labware.com/)

Jan

> If there was a bug in
> cooked_index_functions::search, then this would by pass it.
> 
> I don't know if it's really worth having a completely parallel code path
> just in case there is a bug in the main path.  That parallel code path
> is a source of headaches of its own.  That being said, if we could indeed
> use expanded_symbols_functions, then keeping readnow wouldn't represent
> much code I think.

> Simon


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-02-14 21:27 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-11 18:49 [PATCH RFC 0/2] Remove -readnow Tom Tromey
2026-02-11 18:49 ` [PATCH RFC 1/2] Remove "readnow" support Tom Tromey
2026-02-12  7:50   ` Eli Zaretskii
2026-02-12 13:29     ` Andrew Burgess
2026-02-12 16:44       ` Kevin Buettner
2026-02-12 19:39       ` Simon Marchi
2026-02-14 21:26         ` Tom Tromey
2026-02-11 18:49 ` [PATCH RFC 2/2] Remove quick_symbol_functions::expand_all_symtabs Tom Tromey
2026-02-12 21:32 [PATCH RFC 1/2] Remove "readnow" support Jan Vrany

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox