From patchwork Fri Mar 28 03:41:48 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Blanchard X-Patchwork-Id: 325 Return-Path: X-Original-To: siddhesh@wilcox.dreamhost.com Delivered-To: siddhesh@wilcox.dreamhost.com Received: from homiemail-mx20.g.dreamhost.com (caibbdcaaahc.dreamhost.com [208.113.200.72]) by wilcox.dreamhost.com (Postfix) with ESMTP id 0C368360315 for ; Thu, 27 Mar 2014 20:42:01 -0700 (PDT) Received: by homiemail-mx20.g.dreamhost.com (Postfix, from userid 14314964) id 9681940A5FC84; Thu, 27 Mar 2014 20:42:01 -0700 (PDT) X-Original-To: gdb@patchwork.siddhesh.in Delivered-To: x14314964@homiemail-mx20.g.dreamhost.com Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by homiemail-mx20.g.dreamhost.com (Postfix) with ESMTPS id 6CCFF40A5FC61 for ; Thu, 27 Mar 2014 20:42:01 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id; q=dns; s= default; b=IPcnq9YNOrp9+tSI8c59VDLtZ4G5xNUs6jo8FEVmGO19SI9k5Y5Mz rAsA6SERBvVtW532JDrWIRg505ggPqpBzZ2dKZJThQ5dczYLYkQaAHs37yF8CKvk dn9FeIK1KipyOTYXWp62cml2d23inRaRY4AUSMBNK4As6Kg57EWV2M= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id; s=default; bh=ao/+m29bC2hetqjjaO95SgjkBx0=; b=Am4AWcq3w6OTRGXWgdcoZLZRIYLj +Q3zlg55FbndyaDSJu7gbQ8fLPjsHXX5v+C2X2qDA9JJSgLuSD4aODvPlVSF+DU/ UQbAZOOJZU6NbiPyAUGc02DAvtSUYbdpJh+iiQ4U/n1ekrKfHJfXY/HUxUPwxego cnbvefA+ExuJtZk= Received: (qmail 25690 invoked by alias); 28 Mar 2014 03:41:59 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 25675 invoked by uid 89); 28 Mar 2014 03:41:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: ozlabs.org Received: from ozlabs.org (HELO ozlabs.org) (203.10.76.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Fri, 28 Mar 2014 03:41:56 +0000 Received: by ozlabs.org (Postfix, from userid 1010) id 436EA140092; Fri, 28 Mar 2014 14:41:53 +1100 (EST) From: Anton Blanchard To: gdb-patches@sourceware.org, brobecker@adacore.com, emachado@linux.vnet.ibm.com, luis_gustavo@mentor.com, ulrich.weigand@de.ibm.com Subject: [PATCH 1/4] Fix ppc64 single step over atomic sequence testcase Date: Fri, 28 Mar 2014 14:41:48 +1100 Message-Id: <1395978111-30706-1-git-send-email-anton@samba.org> X-DH-Original-To: gdb@patchwork.siddhesh.in The current ppc64 single step over atomic sequence testcase is written in C and breaks with some versions of gcc. Convert the test to assembly and use stepi to step through it. gdb/ 2014-03-28 Anton Blanchard * gdb.arch/ppc64-atomic-inst.c: Remove. * gdb.arch/ppc64-atomic-inst.s: New file. * gdb.arch/ppc64-atomic-inst.exp: Adapt for asm based testcase. --- gdb/testsuite/gdb.arch/ppc64-atomic-inst.c | 44 -------------------- gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp | 15 +++++-- gdb/testsuite/gdb.arch/ppc64-atomic-inst.s | 61 ++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 48 deletions(-) delete mode 100644 gdb/testsuite/gdb.arch/ppc64-atomic-inst.c create mode 100644 gdb/testsuite/gdb.arch/ppc64-atomic-inst.s diff --git a/gdb/testsuite/gdb.arch/ppc64-atomic-inst.c b/gdb/testsuite/gdb.arch/ppc64-atomic-inst.c deleted file mode 100644 index 303e383..0000000 --- a/gdb/testsuite/gdb.arch/ppc64-atomic-inst.c +++ /dev/null @@ -1,44 +0,0 @@ -/* This file is part of GDB, the GNU debugger. - - Copyright 2008-2014 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -int main() -{ - unsigned int word = 0; - unsigned int *word_addr = &word; - unsigned long dword = 0; - unsigned long *dword_addr = &dword; - - __asm __volatile ("1: lwarx %0,0,%2\n" \ - " addi %0,%0,1\n" \ - " stwcx. %0,0,%2\n" \ - " bne- 1b" \ - : "=&b" (word), "=m" (*word_addr) \ - : "b" (word_addr), "m" (*word_addr) \ - : "cr0", "memory"); \ - - __asm __volatile ("1: ldarx %0,0,%2\n" \ - " addi %0,%0,1\n" \ - " stdcx. %0,0,%2\n" \ - " bne- 1b" \ - : "=&b" (dword), "=m" (*dword_addr) \ - : "b" (dword_addr), "m" (*dword_addr) \ - : "cr0", "memory"); \ - - return 0; -} diff --git a/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp b/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp index f5f3b40..efcd82a 100644 --- a/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp +++ b/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp @@ -27,7 +27,7 @@ if {![istarget "powerpc*"] || ![is_lp64_target]} { } set testfile "ppc64-atomic-inst" -set srcfile ${testfile}.c +set srcfile ${testfile}.s set binfile ${objdir}/${subdir}/${testfile} set compile_flags {debug quiet} @@ -50,11 +50,18 @@ set bp1 [gdb_get_line_number "lwarx"] gdb_breakpoint "$bp1" "Breakpoint $decimal at $hex" \ "Set the breakpoint at the start of the sequence" +set bp2 [gdb_get_line_number "ldarx"] +gdb_breakpoint "$bp2" "Breakpoint $decimal at $hex" \ + "Set the breakpoint at the start of the sequence" + gdb_test continue "Continuing.*Breakpoint $decimal.*" \ "Continue until breakpoint" -gdb_test next ".*__asm __volatile.*" \ +gdb_test nexti "bne.*1b" \ "Step through the lwarx/stwcx sequence" -gdb_test next ".*return 0.*" \ - "Step through the ldarx/stdcx sequence" +gdb_test continue "Continuing.*Breakpoint $decimal.*" \ + "Continue until breakpoint" + +gdb_test nexti "bne.*1b" \ + "Step through the lwarx/stwcx sequence" diff --git a/gdb/testsuite/gdb.arch/ppc64-atomic-inst.s b/gdb/testsuite/gdb.arch/ppc64-atomic-inst.s new file mode 100644 index 0000000..15ccfd9 --- /dev/null +++ b/gdb/testsuite/gdb.arch/ppc64-atomic-inst.s @@ -0,0 +1,61 @@ +/* This file is part of GDB, the GNU debugger. + + Copyright 2008-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + + .align 2 + .globl main +#if _CALL_ELF == 2 + .type main,@function +main: +#else + .section ".opd","aw" + .align 3 +main: + .quad .main,.TOC.@tocbase,0 + .size main,.-main + .previous + .globl .main + .type .main,@function +.main: +#endif + + li 0,0 + addi 4,1,-8 + + stw 0,0(4) +1: lwarx 5,0,4 + cmpwi 5,0 + bne 2f + addi 5,5,1 + stwcx. 5,0,4 + bne 1b + + std 0,0(4) +2: ldarx 5,0,4 + cmpdi 5,0 + bne 3f + addi 5,5,1 + stdcx. 5,0,4 + bne 1b + +3: li 3,0 + blr + +#if _CALL_ELF == 2 + .size main,.-main +#else + .size .main,.-.main +#endif