From 0d7b2549024f66cb98dd173b6f339673df1b0ea1 Mon Sep 17 00:00:00 2001 From: Andreas Arnez Date: Mon, 17 Nov 2014 15:22:48 +0000 Subject: [PATCH] Use 2-byte instead of 4-byte NOP on S390 in 'bp-permanent' test case The bp-permanent test case assumes that a NOP is exactly as long as a software breakpoint. This is not the case for the S390 "nop" instruction, which is 4 bytes long, while a software breakpoint is just 2 bytes long. The "nopr" instruction has the right size and can be used instead. Without this patch the test case fails on S390 when trying to continue after SIGTRAP on the permanent breakpoint: ... Continuing. Program received signal SIGILL, Illegal instruction. test () at /home/arnez/src/binutils-gdb/gdb/testsuite/gdb.base/bp-permanent.c:40 40 NOP; /* after permanent bp */ (gdb) FAIL: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: basics: stop at permanent breakpoint With this patch the test case succeeds without any FAILs. gdb/testsuite/ChangeLog: * gdb.base/bp-permanent.c (NOP): Define as 2-byte instead of 4-byte instruction on S390. --- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/bp-permanent.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index e18366d8adb..ee200ad9abc 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-11-19 Andreas Arnez + + * gdb.base/bp-permanent.c (NOP): Define as 2-byte instead of + 4-byte instruction on S390. + 2014-11-19 Joel Brobecker * gdb.ada/arr_arr: New testcase. diff --git a/gdb/testsuite/gdb.base/bp-permanent.c b/gdb/testsuite/gdb.base/bp-permanent.c index a45a922e8f3..64cfb4db43e 100644 --- a/gdb/testsuite/gdb.base/bp-permanent.c +++ b/gdb/testsuite/gdb.base/bp-permanent.c @@ -21,7 +21,14 @@ #include #endif +/* NOP instruction: must have the same size as the breakpoint + instruction. */ + +#if defined(__s390__) || defined(__s390x__) +#define NOP asm("nopr 0") +#else #define NOP asm("nop") +#endif /* Buffer holding the breakpoint instruction. */ unsigned char buffer[16]; -- 2.39.5