On powerpc64le-linux, with test-case gdb.arch/powerpc-addpcis.exp I run into
SIGILL:
...
(gdb) PASS: gdb.arch/powerpc-addpcis.exp: get hexadecimal valueof "$r3"
stepi^M
^M
Program terminated with signal SIGILL, Illegal instruction.^M
The program no longer exists.^M
(gdb) PASS: gdb.arch/powerpc-addpcis.exp: set r4
...
because it's a power9 insn, and I'm running on a power8 machine.
Fix this by handling the SIGILL. Likewise in gdb.arch/powerpc-lnia.exp.
Tested on powerpc64le-linux.
gdb_breakpoint $bp2
gdb_breakpoint $bp3
-gdb_test "stepi" "" "set r3 "
+set insn_supported 1
+gdb_test_multiple "stepi" "set r3" {
+ -re "Program received signal SIGILL, Illegal instruction\\..*" {
+ set insn_supported 0
+ }
+ -re -wrap "" {
+ pass $gdb_test_name
+ }
+}
+if { ! $insn_supported } {
+ unsupported "illegal instruction"
+ return
+}
set check_r3 [get_hexadecimal_valueof "\$r3" "default0"]
gdb_test "stepi" "" "set r4"
set check_r4 [get_hexadecimal_valueof "\$r4" "default0"]
# single-step through the lnia instructions, and retrieve the
# register values as we proceed.
-gdb_test "stepi" "" "set r3"
+set insn_supported 1
+gdb_test_multiple "stepi" "set r3" {
+ -re "Program received signal SIGILL, Illegal instruction\\..*" {
+ set insn_supported 0
+ }
+ -re -wrap "" {
+ pass $gdb_test_name
+ }
+}
+if { ! $insn_supported } {
+ unsupported "illegal instruction"
+ return
+}
set check_r3 [get_hexadecimal_valueof "\$r3" "default0"]
gdb_test "stepi" "" "set r4"
set check_r4 [get_hexadecimal_valueof "\$r4" "default0"]