This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch, testsuite] gdb.base/savedregs.exp: SIGSEGV -> SIGILL


In current gdb.base/savedregs.exp, signal handler is installed for
signal SIGSEGV, and SIGSEGV is trigger by `*(char *)0 = 0;'.  However,
on non-mmu uclinux system, writing to an address 0x0 doesn't trigger
SIGSEGV.

In my patch, SIGILL is chosen to replace SIGSEGV.  One assumption here
is that 0xffff is an invalid instruction on all ports.

FAILs go away on my non-mmu uclinux system, and no regression on
i686-pc-linux-gnu/x86_64-unknown-linux-gnu/armv7l-unknown-linux-gnueabi.
 OK to apply?

-- 
Yao (éå)
2011-06-09  Yao Qi  <yao@codesourcery.com>

	gdb/testsuite/
	* gdb.base/savedregs.c (catcher): Add an invalid instruction
	to trigger SIGILL.
	(main): Install catcher for signal SIGILL.
	* gdb.base/savedregs.exp (process_saved_regs): Handle SIGILL.

diff --git a/gdb/testsuite/gdb.base/savedregs.c b/gdb/testsuite/gdb.base/savedregs.c
index 9c4ce87..9af2c6c 100644
--- a/gdb/testsuite/gdb.base/savedregs.c
+++ b/gdb/testsuite/gdb.base/savedregs.c
@@ -45,11 +45,12 @@ catcher (int sig)
 static void
 thrower (void)
 {
-  *(char *)0 = 0;
+  /* Assume 0xffff is an invalid instruction on all ports.  */
+  asm (".word 0xffff");
 }
 
 main ()
 {
-  signal (SIGSEGV, catcher);
+  signal (SIGILL, catcher);
   thrower ();
 }
diff --git a/gdb/testsuite/gdb.base/savedregs.exp b/gdb/testsuite/gdb.base/savedregs.exp
index 6434512..5d9634e 100644
--- a/gdb/testsuite/gdb.base/savedregs.exp
+++ b/gdb/testsuite/gdb.base/savedregs.exp
@@ -142,7 +142,7 @@ process_saved_regs thrower { main } { }
 
 # Continue to the signal catcher, check main's saved-reg info, capture
 # catcher's saved-reg info.
-gdb_test "handle SIGSEGV pass print nostop"
+gdb_test "handle SIGILL pass print nostop"
 gdb_test "advance catcher" "catcher .* at .*"
 process_saved_regs catcher { sigtramp thrower } { main }
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]