aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.gdb
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2021-09-13 20:16:36 +0200
committerTom de Vries <tdevries@suse.de>2021-09-13 20:16:36 +0200
commit3047c7869d38d4d7f84720d815d31085f3c788fa (patch)
treef4acc1d3c2c07c549a46ccb48c01ac43f15e0ac3 /gdb/testsuite/gdb.gdb
parentcad152f2211282b938f11b021f2acf3df517557e (diff)
downloadfsf-binutils-gdb-3047c7869d38d4d7f84720d815d31085f3c788fa.zip
fsf-binutils-gdb-3047c7869d38d4d7f84720d815d31085f3c788fa.tar.gz
fsf-binutils-gdb-3047c7869d38d4d7f84720d815d31085f3c788fa.tar.bz2
[gdb/tdep] Fix exec check in gdb_print_insn_arm
With a gdb build with --enable-targets=all we run into a KFAIL: ... KFAIL: gdb.gdb/unittest.exp: executable loaded: maintenance selftest, \ failed none (PRMS: gdb/27891) ... due to: ... Running selftest print_one_insn.^M Self test failed: arch armv8.1-m.main: self-test failed at \ disasm-selftests.c:165^M ... The test fails because we expect disassembling of one arm insn to consume 4 bytes and produce (using verbose = true in disasm-selftests.c): ... arm mov r0, #0 ... but instead the disassembler uses thumb mode and only consumes 2 bytes and produces: ... arm movs r0, r0 ... The failure does not show up in the "no executable loaded" variant because this code in gdb_print_insn_arm isn't triggered: ... if (current_program_space->exec_bfd () != NULL) info->flags |= USER_SPECIFIED_MACHINE_TYPE; ... and consequently we do this in print_insn: ... if ((info->flags & USER_SPECIFIED_MACHINE_TYPE) == 0) info->mach = bfd_mach_arm_unknown; ... and don't set force_thumb to true in select_arm_features. The code in gdb_print_insn_arm makes the assumption that the disassembly architecture matches the exec architecture, which in this case is incorrect, because the exec architecture is x86_64, and the disassembly architecture is armv8.1-m.main. Fix that by explicitly checking it: ... if (current_program_space->exec_bfd () != NULL && (current_program_space->exec_bfd ()->arch_info == gdbarch_bfd_arch_info (gdbarch))) ... This fixes the print_one_insn failure, so remove the KFAIL. Tested on x86_64-linux. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27891
Diffstat (limited to 'gdb/testsuite/gdb.gdb')
-rw-r--r--gdb/testsuite/gdb.gdb/unittest.exp7
1 files changed, 0 insertions, 7 deletions
diff --git a/gdb/testsuite/gdb.gdb/unittest.exp b/gdb/testsuite/gdb.gdb/unittest.exp
index 61a6c0e..3622243 100644
--- a/gdb/testsuite/gdb.gdb/unittest.exp
+++ b/gdb/testsuite/gdb.gdb/unittest.exp
@@ -51,13 +51,6 @@ proc run_selftests { binfile } {
set num_ran $expect_out(1,string)
set num_failed $expect_out(2,string)
gdb_assert "$num_ran > 0" "$test, ran some tests"
-
- if { $binfile != "" } {
- # There's a known issue here (see PR gdb/27891),
- # however, we should not have more than 1 failure.
- gdb_assert "$num_failed <= 1" "$test, failed no more than 1"
- setup_kfail "gdb/27891" "*-*-*"
- }
gdb_assert "$num_failed == 0" "$test, failed none"
}
-re "Selftests have been disabled for this build.\r\n$gdb_prompt $" {