Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Joel Brobecker <brobecker@adacore.com>
To: Anton Blanchard <anton@samba.org>
Cc: gdb-patches@sourceware.org, emachado@linux.vnet.ibm.com
Subject: Re: [PATCH 1/3] Fix ppc64 single step over atomic sequence testcase
Date: Mon, 11 Jun 2012 19:33:00 -0000	[thread overview]
Message-ID: <20120611193326.GN2687@adacore.com> (raw)
In-Reply-To: <20120606135557.7da37cbe@kryten>

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  <anton@samba.org>
> 
> 	* 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 <http://www.gnu.org/licenses/>.  */
> -
> -#include <stdio.h>
> -
> -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


  parent reply	other threads:[~2012-06-11 19:33 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-06  3:56 Anton Blanchard
2012-06-06  3:57 ` [PATCH 2/3] Support up to 3 conditional branches in an atomic sequence Anton Blanchard
2012-06-13 16:02   ` Joel Brobecker
2012-07-16  6:34     ` Anton Blanchard
2012-09-28 10:44       ` Joel Brobecker
2012-09-28 11:44       ` Pedro Alves
2012-06-06  3:58 ` [PATCH 3/3] Add multiple branches to single step through atomic sequence testcase Anton Blanchard
2012-06-13 16:06   ` Joel Brobecker
2012-07-16  6:43     ` Anton Blanchard
2012-09-28 10:44   ` Joel Brobecker
2012-06-11 19:33 ` Joel Brobecker [this message]
2012-06-12 12:45   ` [PATCH 1/3] Fix ppc64 single step over " Anton Blanchard
2012-06-12 13:06     ` Luis Gustavo
2012-06-12 13:17       ` Joel Brobecker
2012-06-12 13:28         ` Luis Gustavo
2012-06-12 16:53           ` Edjunior Barbosa Machado
2012-06-13  0:46             ` Anton Blanchard
2012-06-13 14:00               ` Edjunior Barbosa Machado
2012-06-13 15:37                 ` Joel Brobecker
2012-07-16  6:23                   ` Anton Blanchard
2012-09-26 23:21                     ` Edjunior Barbosa Machado
2012-09-27 19:03                       ` Luis Gustavo
2012-09-28 10:16                     ` Joel Brobecker
2013-07-29  7:39 Anton Blanchard
2013-07-30 17:15 ` Edjunior Barbosa Machado
2013-07-31 12:31   ` Anton Blanchard
2013-08-01 15:54     ` Ulrich Weigand
2013-08-02 13:45       ` Anton Blanchard
2014-03-31  2:59 Anton Blanchard
2014-03-31 15:38 ` Ulrich Weigand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120611193326.GN2687@adacore.com \
    --to=brobecker@adacore.com \
    --cc=anton@samba.org \
    --cc=emachado@linux.vnet.ibm.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox