From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6853 invoked by alias); 19 Apr 2004 23:24:40 -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 6844 invoked from network); 19 Apr 2004 23:24:39 -0000 Received: from unknown (HELO takamaka.act-europe.fr) (142.179.108.108) by sources.redhat.com with SMTP; 19 Apr 2004 23:24:39 -0000 Received: by takamaka.act-europe.fr (Postfix, from userid 507) id E20C447D63; Mon, 19 Apr 2004 16:24:39 -0700 (PDT) Date: Mon, 19 Apr 2004 23:24:00 -0000 From: Joel Brobecker To: gdb-patches@sources.redhat.com Subject: [RFA/testsuite/powerpc] New gdb.arch test for prologue analysis Message-ID: <20040419232439.GC22414@gnat.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="+9faIjRurCDpBc7U" Content-Disposition: inline User-Agent: Mutt/1.4i X-SW-Source: 2004-04/txt/msg00453.txt.bz2 --+9faIjRurCDpBc7U Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 788 This is a followup on a discussion that started with: http://sources.redhat.com/ml/gdb-patches/2004-04/msg00062.html I took the assembly code as generated by our compiler, and feeded it into this testcase. It then verifies that GDB correctly identifies the end of the function prologue. Right now, the test currently fails, but passes with the patches I suggested in the above thread. 2004-04-19 Joel Brobecker * gdb.arch/powerpc-prologue.c: New file. * gdb.arch/powerpc-prologue.exp: New file. 2004-04-19 Joel Brobecker * config/djgpp/fnchange.lst: Add translation rules for gdb.arch/powerpc-prologue.c and gdb.arch/powerpc-prologue.exp. Tested on powerpc-aix-5.1. Ok to apply? Thanks, -- Joel --+9faIjRurCDpBc7U Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="powerpc-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"); --+9faIjRurCDpBc7U Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="powerpc-prologue.exp" Content-length: 2692 # 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-*-*"] then { verbose "Skipping powerpc prologue tests." return } set testfile "powerpc-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 --+9faIjRurCDpBc7U Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="fnchange.lst.diff" Content-length: 1000 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:22: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-prologue.exp @V@/gdb/testsuite/gdb.arch/ppc-prol.exp +@V@/gdb/testsuite/gdb.arch/powerpc-prologue.c @V@/gdb/testsuite/gdb.arch/ppc-prol.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 --+9faIjRurCDpBc7U--