Re: [PATCH 6/7] gdb/testsuite: Pass "symtab" to testcases that rely on minsyms
Luis <[email protected]>
| Newsgroups | gmane.comp.gdb.patches |
|---|---|
| Message-ID | <[email protected]> |
Hi,
Since so many of these require a symtab option, I wonder if it would be
easier/cleaner to assume that option is passed by default and instead
make the tests drop that option is not required.
But I'm not sure what is split between symtab/no symtab here.
On 11/08/2026 02:45, Pedro Alves wrote:
> Most tests that build a program with no debug information still need
> minimal symbols, to be able to set breakpoints, run to main, or
> resolve functions by name, etc.
>
> On most targets the compiler and linker emit a (COFF/ELF/etc.) symbol
> table by default. On windows-msvc, though, lld-link does not emit a
> COFF symbol table by default (nor when emitting PDB/CodeView debug
> info).
>
> This commit tweaks testcases to pass the new "symtab" option to
> explicitly ask for a symbol table.
>
> gdb.base/nodebug.exp was the one that made me start looking at this.
> The rest I discovered by hacking gdb_compile to pass "-s" (strip
> symtab) to GCC if no symtab or debug option was requested, and run the
> testsuite with that on GNU/Linux.
>
> Change-Id: Ia5b801186b81ef603f36dea097ad3c489db47768
> ---
> gdb/testsuite/gdb.arch/amd64-entry-value-inline.exp | 1 +
> gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp | 1 +
> gdb/testsuite/gdb.arch/amd64-entry-value-param.exp | 1 +
> gdb/testsuite/gdb.arch/amd64-entry-value-paramref.exp | 2 +-
> gdb/testsuite/gdb.arch/amd64-entry-value.exp | 1 +
> gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp | 2 +-
> gdb/testsuite/gdb.arch/amd64-invalid-stack-top.exp | 2 +-
> gdb/testsuite/gdb.arch/amd64-optimout-repeat.exp | 1 +
> gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp | 1 +
> gdb/testsuite/gdb.arch/amd64-shadow-stack-disp-step.exp | 2 +-
> gdb/testsuite/gdb.arch/amd64-shadow-stack.exp | 2 +-
> gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp | 1 +
> gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp | 1 +
> gdb/testsuite/gdb.arch/amd64-tailcall-ret.exp | 1 +
> gdb/testsuite/gdb.arch/amd64-tailcall-self.exp | 2 +-
> gdb/testsuite/gdb.arch/i386-bp_permanent.exp | 6 ++++--
> .../gdb.arch/i386-prologue-skip-cf-protection.exp | 2 +-
> gdb/testsuite/gdb.base/break-entry.exp | 2 +-
> gdb/testsuite/gdb.base/break-on-linker-gcd-function.exp | 2 +-
> gdb/testsuite/gdb.base/ctf-constvars.exp | 1 +
> gdb/testsuite/gdb.base/ctf-ptype.exp | 1 +
> gdb/testsuite/gdb.base/cvexpr.exp | 1 +
> gdb/testsuite/gdb.base/dup-sect.exp | 2 +-
> gdb/testsuite/gdb.base/infcall-nested-structs.exp.tcl | 1 +
> gdb/testsuite/gdb.base/info-shared.exp | 2 +-
> gdb/testsuite/gdb.base/info_minsym.exp | 4 ++--
> gdb/testsuite/gdb.base/jit-elf-fork.exp | 2 +-
> gdb/testsuite/gdb.base/jit-elf-so.exp | 2 +-
> gdb/testsuite/gdb.base/jit-elf.exp | 2 +-
> gdb/testsuite/gdb.base/list-nodebug.exp | 2 +-
> gdb/testsuite/gdb.base/morestack.exp | 4 ++--
> gdb/testsuite/gdb.base/msym-bp-shl.exp | 2 +-
> gdb/testsuite/gdb.base/msym-bp.exp | 2 +-
> gdb/testsuite/gdb.base/msym-lang.exp | 2 +-
> gdb/testsuite/gdb.base/nodebug.exp | 5 ++++-
> gdb/testsuite/gdb.base/psym-external-decl.exp | 2 +-
> gdb/testsuite/gdb.base/solib-nodir.exp | 2 +-
> gdb/testsuite/gdb.base/whatis.exp | 1 +
> gdb/testsuite/gdb.compile/compile-cplus-print.exp | 2 +-
> gdb/testsuite/gdb.compile/compile-cplus.exp | 2 +-
> gdb/testsuite/gdb.compile/compile-ifunc.exp | 2 +-
> gdb/testsuite/gdb.compile/compile.exp | 2 +-
> gdb/testsuite/gdb.cp/cmpd-minsyms.exp | 2 +-
> gdb/testsuite/gdb.cp/infcall-nodebug.exp.tcl | 4 ++--
> gdb/testsuite/gdb.cp/nsalias.exp | 4 ++--
> gdb/testsuite/gdb.ctf/dwarf2-and-ctf.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/debug-names-bad-cu-index.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/debug-names-duplicate-cu.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/debug-names-missing-cu.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/debug-names-tu.exp.tcl | 2 +-
> gdb/testsuite/gdb.dwarf2/debug-names.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.exp | 7 ++++---
> gdb/testsuite/gdb.dwarf2/dw2-complex-parts.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.exp | 3 ++-
> gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/dw2-restore.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp | 3 ++-
> gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/dw2-unspecified-type.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/dwz.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/dwzbuildid.tcl | 2 +-
> gdb/testsuite/gdb.dwarf2/entry-value-typedef.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/fission-call.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/fission-reread.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/fission-with-type-unit.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/gdb-index-skeletonless-tu.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/implptr-64bit.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/implref-array.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/implref-const.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/implref-global.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/implref-struct.exp | 2 +-
> .../gdb.dwarf2/inlined_subroutine-inheritance.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/intbits.exp | 2 +-
> .../gdb.dwarf2/multi-piece-inherited-bitfield.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/multi-piece-primitive-field.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/pr13961.exp | 6 ++++--
> gdb/testsuite/gdb.dwarf2/self-spec.exp | 2 +-
> gdb/testsuite/gdb.dwarf2/varval.exp | 2 +-
> gdb/testsuite/gdb.guile/scm-breakpoint.exp | 2 +-
> gdb/testsuite/gdb.linespec/break-asm-file.exp | 2 +-
> gdb/testsuite/gdb.mi/dw2-ref-missing-frame.exp | 2 +-
> gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp | 1 +
> gdb/testsuite/gdb.python/py-frame.exp | 2 +-
> gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp | 2 +-
> gdb/testsuite/gdb.python/py-linetable.exp | 1 +
> gdb/testsuite/gdb.python/py-prettyprint-stub.exp | 2 +-
> gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.exp | 1 +
> gdb/testsuite/gdb.reverse/singlejmp-reverse.exp | 4 ++--
> gdb/testsuite/gdb.rocm/addr-bp-gpu-no-deb-info.exp | 2 +-
> gdb/testsuite/gdb.rocm/displaced-stepping.exp | 2 +-
> gdb/testsuite/gdb.rocm/fork-exec-non-gpu-to-gpu.exp | 1 +
> gdb/testsuite/gdb.server/sysroot.exp | 4 +++-
> gdb/testsuite/gdb.threads/tls-nodebug-pie.exp | 2 +-
> gdb/testsuite/gdb.threads/tls-nodebug.exp | 2 +-
> gdb/testsuite/gdb.threads/tls-var.exp | 2 +-
> gdb/testsuite/gdb.trace/entry-values.exp | 4 ++--
> gdb/testsuite/gdb.trace/tspeed.exp | 2 +-
> gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp | 2 +-
> 104 files changed, 126 insertions(+), 96 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value-inline.exp b/gdb/testsuite/gdb.arch/amd64-entry-value-inline.exp
> index b67f676b716..47e6ea9c761 100644
> --- a/gdb/testsuite/gdb.arch/amd64-entry-value-inline.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-entry-value-inline.exp
> @@ -22,6 +22,7 @@ if {[info exists COMPILE]} {
> lappend opts debug optimize=-O2
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> # Make .c available on the host.
> diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp b/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp
> index 8043235eec8..4fa4b7580a9 100644
> --- a/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp
> @@ -22,6 +22,7 @@ if {[info exists COMPILE]} {
> lappend opts optimize=-O2 dwarf5
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> # Make .c available on the host.
> diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value-param.exp b/gdb/testsuite/gdb.arch/amd64-entry-value-param.exp
> index 4c1d63ab5a3..49db4f0adf2 100644
> --- a/gdb/testsuite/gdb.arch/amd64-entry-value-param.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-entry-value-param.exp
> @@ -22,6 +22,7 @@ if {[info exists COMPILE]} {
> lappend opts debug optimize=-O2
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> # Make .c available on the host.
> diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value-paramref.exp b/gdb/testsuite/gdb.arch/amd64-entry-value-paramref.exp
> index cb789b541bc..ab6cc37d0cc 100644
> --- a/gdb/testsuite/gdb.arch/amd64-entry-value-paramref.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-entry-value-paramref.exp
> @@ -23,7 +23,7 @@ if {[is_remote host]} {
> }
>
> if { [prepare_for_testing_full "failed to prepare" \
> - [list $testfile "c++" $srcfile {}]] } {
> + [list $testfile {symtab c++} $srcfile {}]] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value.exp b/gdb/testsuite/gdb.arch/amd64-entry-value.exp
> index 997312ee437..0673bed9c81 100644
> --- a/gdb/testsuite/gdb.arch/amd64-entry-value.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-entry-value.exp
> @@ -24,6 +24,7 @@ if {[info exists COMPILE]} {
> lappend opts c++
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} $opts] } {
> diff --git a/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp b/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp
> index a48896d60a6..74e002e132b 100644
> --- a/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp
> @@ -31,7 +31,7 @@ standard_testfile .S
>
> require is_x86_64_m64_target
>
> -if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {nopie}] } {
> +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {nopie symtab}] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.arch/amd64-invalid-stack-top.exp b/gdb/testsuite/gdb.arch/amd64-invalid-stack-top.exp
> index d3ad91ed64f..4c29ad7376e 100644
> --- a/gdb/testsuite/gdb.arch/amd64-invalid-stack-top.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-invalid-stack-top.exp
> @@ -27,7 +27,7 @@
> # run twice, and we restart gdb before testing each different command to
> # ensure that nothing is being cached.
>
> -set opts {}
> +set opts {symtab}
> standard_testfile .c
>
> require is_x86_64_m64_target
> diff --git a/gdb/testsuite/gdb.arch/amd64-optimout-repeat.exp b/gdb/testsuite/gdb.arch/amd64-optimout-repeat.exp
> index a2651898b0c..d47421c096e 100644
> --- a/gdb/testsuite/gdb.arch/amd64-optimout-repeat.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-optimout-repeat.exp
> @@ -22,6 +22,7 @@ if {[info exists COMPILE]} {
> lappend opts debug optimize=-O2
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} $opts] } {
> diff --git a/gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp b/gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp
> index f402350acde..739b3050d08 100644
> --- a/gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp
> @@ -26,6 +26,7 @@ if {[info exists COMPILE]} {
> lappend opts debug optimize=-O0
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> if {[prepare_for_testing "failed to prepare" ${testfile} $srcfile $opts]} {
> diff --git a/gdb/testsuite/gdb.arch/amd64-shadow-stack-disp-step.exp b/gdb/testsuite/gdb.arch/amd64-shadow-stack-disp-step.exp
> index 82e49e62290..229727858a3 100644
> --- a/gdb/testsuite/gdb.arch/amd64-shadow-stack-disp-step.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-shadow-stack-disp-step.exp
> @@ -25,7 +25,7 @@ save_vars { ::env(GLIBC_TUNABLES) } {
> append_environment GLIBC_TUNABLES "glibc.cpu.hwcaps" "SHSTK"
>
> if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
> - additional_flags=-fcf-protection=return] } {
> + {symtab additional_flags=-fcf-protection=return}] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.arch/amd64-shadow-stack.exp b/gdb/testsuite/gdb.arch/amd64-shadow-stack.exp
> index de5bce421c2..e711362ba21 100644
> --- a/gdb/testsuite/gdb.arch/amd64-shadow-stack.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-shadow-stack.exp
> @@ -30,7 +30,7 @@ save_vars { ::env(GLIBC_TUNABLES) } {
> append_environment GLIBC_TUNABLES "glibc.cpu.hwcaps" "SHSTK"
>
> if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
> - additional_flags=-fcf-protection=return] } {
> + {symtab additional_flags=-fcf-protection=return}] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp
> index c2cffe0793b..30fcba959ed 100644
> --- a/gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp
> @@ -24,6 +24,7 @@ if {[info exists COMPILE]} {
> lappend opts c++
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> if { [prepare_for_testing "failed to prepare" ${testfile} "${srcfile} ${srcfile2}" $opts] } {
> diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp b/gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp
> index 767602805b9..8c868bfcfec 100644
> --- a/gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp
> @@ -22,6 +22,7 @@ if {[info exists COMPILE]} {
> lappend opts debug optimize=-O2
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> lappend opts nopie
> diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-ret.exp b/gdb/testsuite/gdb.arch/amd64-tailcall-ret.exp
> index 7ae151c690f..85b68f22ed8 100644
> --- a/gdb/testsuite/gdb.arch/amd64-tailcall-ret.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-tailcall-ret.exp
> @@ -22,6 +22,7 @@ if {[info exists COMPILE]} {
> lappend opts debug optimize=-O2
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> # Make .c available on the host.
> diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-self.exp b/gdb/testsuite/gdb.arch/amd64-tailcall-self.exp
> index f1c6396d510..60b0e0cc8e9 100644
> --- a/gdb/testsuite/gdb.arch/amd64-tailcall-self.exp
> +++ b/gdb/testsuite/gdb.arch/amd64-tailcall-self.exp
> @@ -17,7 +17,7 @@ standard_testfile .S
>
> require is_x86_64_m64_target
>
> -if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {}] } {
> +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {symtab}] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.arch/i386-bp_permanent.exp b/gdb/testsuite/gdb.arch/i386-bp_permanent.exp
> index 9805f562634..503b886a47f 100644
> --- a/gdb/testsuite/gdb.arch/i386-bp_permanent.exp
> +++ b/gdb/testsuite/gdb.arch/i386-bp_permanent.exp
> @@ -22,12 +22,14 @@ require {is_any_target "i?86-*-*" "x86_64-*-*"}
>
> standard_testfile
>
> +set opts {symtab}
> +
> # some targets have leading underscores on assembly symbols.
> -set additional_flags [gdb_target_symbol_prefix_flags]
> +lappend opts [gdb_target_symbol_prefix_flags]
>
> # Don't use "debug", so that we don't have line information for the assembly
> # fragments.
> -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list $additional_flags]] != "" } {
> +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $opts] != "" } {
> untested "failed to compile"
> return
> }
> diff --git a/gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.exp b/gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.exp
> index a860c577809..ab224605732 100644
> --- a/gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.exp
> +++ b/gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.exp
> @@ -75,7 +75,7 @@ with_test_prefix "skip-cf-protection-stackalign" {
> }
>
> if { [prepare_for_testing "failed to prepare" "${testfile}-stackalign" \
> - $srcfile2 [list optimize=-O0 additional_flags=-fcf-protection=full]] } {
> + $srcfile2 [list symtab optimize=-O0 additional_flags=-fcf-protection=full]] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.base/break-entry.exp b/gdb/testsuite/gdb.base/break-entry.exp
> index 2629d99c7ef..390db6d39f2 100644
> --- a/gdb/testsuite/gdb.base/break-entry.exp
> +++ b/gdb/testsuite/gdb.base/break-entry.exp
> @@ -29,7 +29,7 @@ standard_testfile start.c
>
> require !use_gdb_stub
>
> -if { [prepare_for_testing "failed to prepare" ${testfile} $srcfile {additional_flags=-static}] } {
> +if { [prepare_for_testing "failed to prepare" ${testfile} $srcfile {symtab additional_flags=-static}] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.base/break-on-linker-gcd-function.exp b/gdb/testsuite/gdb.base/break-on-linker-gcd-function.exp
> index f430c51f946..a2afab54e04 100644
> --- a/gdb/testsuite/gdb.base/break-on-linker-gcd-function.exp
> +++ b/gdb/testsuite/gdb.base/break-on-linker-gcd-function.exp
> @@ -28,7 +28,7 @@ require allow_cplus_tests
> standard_testfile .cc
>
> if {[build_executable_from_specs $testfile.exp $testfile \
> - {c++ ldflags=-Wl,--gc-sections} \
> + {symtab c++ ldflags=-Wl,--gc-sections} \
> $srcfile {debug c++ additional_flags=-ffunction-sections}]} {
> untested "failed to compile"
> return
> diff --git a/gdb/testsuite/gdb.base/ctf-constvars.exp b/gdb/testsuite/gdb.base/ctf-constvars.exp
> index 9a98aaebe68..ca5eef3e2d9 100644
> --- a/gdb/testsuite/gdb.base/ctf-constvars.exp
> +++ b/gdb/testsuite/gdb.base/ctf-constvars.exp
> @@ -33,6 +33,7 @@ set opts {}
> lappend opts additional_flags=-gctf
> lappend opts ldflags=-Wl,--ctf-variables
> lappend opts nowarnings
> +lappend opts symtab
>
> if { [build_executable "failed to prepare" ${testfile} \
> [list $srcfile] $opts] } {
> diff --git a/gdb/testsuite/gdb.base/ctf-ptype.exp b/gdb/testsuite/gdb.base/ctf-ptype.exp
> index aabe3c9187d..daf0aea8733 100644
> --- a/gdb/testsuite/gdb.base/ctf-ptype.exp
> +++ b/gdb/testsuite/gdb.base/ctf-ptype.exp
> @@ -27,6 +27,7 @@ set opts {}
> lappend opts additional_flags=-gctf
> lappend opts ldflags=-Wl,--ctf-variables
> lappend opts nowarnings
> +lappend opts symtab
>
> if { [prepare_for_testing "failed to prepare" ${testfile} \
> [list $srcfile] $opts] } {
> diff --git a/gdb/testsuite/gdb.base/cvexpr.exp b/gdb/testsuite/gdb.base/cvexpr.exp
> index 8660289addb..64105f53e2a 100644
> --- a/gdb/testsuite/gdb.base/cvexpr.exp
> +++ b/gdb/testsuite/gdb.base/cvexpr.exp
> @@ -496,6 +496,7 @@ proc do_test {dir options} {
> }
>
> set ctf_opts {}
> +lappend ctf_opts symtab
> lappend ctf_opts additional_flags=-gctf
>
> # Build up the set of debug formats for which we will run this test.
> diff --git a/gdb/testsuite/gdb.base/dup-sect.exp b/gdb/testsuite/gdb.base/dup-sect.exp
> index f341456e00e..9e980941175 100644
> --- a/gdb/testsuite/gdb.base/dup-sect.exp
> +++ b/gdb/testsuite/gdb.base/dup-sect.exp
> @@ -36,7 +36,7 @@ standard_testfile .S
> set srcmainfile start.c
> set executable ${testfile}
>
> -if {[build_executable ${testfile}.exp $executable [list ${srcfile} ${srcmainfile}] {}] == -1} {
> +if {[build_executable ${testfile}.exp $executable [list ${srcfile} ${srcmainfile}] {symtab}] == -1} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.base/infcall-nested-structs.exp.tcl b/gdb/testsuite/gdb.base/infcall-nested-structs.exp.tcl
> index b840766a7bb..24040de0b62 100644
> --- a/gdb/testsuite/gdb.base/infcall-nested-structs.exp.tcl
> +++ b/gdb/testsuite/gdb.base/infcall-nested-structs.exp.tcl
> @@ -64,6 +64,7 @@ proc start_nested_structs_test { lang types } {
> set flags $compile_flags
> lappend flags $lang
> lappend flags "additional_flags=-O2"
> + lappend flags symtab
>
> for {set n 0} {$n<[llength ${types}]} {incr n} {
> set m [I2A ${n}]
> diff --git a/gdb/testsuite/gdb.base/info-shared.exp b/gdb/testsuite/gdb.base/info-shared.exp
> index 0e99eb96ef9..484dce4b8ff 100644
> --- a/gdb/testsuite/gdb.base/info-shared.exp
> +++ b/gdb/testsuite/gdb.base/info-shared.exp
> @@ -43,7 +43,7 @@ set define1 -DSHLIB1_NAME=\"$binfile_lib1_target\"
>
> set cflags "$define1 $define2"
> if { [prepare_for_testing "failed to prepare" $testfile $srcfile \
> - [list additional_flags=$cflags shlib_load]] } {
> + [list symtab additional_flags=$cflags shlib_load]] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.base/info_minsym.exp b/gdb/testsuite/gdb.base/info_minsym.exp
> index 43e3fd14eb0..24fc250df69 100644
> --- a/gdb/testsuite/gdb.base/info_minsym.exp
> +++ b/gdb/testsuite/gdb.base/info_minsym.exp
> @@ -22,8 +22,8 @@ set testfile info_minsym
>
> standard_testfile info_minsym.c
>
> -# Compile the program without debugging information, to have minimal symbols.
> -if {[prepare_for_testing "failed to prepare" $testfile $srcfile {c}]} {
> +# Compile the program with "symtab" to have minimal symbols.
> +if {[prepare_for_testing "failed to prepare" $testfile $srcfile {symtab c}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.base/jit-elf-fork.exp b/gdb/testsuite/gdb.base/jit-elf-fork.exp
> index f9f516c571c..2f9951983c0 100644
> --- a/gdb/testsuite/gdb.base/jit-elf-fork.exp
> +++ b/gdb/testsuite/gdb.base/jit-elf-fork.exp
> @@ -31,7 +31,7 @@ set jit_solib_srcfile ${srcdir}/${subdir}/${jit_solib_basename}.c
>
> # Compile a shared library to use as JIT objects.
> set jit_solibs_target [compile_and_download_n_jit_so \
> - $jit_solib_basename $jit_solib_srcfile 1]
> + $jit_solib_basename $jit_solib_srcfile 1 {symtab}]
> if { $jit_solibs_target == -1 } {
> return
> }
> diff --git a/gdb/testsuite/gdb.base/jit-elf-so.exp b/gdb/testsuite/gdb.base/jit-elf-so.exp
> index 2a770d5df6e..0b4ab4ab7e2 100644
> --- a/gdb/testsuite/gdb.base/jit-elf-so.exp
> +++ b/gdb/testsuite/gdb.base/jit-elf-so.exp
> @@ -150,7 +150,7 @@ if { [compile_jit_dlmain {shlib_load}] < 0 } {
>
> # Compile two shared libraries to use as JIT objects.
> set jit_solibs_target [compile_and_download_n_jit_so \
> - $jit_solib_basename $jit_solib_srcfile 2]
> + $jit_solib_basename $jit_solib_srcfile 2 {symtab}]
> if { $jit_solibs_target == -1 } {
> return
> }
> diff --git a/gdb/testsuite/gdb.base/jit-elf.exp b/gdb/testsuite/gdb.base/jit-elf.exp
> index 37ab1ea950a..8b4ed950cbd 100644
> --- a/gdb/testsuite/gdb.base/jit-elf.exp
> +++ b/gdb/testsuite/gdb.base/jit-elf.exp
> @@ -136,7 +136,7 @@ proc one_jit_test {jit_solibs_target match_str reattach} {
>
> # Compile two shared libraries to use as JIT objects.
> set jit_solibs_target [compile_and_download_n_jit_so \
> - $jit_solib_basename $jit_solib_srcfile 2]
> + $jit_solib_basename $jit_solib_srcfile 2 {symtab}]
> if { $jit_solibs_target == -1 } {
> return
> }
> diff --git a/gdb/testsuite/gdb.base/list-nodebug.exp b/gdb/testsuite/gdb.base/list-nodebug.exp
> index c29905d94ba..fa9b84e49fa 100644
> --- a/gdb/testsuite/gdb.base/list-nodebug.exp
> +++ b/gdb/testsuite/gdb.base/list-nodebug.exp
> @@ -20,7 +20,7 @@ standard_testfile .c -2.c
>
> if { [prepare_for_testing_full "failed to prepare" \
> [list \
> - $testfile {} \
> + $testfile {symtab} \
> $srcfile {} \
> $srcfile2 {debug}]] } {
> return
> diff --git a/gdb/testsuite/gdb.base/morestack.exp b/gdb/testsuite/gdb.base/morestack.exp
> index 9b5ad145659..90423d4a9cc 100644
> --- a/gdb/testsuite/gdb.base/morestack.exp
> +++ b/gdb/testsuite/gdb.base/morestack.exp
> @@ -19,9 +19,9 @@ require {have_compile_flag -fsplit-stack}
>
> standard_testfile
>
> -set opts "additional_flags=-fsplit-stack"
> +set opts {symtab additional_flags=-fsplit-stack}
> if { [prepare_for_testing "failed to prepare" ${testfile} $srcfile \
> - [list $opts]] } {
> + $opts] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.base/msym-bp-shl.exp b/gdb/testsuite/gdb.base/msym-bp-shl.exp
> index 2b29e550af4..ba93c8bcc66 100644
> --- a/gdb/testsuite/gdb.base/msym-bp-shl.exp
> +++ b/gdb/testsuite/gdb.base/msym-bp-shl.exp
> @@ -40,7 +40,7 @@ proc test {debug} {
> if {$debug} {
> set options "debug"
> } else {
> - set options ""
> + set options "symtab"
> }
>
> set bin ${binfile}-$debug
> diff --git a/gdb/testsuite/gdb.base/msym-bp.exp b/gdb/testsuite/gdb.base/msym-bp.exp
> index 18e16c581f7..0c2e861c7fd 100644
> --- a/gdb/testsuite/gdb.base/msym-bp.exp
> +++ b/gdb/testsuite/gdb.base/msym-bp.exp
> @@ -36,7 +36,7 @@ proc test {debug} {
> if {$debug} {
> set options "debug"
> } else {
> - set options ""
> + set options "symtab"
> }
>
> if { [prepare_for_testing "failed to prepare" $testfile-$debug \
> diff --git a/gdb/testsuite/gdb.base/msym-lang.exp b/gdb/testsuite/gdb.base/msym-lang.exp
> index 38521e4ebf7..2b57d0caef7 100644
> --- a/gdb/testsuite/gdb.base/msym-lang.exp
> +++ b/gdb/testsuite/gdb.base/msym-lang.exp
> @@ -16,7 +16,7 @@
> standard_testfile msym-lang-main.c msym-lang.c
>
> if {[prepare_for_testing "failed to prepare" $testfile [list $srcfile $srcfile2] \
> - {c++}]} {
> + {symtab c++}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.base/nodebug.exp b/gdb/testsuite/gdb.base/nodebug.exp
> index 76de3b82f97..bca1accf945 100644
> --- a/gdb/testsuite/gdb.base/nodebug.exp
> +++ b/gdb/testsuite/gdb.base/nodebug.exp
> @@ -18,7 +18,10 @@
>
> standard_testfile .c
>
> -set exec_opts {}
> +# We need at least minsyms to be able to set breakpoints, run to them,
> +# and call functions by name.
> +set exec_opts {symtab}
> +
> if {[have_compile_flag -std=c99]} {
> # Gcc 15 defaults to c23, which no longer supports unprototyped functions.
> # Use a c dialect that does support this.
> diff --git a/gdb/testsuite/gdb.base/psym-external-decl.exp b/gdb/testsuite/gdb.base/psym-external-decl.exp
> index bbe8a043fab..b8eec5e665b 100644
> --- a/gdb/testsuite/gdb.base/psym-external-decl.exp
> +++ b/gdb/testsuite/gdb.base/psym-external-decl.exp
> @@ -23,7 +23,7 @@ set srcfiles [list $srcfile $srcfile2]
>
> if { [build_executable_from_specs \
> "failed to prepare" \
> - $testfile [list] \
> + $testfile [list symtab] \
> $srcfile [list debug] \
> $srcfile2 [list]] == -1 } {
> return
> diff --git a/gdb/testsuite/gdb.base/solib-nodir.exp b/gdb/testsuite/gdb.base/solib-nodir.exp
> index 4189e1abd5b..733545975fa 100644
> --- a/gdb/testsuite/gdb.base/solib-nodir.exp
> +++ b/gdb/testsuite/gdb.base/solib-nodir.exp
> @@ -40,7 +40,7 @@ if { [build_executable "build library" ${binlibfile} ${srclibfile} \
> {debug shlib}] == -1
> || [gdb_gnu_strip_debug $binlibfile]
> || [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != ""
> - || [gdb_compile "${objfile} ${binlibfile}" "${binfile}" executable {}] != "" } {
> + || [gdb_compile "${objfile} ${binlibfile}" "${binfile}" executable {symtab}] != "" } {
> untested "failed to compile"
> return
> }
> diff --git a/gdb/testsuite/gdb.base/whatis.exp b/gdb/testsuite/gdb.base/whatis.exp
> index 545d50f308a..09dec9f0507 100644
> --- a/gdb/testsuite/gdb.base/whatis.exp
> +++ b/gdb/testsuite/gdb.base/whatis.exp
> @@ -592,6 +592,7 @@ proc do_test {dir options} {
> set ctf_opts {}
> lappend ctf_opts additional_flags=-gctf
> lappend ctf_opts ldflags=-Wl,--ctf-variables
> +lappend ctf_opts symtab
>
> # Build up the set of debug formats for which we will run this test.
> set specs { {dwarf {debug}} }
> diff --git a/gdb/testsuite/gdb.compile/compile-cplus-print.exp b/gdb/testsuite/gdb.compile/compile-cplus-print.exp
> index 9ad61184691..111296993a1 100644
> --- a/gdb/testsuite/gdb.compile/compile-cplus-print.exp
> +++ b/gdb/testsuite/gdb.compile/compile-cplus-print.exp
> @@ -21,7 +21,7 @@ require is_c_compiler_gcc
>
> require allow_compile_tests
>
> -set options {}
> +set options {symtab}
> if {[test_compiler_info gcc*]} {
> lappend options additional_flags=-g3
> lappend options additional_flags=-std=gnu++11
> diff --git a/gdb/testsuite/gdb.compile/compile-cplus.exp b/gdb/testsuite/gdb.compile/compile-cplus.exp
> index 5db328feff6..eebc02dc0ce 100644
> --- a/gdb/testsuite/gdb.compile/compile-cplus.exp
> +++ b/gdb/testsuite/gdb.compile/compile-cplus.exp
> @@ -21,7 +21,7 @@ require is_c_compiler_gcc
>
> require allow_compile_tests
>
> -set options {}
> +set options {symtab}
> if { [test_compiler_info gcc*] || [test_compiler_info clang*] } {
> lappend options additional_flags=-g3
> lappend options additional_flags=-std=gnu++11
> diff --git a/gdb/testsuite/gdb.compile/compile-ifunc.exp b/gdb/testsuite/gdb.compile/compile-ifunc.exp
> index e1cc7aee211..5368196ee36 100644
> --- a/gdb/testsuite/gdb.compile/compile-ifunc.exp
> +++ b/gdb/testsuite/gdb.compile/compile-ifunc.exp
> @@ -31,7 +31,7 @@ if {[test_compiler_info gcc*]} {
> with_test_prefix "nodebug" {
>
> if { [prepare_for_testing "failed to prepare" "$testfile-nodebug" \
> - $srcfile $flags] } {
> + $srcfile [list symtab $flags]] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.compile/compile.exp b/gdb/testsuite/gdb.compile/compile.exp
> index 5998f30180d..07fa6b30af7 100644
> --- a/gdb/testsuite/gdb.compile/compile.exp
> +++ b/gdb/testsuite/gdb.compile/compile.exp
> @@ -20,7 +20,7 @@ require allow_compile_tests
> standard_testfile .c compile-shlib.c compile-constvar.S compile-nodebug.c
>
> require is_c_compiler_gcc
> -set options {additional_flags=-g3}
> +set options {symtab additional_flags=-g3}
>
> if { ![is_x86_64_m64_target] } {
> verbose "Skipping x86_64 LOC_CONST test."
> diff --git a/gdb/testsuite/gdb.cp/cmpd-minsyms.exp b/gdb/testsuite/gdb.cp/cmpd-minsyms.exp
> index ccd7f5d692a..ffae762fe1f 100644
> --- a/gdb/testsuite/gdb.cp/cmpd-minsyms.exp
> +++ b/gdb/testsuite/gdb.cp/cmpd-minsyms.exp
> @@ -23,7 +23,7 @@ require allow_cplus_tests
> standard_testfile .cc
>
> # Do NOT compile with debug flag.
> -if {[prepare_for_testing "failed to prepare" $testfile $srcfile {c++}]} {
> +if {[prepare_for_testing "failed to prepare" $testfile $srcfile {symtab c++}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.cp/infcall-nodebug.exp.tcl b/gdb/testsuite/gdb.cp/infcall-nodebug.exp.tcl
> index f7aea3bd1df..de36b2ae929 100644
> --- a/gdb/testsuite/gdb.cp/infcall-nodebug.exp.tcl
> +++ b/gdb/testsuite/gdb.cp/infcall-nodebug.exp.tcl
> @@ -43,7 +43,7 @@ proc build_and_run_test { lang symbols } {
> if { $symbols == "debug" } {
> set debug_flags "debug"
> } else {
> - set debug_flags ""
> + set debug_flags "symtab"
> }
>
> # Compile both files to objects, then link together.
> @@ -64,7 +64,7 @@ proc build_and_run_test { lang symbols } {
> return -1
> }
>
> - if { [gdb_compile "$main_o $lib_o" ${binfile} executable ""] != "" } {
> + if { [gdb_compile "$main_o $lib_o" ${binfile} executable symtab] != "" } {
> untested "failed to compile"
> return -1
> }
> diff --git a/gdb/testsuite/gdb.cp/nsalias.exp b/gdb/testsuite/gdb.cp/nsalias.exp
> index f3224b4339d..2d9c12dfc39 100644
> --- a/gdb/testsuite/gdb.cp/nsalias.exp
> +++ b/gdb/testsuite/gdb.cp/nsalias.exp
> @@ -178,7 +178,7 @@ if {[gdb_compile $asm_file ${binfile}2.o object {}] != ""} {
> }
>
> if {[gdb_compile [list ${binfile}1.o ${binfile}2.o] \
> - $binfile executable {c++}] != ""} {
> + $binfile executable {symtab c++}] != ""} {
> return
> }
>
> @@ -308,7 +308,7 @@ if {[gdb_compile $asm_file ${binfile}3.o object {}] != ""} {
> }
>
> if {[gdb_compile [list ${binfile}1.o ${binfile}3.o] \
> - ${binfile}-r executable {c++}] != ""} {
> + ${binfile}-r executable {symtab c++}] != ""} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.ctf/dwarf2-and-ctf.exp b/gdb/testsuite/gdb.ctf/dwarf2-and-ctf.exp
> index b3d2b3583d7..84171b88d83 100644
> --- a/gdb/testsuite/gdb.ctf/dwarf2-and-ctf.exp
> +++ b/gdb/testsuite/gdb.ctf/dwarf2-and-ctf.exp
> @@ -37,7 +37,7 @@ if { [gdb_compile $s2 ${objfile2} object $opts] != "" } {
> return
> }
>
> -set opts {}
> +set opts {symtab}
> lappend opts "additional_flags=-Wl,-ctf-variables"
> if { [gdb_compile [list ${objfile} ${objfile2}] $binfile executable $opts] != "" } {
> unsupported "failed to link"
> diff --git a/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp
> index 0e7318bfd64..286d76975a2 100644
> --- a/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp
> +++ b/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp
> @@ -69,7 +69,7 @@ Dwarf::assemble $asm_file {
> }
> }
>
> -if {[prepare_for_testing "failed to prepare" $executable "${asm_file} ${srcfile}" {}]} {
> +if {[prepare_for_testing "failed to prepare" $executable "${asm_file} ${srcfile}" {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/debug-names-bad-cu-index.exp b/gdb/testsuite/gdb.dwarf2/debug-names-bad-cu-index.exp
> index 5d31414ba29..4fd37b45bce 100644
> --- a/gdb/testsuite/gdb.dwarf2/debug-names-bad-cu-index.exp
> +++ b/gdb/testsuite/gdb.dwarf2/debug-names-bad-cu-index.exp
> @@ -83,7 +83,7 @@ Dwarf::assemble {
> }
>
> if {[build_executable ${testfile}.exp $testfile "${asm_file} ${srcfile}" \
> - [list ldflags=-nostartfiles]] == -1} {
> + [list symtab ldflags=-nostartfiles]] == -1} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/debug-names-duplicate-cu.exp b/gdb/testsuite/gdb.dwarf2/debug-names-duplicate-cu.exp
> index 11294ae5a13..4d7dd56107f 100644
> --- a/gdb/testsuite/gdb.dwarf2/debug-names-duplicate-cu.exp
> +++ b/gdb/testsuite/gdb.dwarf2/debug-names-duplicate-cu.exp
> @@ -61,7 +61,7 @@ Dwarf::assemble {
> }
>
> if {[prepare_for_testing "failed to prepare" $testfile "${asm_file} ${srcfile}" \
> - [list ldflags=-nostartfiles]]} {
> + [list symtab ldflags=-nostartfiles]]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/debug-names-missing-cu.exp b/gdb/testsuite/gdb.dwarf2/debug-names-missing-cu.exp
> index c5eca54b55c..558e8d7d5b6 100644
> --- a/gdb/testsuite/gdb.dwarf2/debug-names-missing-cu.exp
> +++ b/gdb/testsuite/gdb.dwarf2/debug-names-missing-cu.exp
> @@ -68,7 +68,7 @@ Dwarf::assemble {
> }
>
> if {[prepare_for_testing "failed to prepare" $testfile "${asm_file} ${srcfile}" \
> - [list ldflags=-nostartfiles]]} {
> + [list symtab ldflags=-nostartfiles]]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/debug-names-tu.exp.tcl b/gdb/testsuite/gdb.dwarf2/debug-names-tu.exp.tcl
> index bd48df6a894..ad19db12cdf 100644
> --- a/gdb/testsuite/gdb.dwarf2/debug-names-tu.exp.tcl
> +++ b/gdb/testsuite/gdb.dwarf2/debug-names-tu.exp.tcl
> @@ -91,7 +91,7 @@ Dwarf::assemble {
> }
>
> if {[prepare_for_testing "failed to prepare" $testfile "${asm_file} ${srcfile}" \
> - [list ldflags=-nostartfiles]]} {
> + [list symtab ldflags=-nostartfiles]]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/debug-names.exp b/gdb/testsuite/gdb.dwarf2/debug-names.exp
> index 39bdd3d59e8..e61c20a9142 100644
> --- a/gdb/testsuite/gdb.dwarf2/debug-names.exp
> +++ b/gdb/testsuite/gdb.dwarf2/debug-names.exp
> @@ -64,7 +64,7 @@ Dwarf::assemble {
> }
>
> if {[prepare_for_testing "failed to prepare" $testfile "${asm_file} ${srcfile}" \
> - [list ldflags=-nostartfiles]]} {
> + [list symtab ldflags=-nostartfiles]]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.exp b/gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.exp
> index 6e729f8c6ec..4a1065da0ae 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.exp
> @@ -17,12 +17,13 @@ load_lib dwarf.exp
> # This test can only be run on targets which support DWARF-2 and use gas.
> require dwarf2_support
>
> +set opts {symtab}
> +
> # Some targets have leading underscores on assembly symbols.
> -set additional_flags [gdb_target_symbol_prefix_flags_asm]
> +lappend opts [gdb_target_symbol_prefix_flags_asm]
>
> standard_testfile .S
> -if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
> - $additional_flags]} {
> +if {[prepare_for_testing "failed to prepare" $testfile $srcfile $opts]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-complex-parts.exp b/gdb/testsuite/gdb.dwarf2/dw2-complex-parts.exp
> index f8da14c0a5a..bb77533df6d 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-complex-parts.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-complex-parts.exp
> @@ -158,7 +158,7 @@ Dwarf::assemble $asm_file {
> }
>
> if {[prepare_for_testing "failed to prepare" $testfile \
> - "${asm_file} ${srcfile}" {}]} {
> + "${asm_file} ${srcfile}" {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.exp b/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.exp
> index a659ae7171a..a16463ef71f 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.exp
> @@ -26,7 +26,7 @@ require dwarf2_support
> standard_testfile .S -main.c
>
> if { [prepare_for_testing "failed to prepare" ${testfile} \
> - [list $srcfile2 $srcfile] {}] } {
> + [list $srcfile2 $srcfile] {symtab}] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.exp b/gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.exp
> index 6b01e1d2880..633d18d9204 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.exp
> @@ -392,7 +392,8 @@ puts -nonewline $f "\
>
> close $f
>
> -set opts {}
> +set opts {symtab}
> +
> # Base directory.
> lappend opts "additional_flags=-DBDIR=\"${srcabsdir}\""
> # Incorrect directory which should never be visible from GDB.
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.exp b/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.exp
> index 15bb0f704cd..4fca3c8591f 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.exp
> @@ -28,7 +28,7 @@ set executable ${testfile}
>
> if {[prepare_for_testing_full "failed to prepare" \
> [list \
> - $testfile c++ \
> + $testfile {c++ symtab} \
> $testfile-main.cc {c++} \
> $srcfile {}]]} {
> return
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp b/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp
> index 81a0f2fb45d..480fb862c3e 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp
> @@ -40,7 +40,7 @@ lappend flags \
> set executable ${testfile}
>
> if { [prepare_for_testing_full "failed to prepare" \
> - [list $testfile {} \
> + [list $testfile {symtab} \
> $srcfile [concat $flags {}] \
> $srcfile2 {} \
> $srcfile3 {debug}]] == -1 } {
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-restore.exp b/gdb/testsuite/gdb.dwarf2/dw2-restore.exp
> index e0c334f80cc..4eacd961772 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-restore.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-restore.exp
> @@ -19,7 +19,7 @@
> require is_x86_64_m64_target
> standard_testfile .S
>
> -set opts [list {additional_flags=-nostdlib}]
> +set opts {symtab additional_flags=-nostdlib}
>
> # Clang's integrated assembler doesn't support .func or .endfunc.
> if { [test_compiler_info clang*] } {
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp b/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp
> index 276793325d6..e2e87e4904b 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp
> @@ -45,7 +45,8 @@ if {[is_ilp32_target]} {
>
> if { [build_executable ${testfile}.exp ${executable} \
> "${testfile}.c ${testfile}.S" \
> - [list additional_flags=-DINLINED \
> + [list symtab \
> + additional_flags=-DINLINED \
> additional_flags=-DPTRBITS=$ptrbits]] == -1 } {
> return
> }
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp b/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp
> index 0b2d7f64f75..f5e09337d63 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp
> @@ -90,7 +90,7 @@ Dwarf::assemble $asm_file {
> }
>
> if { [prepare_for_testing "failed to prepare" $testfile \
> - "${asm_file} ${srcfile}" {}] } {
> + "${asm_file} ${srcfile}" {symtab}] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp b/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp
> index 7c7c2a20432..4d334649e79 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp
> @@ -62,7 +62,7 @@ Dwarf::assemble $asm_file {
> }
>
> if { [prepare_for_testing "failed to prepare" $testfile \
> - "${asm_file} ${srcfile}" {}] } {
> + "${asm_file} ${srcfile}" {symtab}] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-unspecified-type.exp b/gdb/testsuite/gdb.dwarf2/dw2-unspecified-type.exp
> index fe0974fd8f4..7300b0c2737 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-unspecified-type.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-unspecified-type.exp
> @@ -92,7 +92,7 @@ Dwarf::assemble $asm_file {
> }
>
> if {[prepare_for_testing "failed to prepare" $testfile \
> - "${asm_file} ${srcfile} ${srcfile2}" {}]} {
> + "${asm_file} ${srcfile} ${srcfile2}" {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/dwz.exp b/gdb/testsuite/gdb.dwarf2/dwz.exp
> index 96dab6cf930..ae1437fe109 100644
> --- a/gdb/testsuite/gdb.dwarf2/dwz.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dwz.exp
> @@ -80,7 +80,7 @@ Dwarf::assemble $asm_file {
> }
> }
>
> -if {[prepare_for_testing "failed to prepare" $testfile "${asm_file} ${srcfile}" {}]} {
> +if {[prepare_for_testing "failed to prepare" $testfile "${asm_file} ${srcfile}" {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/dwzbuildid.tcl b/gdb/testsuite/gdb.dwarf2/dwzbuildid.tcl
> index 2308ab67acf..4c0c0580df5 100644
> --- a/gdb/testsuite/gdb.dwarf2/dwzbuildid.tcl
> +++ b/gdb/testsuite/gdb.dwarf2/dwzbuildid.tcl
> @@ -177,7 +177,7 @@ foreach_with_prefix testname $tests {
> set objs [list ${binfile}1.o ${binfile}6.o]
> }
>
> - if {[gdb_compile $objs ${binfile}-$testname executable {quiet}] != ""} {
> + if {[gdb_compile $objs ${binfile}-$testname executable {symtab quiet}] != ""} {
> unsupported "compilation failed"
> continue
> }
> diff --git a/gdb/testsuite/gdb.dwarf2/entry-value-typedef.exp b/gdb/testsuite/gdb.dwarf2/entry-value-typedef.exp
> index 999c01c7179..d6420ffdc25 100644
> --- a/gdb/testsuite/gdb.dwarf2/entry-value-typedef.exp
> +++ b/gdb/testsuite/gdb.dwarf2/entry-value-typedef.exp
> @@ -27,7 +27,7 @@ if { [istarget "x86_64-*-linux*"] && [is_lp64_target] } {
>
> standard_testfile -$suffix.S
>
> -if {[gdb_compile "$srcdir/$subdir/$srcfile" "$binfile" executable {c++}] != ""} {
> +if {[gdb_compile "$srcdir/$subdir/$srcfile" "$binfile" executable {symtab c++}] != ""} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/fission-call.exp b/gdb/testsuite/gdb.dwarf2/fission-call.exp
> index f7cfb6296e8..99708b5d3e0 100644
> --- a/gdb/testsuite/gdb.dwarf2/fission-call.exp
> +++ b/gdb/testsuite/gdb.dwarf2/fission-call.exp
> @@ -107,7 +107,7 @@ Dwarf::assemble $asm_file {
> }
>
> set obj [standard_output_file "${testfile}-dw.o"]
> -if {[build_executable_and_dwo_files "$testfile.exp" "${binfile}" {} \
> +if {[build_executable_and_dwo_files "$testfile.exp" "${binfile}" {symtab} \
> [list $asm_file {split-dwo} $obj] \
> [list $srcfile {}]]} {
> return
> diff --git a/gdb/testsuite/gdb.dwarf2/fission-reread.exp b/gdb/testsuite/gdb.dwarf2/fission-reread.exp
> index 80cf179a538..998f9faf696 100644
> --- a/gdb/testsuite/gdb.dwarf2/fission-reread.exp
> +++ b/gdb/testsuite/gdb.dwarf2/fission-reread.exp
> @@ -29,7 +29,7 @@ standard_testfile .S
> set obj [standard_output_file "${testfile}.o"]
> set dwo [standard_output_file "${testfile}.dwo"]
>
> -set exec_options {}
> +set exec_options {symtab}
> if { $additional_flags != "" } {
> lappend exec_options $additional_flags
> }
> diff --git a/gdb/testsuite/gdb.dwarf2/fission-with-type-unit.exp b/gdb/testsuite/gdb.dwarf2/fission-with-type-unit.exp
> index 858265b3afa..f039e517e86 100644
> --- a/gdb/testsuite/gdb.dwarf2/fission-with-type-unit.exp
> +++ b/gdb/testsuite/gdb.dwarf2/fission-with-type-unit.exp
> @@ -77,7 +77,7 @@ Dwarf::assemble $asm_file {
> }
>
> set obj [standard_output_file "${testfile}-dw.o"]
> -if {[build_executable_and_dwo_files "$testfile.exp" "${binfile}" {} \
> +if {[build_executable_and_dwo_files "$testfile.exp" "${binfile}" {symtab} \
> [list $asm_file {split-dwo} $obj] \
> [list $srcfile {}]]} {
> return
> diff --git a/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp b/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp
> index 6f5045f545d..0c2723edc6b 100644
> --- a/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp
> +++ b/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp
> @@ -101,7 +101,7 @@ Dwarf::assemble $dwarf_asm {
> }
>
> if { [build_executable ${testfile}.exp ${testfile} "$srcfile $dwarf_asm" \
> - {additional_flags=-nostdlib additional_flags=-static}] != 0 } {
> + {symtab additional_flags=-nostdlib additional_flags=-static}] != 0 } {
> untested "failed to compile"
> return
> }
> diff --git a/gdb/testsuite/gdb.dwarf2/gdb-index-skeletonless-tu.exp b/gdb/testsuite/gdb.dwarf2/gdb-index-skeletonless-tu.exp
> index 1bd2a6981e5..ce4c7913548 100644
> --- a/gdb/testsuite/gdb.dwarf2/gdb-index-skeletonless-tu.exp
> +++ b/gdb/testsuite/gdb.dwarf2/gdb-index-skeletonless-tu.exp
> @@ -77,7 +77,7 @@ Dwarf::assemble $asm_file {
> }
>
> set obj [standard_output_file "${testfile}-dw.o"]
> -if {[build_executable_and_dwo_files "$testfile.exp" "${binfile}" {} \
> +if {[build_executable_and_dwo_files "$testfile.exp" "${binfile}" {symtab} \
> [list $asm_file {split-dwo} $obj] \
> [list $srcfile {}]]} {
> return
> diff --git a/gdb/testsuite/gdb.dwarf2/implptr-64bit.exp b/gdb/testsuite/gdb.dwarf2/implptr-64bit.exp
> index 59b91fad6fa..fa07296ba04 100644
> --- a/gdb/testsuite/gdb.dwarf2/implptr-64bit.exp
> +++ b/gdb/testsuite/gdb.dwarf2/implptr-64bit.exp
> @@ -123,7 +123,7 @@ proc test_1 { name dwarf_version offset_size addr_size ref_addr_size two_cu } {
> }
>
> # 32-bit targets do not support any of the testcases; keep quiet there.
> - set opts {quiet}
> + set opts {symtab quiet}
> set executable ${testfile}-${name}
> if {[prepare_for_testing "failed to prepare" $executable "${asm_file} ${srcfile}" $opts]} {
> return -1
> diff --git a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
> index ac4f0491198..06d2e882eae 100644
> --- a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
> +++ b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
> @@ -76,7 +76,7 @@ Dwarf::assemble $asm_file {
> }
> }
>
> -if {[prepare_for_testing "failed to prepare" $executable "${asm_file} ${srcfile}" {}]} {
> +if {[prepare_for_testing "failed to prepare" $executable "${asm_file} ${srcfile}" {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/implref-array.exp b/gdb/testsuite/gdb.dwarf2/implref-array.exp
> index dfa676de693..d3edc04efc4 100644
> --- a/gdb/testsuite/gdb.dwarf2/implref-array.exp
> +++ b/gdb/testsuite/gdb.dwarf2/implref-array.exp
> @@ -113,7 +113,7 @@ Dwarf::assemble ${asm_file} {
> }
> }
>
> -if {[prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {}]} {
> +if {[prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/implref-const.exp b/gdb/testsuite/gdb.dwarf2/implref-const.exp
> index 0d79e05f8ef..587f59cf75d 100644
> --- a/gdb/testsuite/gdb.dwarf2/implref-const.exp
> +++ b/gdb/testsuite/gdb.dwarf2/implref-const.exp
> @@ -92,7 +92,7 @@ Dwarf::assemble ${asm_file} {
> }
> }
>
> -if {[prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {}]} {
> +if {[prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/implref-global.exp b/gdb/testsuite/gdb.dwarf2/implref-global.exp
> index 4c2466756e3..67869519a21 100644
> --- a/gdb/testsuite/gdb.dwarf2/implref-global.exp
> +++ b/gdb/testsuite/gdb.dwarf2/implref-global.exp
> @@ -92,7 +92,7 @@ Dwarf::assemble ${asm_file} {
> }
> }
>
> -if {[prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {}]} {
> +if {[prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/implref-struct.exp b/gdb/testsuite/gdb.dwarf2/implref-struct.exp
> index d62f426ed73..c38bc0fea3c 100644
> --- a/gdb/testsuite/gdb.dwarf2/implref-struct.exp
> +++ b/gdb/testsuite/gdb.dwarf2/implref-struct.exp
> @@ -129,7 +129,7 @@ Dwarf::assemble ${asm_file} {
> }
> }
>
> -if {[prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {}]} {
> +if {[prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp b/gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp
> index be97260c0b5..1734bfc53e3 100644
> --- a/gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp
> +++ b/gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp
> @@ -201,7 +201,7 @@ Dwarf::assemble $asm_file {
> }
>
> if {[prepare_for_testing "failed to prepare" $testfile \
> - "${asm_file} ${srcfile}" {}]} {
> + "${asm_file} ${srcfile}" {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/intbits.exp b/gdb/testsuite/gdb.dwarf2/intbits.exp
> index 46e45aeb861..47c0bc53f01 100644
> --- a/gdb/testsuite/gdb.dwarf2/intbits.exp
> +++ b/gdb/testsuite/gdb.dwarf2/intbits.exp
> @@ -195,7 +195,7 @@ Dwarf::assemble ${asm_file} {
> }
>
> if {[prepare_for_testing "failed to prepare" ${executable} \
> - [list ${asm_file} ${srcfile}] {}]} {
> + [list ${asm_file} ${srcfile}] {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/multi-piece-inherited-bitfield.exp b/gdb/testsuite/gdb.dwarf2/multi-piece-inherited-bitfield.exp
> index 427828f7178..d72c226f71d 100644
> --- a/gdb/testsuite/gdb.dwarf2/multi-piece-inherited-bitfield.exp
> +++ b/gdb/testsuite/gdb.dwarf2/multi-piece-inherited-bitfield.exp
> @@ -133,7 +133,7 @@ Dwarf::assemble ${asm_file} {
>
> # Now compile both C source and generated DWARF assembly.
> if {[prepare_for_testing "failed to prepare" ${testfile} \
> - [list ${asm_file} ${srcfile}] {}]} {
> + [list ${asm_file} ${srcfile}] {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/multi-piece-primitive-field.exp b/gdb/testsuite/gdb.dwarf2/multi-piece-primitive-field.exp
> index 4d6b3fcb6c1..ac6de94487a 100644
> --- a/gdb/testsuite/gdb.dwarf2/multi-piece-primitive-field.exp
> +++ b/gdb/testsuite/gdb.dwarf2/multi-piece-primitive-field.exp
> @@ -162,7 +162,7 @@ Dwarf::assemble ${asm_file} {
>
> # Now compile both C source and generated DWARF assembly.
> if {[prepare_for_testing "failed to prepare" ${testfile} \
> - [list ${asm_file} ${srcfile}] {}]} {
> + [list ${asm_file} ${srcfile}] {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/pr13961.exp b/gdb/testsuite/gdb.dwarf2/pr13961.exp
> index 46bcdd70b0e..d89d1943377 100644
> --- a/gdb/testsuite/gdb.dwarf2/pr13961.exp
> +++ b/gdb/testsuite/gdb.dwarf2/pr13961.exp
> @@ -20,13 +20,15 @@ load_lib dwarf.exp
> # This test can only be run on targets which support DWARF-2 and use gas.
> require dwarf2_support
>
> +set opts {symtab}
> +
> # Some targets have leading underscores on assembly symbols.
> -set additional_flags [gdb_target_symbol_prefix_flags_asm]
> +lappend opts [gdb_target_symbol_prefix_flags_asm]
>
> standard_testfile .S
>
> if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
> - ${additional_flags}] == -1 } {
> + $opts] == -1 } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/self-spec.exp b/gdb/testsuite/gdb.dwarf2/self-spec.exp
> index b51c7e41a8b..fbdb8e50a52 100644
> --- a/gdb/testsuite/gdb.dwarf2/self-spec.exp
> +++ b/gdb/testsuite/gdb.dwarf2/self-spec.exp
> @@ -52,7 +52,7 @@ Dwarf::assemble $asm_file {
> }
> }
>
> -if {[prepare_for_testing "failed to prepare" $testfile "${asm_file} ${srcfile}" {}]} {
> +if {[prepare_for_testing "failed to prepare" $testfile "${asm_file} ${srcfile}" {symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.dwarf2/varval.exp b/gdb/testsuite/gdb.dwarf2/varval.exp
> index 032e3d11c0e..f9a24a62bc8 100644
> --- a/gdb/testsuite/gdb.dwarf2/varval.exp
> +++ b/gdb/testsuite/gdb.dwarf2/varval.exp
> @@ -314,7 +314,7 @@ proc setup_exec { arg_bad } {
> }
> }
>
> - if {[prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {}]} {
> + if {[prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {symtab}]} {
> return -1
> }
> }
> diff --git a/gdb/testsuite/gdb.guile/scm-breakpoint.exp b/gdb/testsuite/gdb.guile/scm-breakpoint.exp
> index 60764a986c1..1b526f4f646 100644
> --- a/gdb/testsuite/gdb.guile/scm-breakpoint.exp
> +++ b/gdb/testsuite/gdb.guile/scm-breakpoint.exp
> @@ -531,7 +531,7 @@ proc_with_prefix test_bkpt_probe {} {
> global decimal hex testfile srcfile
>
> if { [prepare_for_testing "failed to prepare" ${testfile}-probes \
> - ${srcfile} {additional_flags=-DUSE_PROBES}] } {
> + ${srcfile} {symtab additional_flags=-DUSE_PROBES}] } {
> return -1
> }
>
> diff --git a/gdb/testsuite/gdb.linespec/break-asm-file.exp b/gdb/testsuite/gdb.linespec/break-asm-file.exp
> index 6b86dd5b4cd..a9df431b305 100644
> --- a/gdb/testsuite/gdb.linespec/break-asm-file.exp
> +++ b/gdb/testsuite/gdb.linespec/break-asm-file.exp
> @@ -42,7 +42,7 @@ if {[gdb_compile ${srcdir}/${subdir}/$asm_file1 ${binfile}3.o \
> }
>
> if {[gdb_compile [list ${binfile}1.o ${binfile}2.o ${binfile}3.o] \
> - "${binfile}" executable {}] != ""} {
> + "${binfile}" executable {symtab}] != ""} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.mi/dw2-ref-missing-frame.exp b/gdb/testsuite/gdb.mi/dw2-ref-missing-frame.exp
> index 94f42fe77ab..7e59b003cf8 100644
> --- a/gdb/testsuite/gdb.mi/dw2-ref-missing-frame.exp
> +++ b/gdb/testsuite/gdb.mi/dw2-ref-missing-frame.exp
> @@ -38,7 +38,7 @@ set objmainfile [standard_output_file ${testfile}-main.o]
> if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" $objsfile object {}] != ""
> || [gdb_compile "${srcdir}/${subdir}/${srcfile2}" $objfuncfile object {}] != ""
> || [gdb_compile "${srcdir}/${subdir}/${srcfile3}" $objmainfile object {debug}] != ""
> - || [gdb_compile "$objfuncfile $objsfile $objmainfile" $binfile executable {}] != "" } {
> + || [gdb_compile "$objfuncfile $objsfile $objmainfile" $binfile executable {symtab}] != "" } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp b/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp
> index adcd713453c..47f4574cd1b 100644
> --- a/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp
> +++ b/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp
> @@ -25,6 +25,7 @@ if {[info exists COMPILE]} {
> lappend opts debug optimize=-O2
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> if {[build_executable ${testfile}.exp ${binfile} ${srcfile} $opts]} {
> diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py-frame.exp
> index aebec651964..97d3262fa42 100644
> --- a/gdb/testsuite/gdb.python/py-frame.exp
> +++ b/gdb/testsuite/gdb.python/py-frame.exp
> @@ -237,7 +237,7 @@ foreach_with_prefix stop_at_level { None 0 1 2 } {
> }
>
> # Compile again without debug info.
> -if { [prepare_for_testing "failed to prepare" ${testfile}-nodebug ${srcfile} {}] } {
> +if { [prepare_for_testing "failed to prepare" ${testfile}-nodebug ${srcfile} {symtab}] } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp b/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp
> index 8a4bf001a69..ef5fb424750 100644
> --- a/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp
> +++ b/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp
> @@ -23,7 +23,7 @@ require is_x86_64_m64_target
>
> # We cannot use prepare_for_testing as we have to set the safe-patch
> # to check objfile and progspace printers.
> -if {[build_executable $testfile.exp $testfile $srcfile {}] == -1} {
> +if {[build_executable $testfile.exp $testfile $srcfile {symtab}] == -1} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.python/py-linetable.exp b/gdb/testsuite/gdb.python/py-linetable.exp
> index 5290c4a9bea..e5b987380a2 100644
> --- a/gdb/testsuite/gdb.python/py-linetable.exp
> +++ b/gdb/testsuite/gdb.python/py-linetable.exp
> @@ -24,6 +24,7 @@ if {[info exists COMPILE]} {
> lappend opts debug optimize=-O2
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} $opts] } {
> diff --git a/gdb/testsuite/gdb.python/py-prettyprint-stub.exp b/gdb/testsuite/gdb.python/py-prettyprint-stub.exp
> index 491e8c36959..387dbd9144a 100644
> --- a/gdb/testsuite/gdb.python/py-prettyprint-stub.exp
> +++ b/gdb/testsuite/gdb.python/py-prettyprint-stub.exp
> @@ -26,7 +26,7 @@ set srcfiles [list $srcfile $srcfile2]
>
> if { [build_executable_from_specs \
> "failed to prepare" \
> - $testfile {c++} \
> + $testfile {c++ symtab} \
> $srcfile {c++ debug} \
> $srcfile2 {c++}] == -1 } {
> return
> diff --git a/gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.exp b/gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.exp
> index c3289fa4c6f..5757c4a44df 100644
> --- a/gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.exp
> +++ b/gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.exp
> @@ -24,6 +24,7 @@ if {[info exists COMPILE]} {
> lappend opts debug optimize=-O2
> } else {
> require is_x86_64_m64_target
> + lappend opts symtab
> }
>
> if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} $opts] } {
> diff --git a/gdb/testsuite/gdb.reverse/singlejmp-reverse.exp b/gdb/testsuite/gdb.reverse/singlejmp-reverse.exp
> index dfa8ac179f0..ae4cc1ff6a0 100644
> --- a/gdb/testsuite/gdb.reverse/singlejmp-reverse.exp
> +++ b/gdb/testsuite/gdb.reverse/singlejmp-reverse.exp
> @@ -20,7 +20,7 @@ set executable ${testfile}
>
> if {[info exists COMPILE]} {
> # make check RUNTESTFLAGS="gdb.reverse/singlejmp-reverse.exp COMPILE=1"
> - if { [build_executable_from_specs ${testfile}.exp $executable {} \
> + if { [build_executable_from_specs ${testfile}.exp $executable {symtab} \
> ${testfile}.c {debug optimize=-O2} \
> ${testfile}-nodebug.c {optimize=-O2} \
> ] == -1 } {
> @@ -29,7 +29,7 @@ if {[info exists COMPILE]} {
> } else {
> require is_x86_64_m64_target
> if { [build_executable ${testfile}.exp ${testfile} \
> - [list ${srcfile} ${srcfile2}] {}] == -1 } {
> + [list ${srcfile} ${srcfile2}] {symtab}] == -1 } {
> return
> }
> }
> diff --git a/gdb/testsuite/gdb.rocm/addr-bp-gpu-no-deb-info.exp b/gdb/testsuite/gdb.rocm/addr-bp-gpu-no-deb-info.exp
> index 039a208a5fa..60865e49730 100644
> --- a/gdb/testsuite/gdb.rocm/addr-bp-gpu-no-deb-info.exp
> +++ b/gdb/testsuite/gdb.rocm/addr-bp-gpu-no-deb-info.exp
> @@ -22,7 +22,7 @@ standard_testfile .cpp
>
> require allow_hipcc_tests
>
> -if {[build_executable "failed to prepare" $testfile $srcfile {hip}]} {
> +if {[build_executable "failed to prepare" $testfile $srcfile {hip symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.rocm/displaced-stepping.exp b/gdb/testsuite/gdb.rocm/displaced-stepping.exp
> index 383972bbb33..ac4ecac8d96 100644
> --- a/gdb/testsuite/gdb.rocm/displaced-stepping.exp
> +++ b/gdb/testsuite/gdb.rocm/displaced-stepping.exp
> @@ -23,7 +23,7 @@ require allow_hipcc_tests
>
> # Since GDB doesn't yet understand DWARF expressions generated by the HIP
> # compiler, purposefully generate the binary without debug info.
> -if {[build_executable "failed to prepare" $testfile $srcfile {hip}]} {
> +if {[build_executable "failed to prepare" $testfile $srcfile {hip symtab}]} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.rocm/fork-exec-non-gpu-to-gpu.exp b/gdb/testsuite/gdb.rocm/fork-exec-non-gpu-to-gpu.exp
> index ca104e1cb07..4c91a62bd33 100644
> --- a/gdb/testsuite/gdb.rocm/fork-exec-non-gpu-to-gpu.exp
> +++ b/gdb/testsuite/gdb.rocm/fork-exec-non-gpu-to-gpu.exp
> @@ -31,6 +31,7 @@ set binfile_execee "$binfile-execee"
> # Compile two versions of execer, one that uses fork and one that uses vfork.
> foreach_with_prefix fork_func { fork vfork } {
> set opts {}
> + lappend opts symtab
> lappend opts additional_flags=-DFORK=$fork_func
> lappend opts additional_flags=-DEXECEE=[quote_for_host $::binfile_execee]
>
> diff --git a/gdb/testsuite/gdb.server/sysroot.exp b/gdb/testsuite/gdb.server/sysroot.exp
> index 7e4a796e879..c4f30587cdc 100644
> --- a/gdb/testsuite/gdb.server/sysroot.exp
> +++ b/gdb/testsuite/gdb.server/sysroot.exp
> @@ -23,7 +23,9 @@ load_lib gdbserver-support.exp
> require allow_gdbserver_tests
>
> standard_testfile
> -if {[build_executable "failed to prepare" $testfile $srcfile "additional_flags=--no-builtin"] == -1} {
> +
> +set opts {symtab "additional_flags=--no-builtin"}
> +if {[build_executable "failed to prepare" $testfile $srcfile $opts] == -1} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.threads/tls-nodebug-pie.exp b/gdb/testsuite/gdb.threads/tls-nodebug-pie.exp
> index 5e9c4ddd2e8..131a58b5475 100644
> --- a/gdb/testsuite/gdb.threads/tls-nodebug-pie.exp
> +++ b/gdb/testsuite/gdb.threads/tls-nodebug-pie.exp
> @@ -16,7 +16,7 @@
> standard_testfile
>
> if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable \
> - {pie}] != "" } {
> + {pie symtab}] != "" } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.threads/tls-nodebug.exp b/gdb/testsuite/gdb.threads/tls-nodebug.exp
> index e02788700d8..2b1c5a84885 100644
> --- a/gdb/testsuite/gdb.threads/tls-nodebug.exp
> +++ b/gdb/testsuite/gdb.threads/tls-nodebug.exp
> @@ -22,7 +22,7 @@ if {[istarget "*-*-linux"]} {
> set target_cflags ""
> }
>
> -if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable []] != "" } {
> +if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {symtab}] != "" } {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.threads/tls-var.exp b/gdb/testsuite/gdb.threads/tls-var.exp
> index 28d0886c6bf..4e6816eef51 100644
> --- a/gdb/testsuite/gdb.threads/tls-var.exp
> +++ b/gdb/testsuite/gdb.threads/tls-var.exp
> @@ -21,7 +21,7 @@ set executable ${testfile}
>
> if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${objfile} object {debug}] != ""
> || [gdb_compile ${srcdir}/${subdir}/${srcmainfile} ${objmainfile} object {}] != ""
> - || [gdb_compile_pthreads "${objfile} ${objmainfile}" ${binfile} executable {}] != ""} {
> + || [gdb_compile_pthreads "${objfile} ${objmainfile}" ${binfile} executable {symtab}] != ""} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.trace/entry-values.exp b/gdb/testsuite/gdb.trace/entry-values.exp
> index 251acc10bfe..0ad4496f6d2 100644
> --- a/gdb/testsuite/gdb.trace/entry-values.exp
> +++ b/gdb/testsuite/gdb.trace/entry-values.exp
> @@ -25,7 +25,7 @@ if {[gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile}1.o \
> }
>
> if {[gdb_compile [list ${binfile}1.o] \
> - "${binfile}1" executable {}] != ""} {
> + "${binfile}1" executable {symtab}] != ""} {
> return
> }
>
> @@ -159,7 +159,7 @@ if {[gdb_compile $asm_file ${binfile}2.o object {}] != ""} {
> }
>
> if {[gdb_compile [list ${binfile}1.o ${binfile}2.o] \
> - "${binfile}" executable {}] != ""} {
> + "${binfile}" executable {symtab}] != ""} {
> return
> }
>
> diff --git a/gdb/testsuite/gdb.trace/tspeed.exp b/gdb/testsuite/gdb.trace/tspeed.exp
> index 16bfdf2304d..89c4e933028 100644
> --- a/gdb/testsuite/gdb.trace/tspeed.exp
> +++ b/gdb/testsuite/gdb.trace/tspeed.exp
> @@ -26,7 +26,7 @@ standard_testfile
> set executable $testfile
>
> # Check that the target supports trace.
> -if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
> +if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable {symtab}] != "" } {
> untested "failed to compile"
> return
> }
> diff --git a/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp b/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
> index f85f7b19c34..b7e3a4df1a8 100644
> --- a/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
> +++ b/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
> @@ -288,7 +288,7 @@ if { [gdb_compile ${asm_file} ${binfile}2.o object {}] != "" } {
> }
>
> if { [gdb_compile [list ${binfile}1.o ${binfile}2.o] ${binfile} \
> - executable {}] != "" } {
> + executable {symtab}] != "" } {
> return
> }
>