From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22054 invoked by alias); 26 Apr 2004 16:18:43 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 22043 invoked from network); 26 Apr 2004 16:18:40 -0000 Received: from unknown (HELO takamaka.act-europe.fr) (142.179.108.108) by sources.redhat.com with SMTP; 26 Apr 2004 16:18:40 -0000 Received: by takamaka.act-europe.fr (Postfix, from userid 507) id 9424C47D64; Mon, 26 Apr 2004 09:18:40 -0700 (PDT) Date: Mon, 26 Apr 2004 16:18:00 -0000 From: Joel Brobecker To: gdb-patches@sources.redhat.com Subject: Re: [RFA/testsuite/powerpc] New gdb.arch test for prologue analysis Message-ID: <20040426161840.GB2811@gnat.com> References: <20040419232439.GC22414@gnat.com> <20040419233408.GB27896@nevyn.them.org> <20040419235835.GD22414@gnat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040419235835.GD22414@gnat.com> User-Agent: Mutt/1.4i X-SW-Source: 2004-04/txt/msg00617.txt.bz2 Ping? On Mon, Apr 19, 2004 at 04:58:35PM -0700, Joel Brobecker wrote: > > Tested only on powerpc-aix, I can see :) > > ;-P > > > > asm (" .csect .text[PR]\n" > > > " .align 2\n" > > > " .lglobl .li_stw\n" > > > " .csect li_stw[DS]\n" > > > "li_stw:\n" > > > " .long .li_stw, TOC[tc0], 0\n" > > > " .csect .text[PR]\n" > > > ".li_stw:\n" > > > " stw 31,-4(1)\n" > > > " stwu 1,-48(1)\n" > > > " mr 31,1\n" > > > " stw 11,24(31)\n" > > > " li 0,8765\n" > > > " stw 0,28(31)\n" > > > " lwz 1,0(1)\n" > > > " lwz 31,-4(1)\n" > > > " blr\n"); > > > > AIX functions look distinctly unlike other (32-bit) PowerPC functions, > > because AIX uses function descriptors and powerpc-eabi/powerpc-linux/etc > > do not. This is only valid for AIX. > > I knew it was too easy... > > > You should either find a way to make it work on both - unlikely to be > > worth the trouble - or call this file something AIX specific. > > Here's a new version of the new files, where the files were renamed > to include aix. I also changed the check at the begining of the testcase > to only activate the test for powerpc-*-aix* targets. > > 2004-04-19 Joel Brobecker > > * gdb.arch/powerpc-aix-prologue.c: New file. > * gdb.arch/powerpc-aix-prologue.exp: New file. > > 2004-04-19 Joel Brobecker > > * config/djgpp/fnchange.lst: Add translation rules for > gdb.arch/powerpc-aix-prologue.c and gdb.arch/powerpc-aix-prologue.exp. > > -- > Joel > /* This testcase is part of GDB, the GNU debugger. > > Copyright 2004 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 2 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, write to the Free Software > Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > > Please email any bugs, comments, and/or additions to this file to: > bug-gdb@prep.ai.mit.edu */ > > void li_stw (void); > > int > main (void) > { > li_stw (); > return 0; > } > > /* Asm for procedure li_stw(). > > The purpose of this function is to verify that GDB does not > include the li insn as part of the function prologue (only part > of the prologue if part of a pair of insns saving vector registers). > Similarly, GDB should not include the stw insn following the li insn, > because the source register is not used for parameter passing. */ > > > asm (" .csect .text[PR]\n" > " .align 2\n" > " .lglobl .li_stw\n" > " .csect li_stw[DS]\n" > "li_stw:\n" > " .long .li_stw, TOC[tc0], 0\n" > " .csect .text[PR]\n" > ".li_stw:\n" > " stw 31,-4(1)\n" > " stwu 1,-48(1)\n" > " mr 31,1\n" > " stw 11,24(31)\n" > " li 0,8765\n" > " stw 0,28(31)\n" > " lwz 1,0(1)\n" > " lwz 31,-4(1)\n" > " blr\n"); > > # Copyright 2004 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 2 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, write to the Free Software > # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > # > # Please email any bugs, comments, and/or additions to this file to: > # bug-gdb@gnu.org > # > # This file is part of the gdb testsuite. > > if $tracelevel { > strace $tracelevel > } > > # Test rs6000 prologue analyzer. > > set prms_id 0 > set bug_id 0 > > if ![istarget "powerpc-*-aix*"] then { > verbose "Skipping powerpc-aix prologue tests." > return > } > > set testfile "powerpc-aix-prologue" > set srcfile ${testfile}.c > set binfile ${objdir}/${subdir}/${testfile} > if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {}] != "" } { > unsupported "Testcase compile failed." > return -1 > } > > gdb_exit > gdb_start > gdb_reinitialize_dir $srcdir/$subdir > gdb_load ${binfile} > > # Insert a breakpoint in FUNCTION and verifies that the breakpoint was > # inserted at the expected location. EXPECTED_LOCATION should be an > # offset relative to the function start address. > proc insert_breakpoint {function expected_location} { > global gdb_prompt > global expect_out > global hex > > set address "" > > # Insert a breakpoint using the given function name, and extract > # the breakpoint address for the output. > gdb_test_multiple "break $function" "set breakpoint in $function" { > -re "Breakpoint 1 at ($hex).*$gdb_prompt $" { > set address $expect_out(1,string) > } > default { > fail "set breakpoint in $function" > } > } > > # If we managed to get the breakpoing address, then check that > # we inserted it at the expected location by examining the > # instruction at that address (we're not interested in the insn > # itself, but rather at the address printed at the begining of > # the instruction). > if { $address != "" } then { > gdb_test "x /i $address" \ > ".*<$function\\+$expected_location>.*" \ > "check $function breakpoint address" > } else { > fail "unable to compute breakpoint address" > } > > } > > insert_breakpoint "li_stw" 12 > Index: config/djgpp/fnchange.lst > =================================================================== > RCS file: /cvs/src/src/gdb/config/djgpp/fnchange.lst,v > retrieving revision 1.69 > diff -u -r1.69 fnchange.lst > --- config/djgpp/fnchange.lst 28 Feb 2004 18:01:48 -0000 1.69 > +++ config/djgpp/fnchange.lst 19 Apr 2004 23:52:26 -0000 > @@ -188,6 +188,8 @@ > @V@/gdb/testsuite/gdb.arch/altivec-abi.exp @V@/gdb/testsuite/gdb.arch/av-abi.exp > @V@/gdb/testsuite/gdb.arch/altivec-regs.c @V@/gdb/testsuite/gdb.arch/av-regs.c > @V@/gdb/testsuite/gdb.arch/altivec-regs.exp @V@/gdb/testsuite/gdb.arch/av-regs.exp > +@V@/gdb/testsuite/gdb.arch/powerpc-aix-prologue.exp @V@/gdb/testsuite/gdb.arch/ppcaprol.exp > +@V@/gdb/testsuite/gdb.arch/powerpc-aix-prologue.c @V@/gdb/testsuite/gdb.arch/ppcaprol.c > @V@/gdb/testsuite/gdb.base/coremaker2.c @V@/gdb/testsuite/gdb.base/core2maker.c > @V@/gdb/testsuite/gdb.cp/m-static1.cc @V@/gdb/testsuite/gdb.cp/m-stat1.cc > @V@/gdb/testsuite/gdb.cp/namespace1.cc @V@/gdb/testsuite/gdb.cp/namesp1.cc -- Joel