Re: [PATCH RFC 1/2] Remove "readnow" support

Eli Zaretskii
2026-02-12T07:50:40Z

> 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?

> ---
> gdb/NEWS | 4 +
> gdb/doc/gdb.texinfo | 23 +-----
> gdb/dwarf2/read.c | 85 ++--------------------
> gdb/dwarf2/read.h | 2 +-
> gdb/machoread.c | 2 +-
> gdb/main.c | 24 +-----
> gdb/objfile-flags.h | 11 +--
> gdb/symfile.c | 83 ++++-----------------
> gdb/symfile.h | 6 +-
> 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 -
> 80 files changed, 137 insertions(+), 694 deletions(-)

The documentation parts of this are okay, thanks.

Reviewed-By: Eli Zaretskii <eliz@gnu.org>