* 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
89 lines
2.9 KiB
Diff
89 lines
2.9 KiB
Diff
From 37ce118a44994fb178065eaed671c7036f3d93a5 Mon Sep 17 00:00:00 2001
|
|
From: Tom de Vries <tdevries@suse.de>
|
|
Date: Thu, 20 Jun 2024 16:54:47 +0200
|
|
Subject: [PATCH 34/46] [gdb/testsuite] Fix gdb.python/py-format-address.exp on
|
|
arm
|
|
|
|
When running test-case gdb.python/py-format-address.exp on arm-linux, I get:
|
|
...
|
|
(gdb) python print("Got: " + gdb.format_address(0x103dd))^M
|
|
Got: 0x103dd <main at py-format-address.c:30>^M
|
|
(gdb) FAIL: $exp: symbol_filename=on: gdb.format_address, \
|
|
result should have an offset
|
|
...
|
|
|
|
What is expected here is:
|
|
...
|
|
Got: 0x103dd <main+1 at py-format-address.c:30>^M
|
|
...
|
|
|
|
Main starts at main_addr:
|
|
...
|
|
(gdb) print /x &main^M
|
|
$1 = 0x103dc^M
|
|
...
|
|
and we obtained next_addr 0x103dd by adding 1 to it:
|
|
...
|
|
set next_addr [format 0x%x [expr $main_addr + 1]]
|
|
...
|
|
|
|
Adding 1 to $main_addr results in an address for a thumb function starting at
|
|
address 0x103dc, which is incorrect because main is an arm function (because
|
|
I'm running with target board unix/-marm).
|
|
|
|
At some point during the call to format_addr, arm_addr_bits_remove removes
|
|
the thumb bit, which causes the +1 offset to be dropped, causing the FAIL.
|
|
|
|
Fix this by using the address of the breakpoint on main, provided it's not at
|
|
the very start of main.
|
|
|
|
Tested on arm-linux.
|
|
|
|
PR testsuite/31452
|
|
Bug: https://www.sourceware.org/bugzilla/show_bug.cgi?id=31452
|
|
---
|
|
.../gdb.python/py-format-address.exp | 20 +++++++++++++++++--
|
|
1 file changed, 18 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/gdb/testsuite/gdb.python/py-format-address.exp b/gdb/testsuite/gdb.python/py-format-address.exp
|
|
index 8e7cf47e03a..ab8022c753b 100644
|
|
--- a/gdb/testsuite/gdb.python/py-format-address.exp
|
|
+++ b/gdb/testsuite/gdb.python/py-format-address.exp
|
|
@@ -40,7 +40,23 @@ if ![runto_main] {
|
|
# for the program space and architecture (these will be selected based
|
|
# on the current inferior).
|
|
set main_addr [get_hexadecimal_valueof "&main" "UNKNOWN"]
|
|
-set next_addr [format 0x%x [expr $main_addr + 1]]
|
|
+require {!string equal $main_addr {UNKNOWN}}
|
|
+
|
|
+set next_addr "UNKNOWN"
|
|
+gdb_test_multiple "info break 1" "" {
|
|
+ -re -wrap " y +($hex) +in .*" {
|
|
+ set next_addr $expect_out(1,string)
|
|
+ set next_addr [regsub {^0x0+} $next_addr "0x"]
|
|
+ pass $gdb_test_name
|
|
+ }
|
|
+}
|
|
+if { $next_addr == "UNKNOWN" || $next_addr == $main_addr } {
|
|
+ set next_addr [format 0x%x [expr $main_addr + 1]]
|
|
+}
|
|
+
|
|
+verbose -log "main_addr: $main_addr"
|
|
+verbose -log "next_addr: $next_addr"
|
|
+
|
|
|
|
foreach_with_prefix symbol_filename { on off } {
|
|
gdb_test_no_output "set print symbol-filename ${symbol_filename}"
|
|
@@ -56,7 +72,7 @@ foreach_with_prefix symbol_filename { on off } {
|
|
"gdb.format_address, result should have no offset"
|
|
|
|
gdb_test "python print(\"Got: \" + gdb.format_address($next_addr))" \
|
|
- "Got: $next_addr <main\\+1${filename_pattern}>" \
|
|
+ "Got: $next_addr <main\\+$decimal${filename_pattern}>" \
|
|
"gdb.format_address, result should have an offset"
|
|
}
|
|
|
|
--
|
|
2.43.0
|
|
|