From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19770 invoked by alias); 9 Jun 2011 09:28:32 -0000 Received: (qmail 19751 invoked by uid 22791); 9 Jun 2011 09:28:30 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,TW_XF,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 09 Jun 2011 09:28:16 +0000 Received: (qmail 8891 invoked from network); 9 Jun 2011 09:28:16 -0000 Received: from unknown (HELO ?192.168.0.102?) (yao@127.0.0.2) by mail.codesourcery.com with ESMTPA; 9 Jun 2011 09:28:16 -0000 Message-ID: <4DF09229.4070704@codesourcery.com> Date: Thu, 09 Jun 2011 09:28:00 -0000 From: Yao Qi User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110424 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: gdb-patches@sourceware.org Subject: [patch, testsuite] gdb.base/savedregs.exp: SIGSEGV -> SIGILL Content-Type: multipart/mixed; boundary="------------080208040801000606020008" X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-06/txt/msg00124.txt.bz2 This is a multi-part message in MIME format. --------------080208040801000606020008 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Content-length: 514 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 (齐尧) --------------080208040801000606020008 Content-Type: text/x-patch; name="savedregs_sigsegv_to_sigill.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="savedregs_sigsegv_to_sigill.patch" Content-length: 1283 2011-06-09 Yao Qi 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 } --------------080208040801000606020008--