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]

Re: [PATCH 1/3] Fix ppc64 single step over atomic sequence testcase


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


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