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.
This commit is contained in:
Andreas Arnez 2014-11-17 15:22:48 +00:00 committed by Andreas Krebbel
parent 2b0f535a44
commit 0d7b254902
2 changed files with 12 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2014-11-19 Andreas Arnez <arnez@linux.vnet.ibm.com>
* gdb.base/bp-permanent.c (NOP): Define as 2-byte instead of
4-byte instruction on S390.
2014-11-19 Joel Brobecker <brobecker@adacore.com>
* gdb.ada/arr_arr: New testcase.

View File

@ -21,7 +21,14 @@
#include <unistd.h>
#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];