gdb/gdb-testsuite-use-nostdlib-in-gdb.base-list-dot-node.patch
Tom de Vries f61a679e8e - Maintenance script qa.sh:
* Fix 16.0 handling.
- Patches added:
  * gdb-testsuite-fix-gdb.python-py-format-string.exp-wi.patch
  * gdb-testsuite-fix-gdb.python-py-mi-cmd.exp-with-pyth.patch
  * gdb-testsuite-fix-gdb.ada-mi_task_arg.exp-on-arm-lin.patch
  * gdb-testsuite-fix-regexp-in-gdb.ada-mi_var_access.ex.patch
  * gdb-testsuite-check-gnatmake-version-in-gdb.ada-scal.patch
  * gdb-testsuite-fix-gdb.arch-arm-pseudo-unwind.exp-wit.patch
  * gdb-symtab-fix-target-type-of-complex-long-double-on.patch
  * gdb-testsuite-don-t-use-set-auto-solib-add-off.patch
  * gdb-tdep-fix-arm-thumb2-hw-breakpoint.patch
  * gdb-testsuite-fix-gdb.cp-m-static.exp-on-arm.patch
  * gdb-testsuite-fix-gdb.dwarf2-dw2-fixed-point.exp-on-.patch
  * gdb-testsuite-fix-gdb.dwarf2-dw2-lines.exp-on-arm-li.patch
  * gdb-exp-fix-gdb.fortran-intrinsics.exp-fail-on-arm.patch
  * gdb-tdep-handle-sycall-statx-for-arm-linux.patch
  * gdb-tdep-fix-recording-of-t1-push.patch
  * gdb-tdep-handle-syscall-clock_gettime64-for-arm-linu.patch
  * fix-gdb.dwarf2-shortpiece.exp-on-s390x.patch
  * handle-address-class-annotation-for-s390x-in-some-te.patch
  * fix-gdb.dap-step-out.exp-on-s390x.patch
  * use-setvariable-in-gdb.dap-scopes.exp.patch
  * fix-gdb.base-finish-pretty.exp-on-s390x.patch
  * fix-gdb.base-readnever.exp-on-s390x.patch
  * add-dwarf_expr_piece.op.patch
  * add-gdbarch_dwarf2_reg_piece_offset-hook.patch
  * fix-gdb.base-store.exp-on-s390x.patch
  * fix-gdb.ada-o2_float_param.exp-on-s390x-linux.patch
  * gdb-testsuite-fix-gdb.base-branch-to-self.exp-on-arm.patch
  * gdb-tdep-fix-gdb.cp-non-trivial-retval.exp-on-riscv6.patch
  * gdb-testsuite-fix-gdb.cp-non-trivial-retval.exp-on-a.patch
  * gdb-testsuite-fix-gdb.rust-completion.exp-timeout-on.patch
  * gdb-testsuite-require-supports_process_record-in-gdb.patch
  * gdb-testsuite-fix-regexp-in-gdb.arch-i386-disp-step-.patch
  * gdb-testsuite-fix-gdb.arch-arm-single-step-kernel-he.patch
  * gdb-testsuite-fix-gdb.python-py-format-address.exp-o.patch
  * gdb-testsuite-fix-gdb.arch-riscv-tdesc-regs.exp.patch
  * gdb-testsuite-fix-gdb.base-list-dot-nodebug-and-make.patch
  * gdb-testsuite-fix-gdb.base-list-dot-nodebug.exp-on-o.patch
  * gdb-testsuite-fix-gdb.base-empty-host-env-vars.exp.patch
  * gdb-prune-inferior-after-switching-inferior.patch
  * gdb-testsuite-use-nostdlib-in-gdb.base-list-dot-node.patch
  * gdb-testsuite-fix-timeout-in-gdb.mi-mi-multi-command.patch
  * gdb-testsuite-require-can_spawn_for_attach-in-gdb.ba.patch
  * fixup-gdb-6.5-gcore-buffer-limit-test.patch
  * gdb-testsuite-fix-gdb.ada-big_packed_array.exp-on-s3.patch
  * gdb-testsuite-fix-gdb.ada-convvar_comp.exp-on-s390x-.patch
  * gdb-testsuite-fix-regexp-in-gdb.threads-stepi-over-c.patch

OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=437
2025-02-13 14:36:11 +00:00

173 lines
5.0 KiB
Diff

From 43be94acc8f9bbc0ff8da8c2b9fbaa56ee9b344e Mon Sep 17 00:00:00 2001
From: Tom de Vries <tdevries@suse.de>
Date: Tue, 4 Feb 2025 11:01:38 +0100
Subject: [PATCH 40/46] [gdb/testsuite] Use -nostdlib in
gdb.base/list-dot-nodebug.exp
When running test-case gdb.base/list-dot-nodebug.exp with target board
cc-with-gnu-debuglink, I run into:
...
(gdb) list .^M
warning: 1 ../sysdeps/x86_64/crtn.S: No such file or directory^M
(gdb) FAIL: gdb.base/list-dot-nodebug.exp: debug=none: print before start
...
The problem is that the call to gdb_gnu_strip_debug in
gdb.base/list-dot-nodebug.exp has no effect, because the target board makes
sure that compilation delivers an executable that is already stripped, with a
.gnu_debuglink section linking to the debug info.
Fix this by using -nostdlib instead of static, which means the call to
gdb_gnu_strip_debug can be removed.
This also allows us to extend the test-case to excercise "list ." before
starting the inferior, for the debug=some scenario, which is currently
skipped:
...
# We don't test "list ." before starting with some debug info
# because GDB will choose the symtab that has debuginfo, and
# print the copyright blurb. This test isn't interested (yet?)
# in checking if this default location choice is consistent.
...
While we're at it, make the effect of "list ." on the current source location
explicit using "info source" before and after "list .".
While we're at it, make sure when running with target board
cc-with-gdb-index or cc-with-debug-names, that the failure to compile the
debug=none variant due to:
...
Error while writing index ...: No debugging symbols
...
doesn't stop the test-case from running the debug=some variant.
Tested on x86_64-linux.
---
gdb/testsuite/gdb.base/list-dot-nodebug.c | 9 +++
gdb/testsuite/gdb.base/list-dot-nodebug.exp | 69 +++++++++++++--------
2 files changed, 52 insertions(+), 26 deletions(-)
diff --git a/gdb/testsuite/gdb.base/list-dot-nodebug.c b/gdb/testsuite/gdb.base/list-dot-nodebug.c
index b37c3561c41..5d2a1a32d82 100644
--- a/gdb/testsuite/gdb.base/list-dot-nodebug.c
+++ b/gdb/testsuite/gdb.base/list-dot-nodebug.c
@@ -31,3 +31,12 @@ main ()
foo (&x);
return 0;
}
+
+void
+_start ()
+{
+ (void) main ();
+
+ while (1)
+ ;
+}
diff --git a/gdb/testsuite/gdb.base/list-dot-nodebug.exp b/gdb/testsuite/gdb.base/list-dot-nodebug.exp
index 107669de04d..e15e2bd58e1 100644
--- a/gdb/testsuite/gdb.base/list-dot-nodebug.exp
+++ b/gdb/testsuite/gdb.base/list-dot-nodebug.exp
@@ -19,51 +19,64 @@
require !use_gdb_stub
-set linkflags [list additional_flags="-static"]
-
-if { ![gdb_can_simple_compile static-libc \
- {
- int main (void) { return 0; }
- } \
- executable $linkflags] } {
- untested "Can't statically link"
- return -1
-}
-
standard_testfile .c -extra.c
-foreach_with_prefix debug {"none" "some"} {
+proc do_test { debug } {
+
+ set opts {}
+ lappend opts additional_flags=-nostdlib
if {$debug == "some"} {
+ lappend opts debug
+
if {[prepare_for_testing_full "failed to prepare" \
- [list ${testfile}-${debug} $linkflags \
- $srcfile [list nodebug] \
- $srcfile2 [list debug]]]} {
+ [list ${::testfile}-${debug} $opts \
+ $::srcfile [list nodebug] \
+ $::srcfile2 [list debug]]]} {
return -1
}
- # We don't test "list ." before starting with some debug info
- # because GDB will choose the symtab that has debuginfo, and
- # print the copyright blurb. This test isn't interested (yet?)
- # in checking if this default location choice is consistent.
+
+ with_test_prefix "before list" {
+ gdb_test "info source" \
+ [string_to_regexp "No current source file."]
+ }
+
+ gdb_test "list ." \
+ .*[string_to_regexp \
+ "This testcase is part of GDB, the GNU debugger."].* \
+ "print before start"
+
+ with_test_prefix "after list" {
+ gdb_test "info source" \
+ .*[string_to_regexp $::srcfile2].*
+ }
+
} else {
- set executable ${testfile}-none
+ lappend opts nodebug
+
+ set executable ${::testfile}-none
if {[build_executable "failed to prepare" ${executable} \
- [list $srcfile $srcfile2] $linkflags]} {
+ [list $::srcfile $::srcfile2] $opts]} {
return -1
}
- # Stripping is a backup in case the system has static libc debuginfo.
- # We can continue the test even if it fails.
- gdb_gnu_strip_debug [standard_output_file $executable] no-debuglink
-
clean_restart ${executable}
+ with_test_prefix "before list" {
+ gdb_test "info source" \
+ [string_to_regexp "No current source file."]
+ }
+
gdb_test "list ." \
"^Insufficient debug info for showing source lines at default location" \
"print before start"
- }
+ with_test_prefix "after list" {
+ gdb_test "info source" \
+ [string_to_regexp "No current source file."]
+ }
+ }
if { ![runto bar] } {
return -1
@@ -73,3 +86,7 @@ foreach_with_prefix debug {"none" "some"} {
"^Insufficient debug info for showing source lines at current PC \\($::hex\\)\\." \
"print after start"
}
+
+foreach_with_prefix debug {"none" "some"} {
+ do_test $debug
+}
--
2.43.0