From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19150 invoked by alias); 11 Jun 2012 19:33:53 -0000 Received: (qmail 19133 invoked by uid 22791); 11 Jun 2012 19:33:52 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,RCVD_IN_HOSTKARMA_NO X-Spam-Check-By: sourceware.org Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 11 Jun 2012 19:33:38 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 67A1C1C6D67; Mon, 11 Jun 2012 15:33:37 -0400 (EDT) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id S1tA4Z46Etnn; Mon, 11 Jun 2012 15:33:37 -0400 (EDT) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id E01961C6D63; Mon, 11 Jun 2012 15:33:36 -0400 (EDT) Received: by joel.gnat.com (Postfix, from userid 1000) id E4B90145616; Mon, 11 Jun 2012 12:33:26 -0700 (PDT) Date: Mon, 11 Jun 2012 19:33:00 -0000 From: Joel Brobecker To: Anton Blanchard Cc: gdb-patches@sourceware.org, emachado@linux.vnet.ibm.com Subject: Re: [PATCH 1/3] Fix ppc64 single step over atomic sequence testcase Message-ID: <20120611193326.GN2687@adacore.com> References: <20120606135557.7da37cbe@kryten> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120606135557.7da37cbe@kryten> User-Agent: Mutt/1.5.20 (2009-06-14) 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: 2012-06/txt/msg00308.txt.bz2 Hello Anton, Thanks for your contributions, First, a quick question: Are you making these contributions on behalf of a corporation, or on your own? This is for copyright assignment purposes - I just want to make sure that we have one already on file. > The current ppc64 single step over atomic sequence testcase is broken. > Convert the test into assembly and use stepi to step through it. It would be useful for you to say what exactly is broken, and on which platform. At least it seems to have been working for some people (at IBM). > 2012-06-05 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 > > Index: gdb/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp > =================================================================== > --- gdb.orig/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp > +++ gdb/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp > @@ -27,7 +27,7 @@ if {![istarget "powerpc*"] || ![is_lp64_ > } > > 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" > Index: gdb/gdb/testsuite/gdb.arch/ppc64-atomic-inst.c > =================================================================== > --- gdb.orig/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-2012 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; > -} > Index: gdb/gdb/testsuite/gdb.arch/ppc64-atomic-inst.s > =================================================================== > --- /dev/null > +++ gdb/gdb/testsuite/gdb.arch/ppc64-atomic-inst.s > @@ -0,0 +1,26 @@ > + .include "gdb.asm/common.inc" > + .include "gdb.asm/powerpc64.inc" > + > +.global main > +gdbasm_declare main > + 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 -- Joel