[gdb/testsuite] Make gdb.arch/amd64-gs_base.exp unsupported for i386
authorTom de Vries <tdevries@suse.de>
Fri, 4 Dec 2020 12:36:48 +0000 (13:36 +0100)
committerTom de Vries <tdevries@suse.de>
Fri, 4 Dec 2020 12:36:48 +0000 (13:36 +0100)
With target board unix/-m32 I run into:
...
(gdb) print /x $fs_base^M
$1 = void^M
(gdb) FAIL: gdb.arch/amd64-gs_base.exp: print fs_base
...

The problem is that the fs_base register is not supported for i386.

Fix this by making the test unsupported if fs_base/gs_base don't show up in
info register sys output.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2020-12-04  Tom de Vries  <tdevries@suse.de>

PR testsuite/26990
* gdb.arch/amd64-gs_base.exp: Handle -m32 where fs_base and gs_base
are unsupported.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/amd64-gs_base.exp

index 6d7d0c27266aab6e26dfda296176d3531fb4377f..57b7208fe38739b326c43354fa172156620ea1e5 100644 (file)
@@ -1,3 +1,9 @@
+2020-12-04  Tom de Vries  <tdevries@suse.de>
+
+       PR testsuite/26990
+       * gdb.arch/amd64-gs_base.exp: Handle -m32 where fs_base and gs_base
+       are unsupported.
+
 2020-12-04  Tom de Vries  <tdevries@suse.de>
 
        * gdb.reverse/insn-reverse.exp: Don't break inside gdb_test_multiple
index 3e14031d2d236b9166b1ba6a043498c133fdf593..d29043bb7969f64a2a04875b6cb10ff960f48a7e 100644 (file)
@@ -30,6 +30,31 @@ if ![runto_main] {
     return -1
 }
 
+# Test the presence of fs_base and gs_base on the system
+# register group and values.
+#
+set ws "\[\t \]+"
+set info_reg_out [multi_line "info register sys" \
+          "fs_base${ws}$hex${ws}$decimal"\
+          "gs_base${ws}$hex${ws}$decimal"\
+          "orig_rax${ws}$hex${ws}\[-\]$decimal" ]
+set info_reg_out_m32 [multi_line "info register sys" \
+          "orig_eax${ws}$hex${ws}\[-\]$decimal" ]
+
+set supported 0
+gdb_test_multiple "info register sys" "" {
+    -re -wrap $info_reg_out {
+       set supported 1
+    }
+    -re -wrap $info_reg_out_m32 {
+    }
+}
+
+if { ! $supported } {
+    unsupported "target does not support fs_base and gs_base"
+    return -1
+}
+
 gdb_test "print /x \$fs_base" "= $hex" "print fs_base"
 gdb_test "print /x \$gs_base" "= $hex" "print gs_base"
 
@@ -39,7 +64,6 @@ gdb_test "print \$gs_base = 3" "= 3" "set gs_base"
 # Test the presence of fs_base and gs_base on the system
 # register group and values.
 #
-set ws "\[\t \]+"
 set info_reg_out [multi_line "info register sys" \
           "fs_base${ws}0x2${ws}2"\
           "gs_base${ws}0x3${ws}3"\