From 94a0adaca0c84c645acc45e28662a4cbaeb75fbe Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Tue, 14 Oct 2025 18:09:36 +0200 Subject: [PATCH] Fix gdb.ada/extended-access.exp on riscv64-linux On riscv64-linux, I ran into: ... (gdb) print the_array.all^M Cannot access memory at address 0x0^M (gdb) FAIL: gdb.ada/extended-access.exp: print the_array.all ... The problem is that the_array.p_array is set by a dynamic relocation: ... 0000000000002010 : ... 0000000000002028 : ... 2028: R_RISCV_RELATIVE *ABS*+0x2010 ... which doesn't seem to get its value until we arrive in main. Fix this by running to main before trying to print the_array. Tested on riscv64-linux. Approved-By: Tom Tromey --- gdb/testsuite/gdb.ada/extended-access.exp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.ada/extended-access.exp b/gdb/testsuite/gdb.ada/extended-access.exp index 7c02ad73f82..c54c5f65a26 100644 --- a/gdb/testsuite/gdb.ada/extended-access.exp +++ b/gdb/testsuite/gdb.ada/extended-access.exp @@ -21,9 +21,17 @@ if {[prepare_for_testing "failed to prepare" ${testfile} ${srcfile}]} { return } +# For riscv64-linux, we need to run to main, or the_array.p_array will still +# be nullptr. +if {![runto "main"]} { + return +} + # The test case is written in C, because it was easy to make the # required type there without requiring a new version of GNAT. -gdb_test_no_output "set lang ada" +gdb_test "set lang ada" \ + [string_to_regexp \ + "Warning: the current language does not match this frame."] gdb_test "print the_array.all" \ [string_to_regexp " = (93 => 23, 24, 25, 26, 27)"] -- 2.47.3