From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28481 invoked by alias); 19 Apr 2004 23:58:37 -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 28473 invoked from network); 19 Apr 2004 23:58:35 -0000 Received: from unknown (HELO takamaka.act-europe.fr) (142.179.108.108) by sources.redhat.com with SMTP; 19 Apr 2004 23:58:35 -0000 Received: by takamaka.act-europe.fr (Postfix, from userid 507) id C340147D63; Mon, 19 Apr 2004 16:58:35 -0700 (PDT) Date: Mon, 19 Apr 2004 23:58: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: <20040419235835.GD22414@gnat.com> References: <20040419232439.GC22414@gnat.com> <20040419233408.GB27896@nevyn.them.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="u3W6riq+uV6J42Ub" Content-Disposition: inline In-Reply-To: <20040419233408.GB27896@nevyn.them.org> User-Agent: Mutt/1.4i X-SW-Source: 2004-04/txt/msg00458.txt.bz2 --u3W6riq+uV6J42Ub Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 1525 > 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 --u3W6riq+uV6J42Ub Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="powerpc-aix-prologue.c" Content-length: 1859 /* 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"); --u3W6riq+uV6J42Ub Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="powerpc-aix-prologue.exp" Content-length: 2703 # 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 --u3W6riq+uV6J42Ub Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="fnchange.lst.diff" Content-length: 1008 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 --u3W6riq+uV6J42Ub--