From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29409 invoked by alias); 23 Jan 2006 01:49:56 -0000 Received: (qmail 29401 invoked by uid 22791); 23 Jan 2006 01:49:55 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Mon, 23 Jan 2006 01:49:53 +0000 Received: from drow by nevyn.them.org with local (Exim 4.54) id 1F0qq6-0000Y9-Ve for gdb-patches@sourceware.org; Sun, 22 Jan 2006 20:49:51 -0500 Date: Mon, 23 Jan 2006 01:49:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sourceware.org Subject: Re: RFA: Adjust PowerPC prologue analyzer for PIC Message-ID: <20060123014950.GK27224@nevyn.them.org> Mail-Followup-To: gdb-patches@sourceware.org References: <20051211171541.GA32322@nevyn.them.org> <20051215130633.74707397@ironwood.lan> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20051215130633.74707397@ironwood.lan> User-Agent: Mutt/1.5.8i X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-01/txt/msg00313.txt.bz2 On Thu, Dec 15, 2005 at 01:06:33PM -0700, Kevin Buettner wrote: > On Sun, 11 Dec 2005 12:15:41 -0500 > Daniel Jacobowitz wrote: > > > 2005-12-10 Daniel Jacobowitz > > > > PR tdep/2029 > > Suggested by Till Straumann : > > * rs6000-tdep.c (skip_prologue): Update check for later mtlr > > instructions. Handle PIC bcl. > > Okay. Thanks. I've belatedly checked this in, along with the attached testcase. -- Daniel Jacobowitz CodeSourcery 2006-01-22 Daniel Jacobowitz * gdb.arch/powerpc-prologue.c, gdb.arch/powerpc-prologue.exp: New files. Index: gdb.arch/powerpc-prologue.c =================================================================== RCS file: gdb.arch/powerpc-prologue.c diff -N gdb.arch/powerpc-prologue.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ gdb.arch/powerpc-prologue.c 23 Jan 2006 01:46:50 -0000 @@ -0,0 +1,53 @@ +/* Unwinder test program. + + Copyright 2006 Free Software Foundation, Inc. + + This file is part of GDB. + + 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. */ + +#ifdef SYMBOL_PREFIX +#define SYMBOL(str) SYMBOL_PREFIX #str +#else +#define SYMBOL(str) #str +#endif + +void gdb2029 (void); + +int +main (void) +{ + gdb2029 (); + return 0; +} + +/* A typical PIC prologue from GCC. */ + +asm(".text\n" + " .align 8\n" + SYMBOL (gdb2029) ":\n" + " stw %r1, -32(%r1)\n" + " mflr %r0\n" + " bcl- 20,31,.+4\n" + " stw %r30, 24(%r1)\n" + " mflr %r30\n" + " stw %r0, 36(%r1)\n" + " twge %r2, %r2\n" + " lwz %r0, 36(%r1)\n" + " lwz %r30, 24(%r1)\n" + " mtlr %r0\n" + " addi %r0, %r0, 32\n" + " blr"); Index: gdb.arch/powerpc-prologue.exp =================================================================== RCS file: gdb.arch/powerpc-prologue.exp diff -N gdb.arch/powerpc-prologue.exp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ gdb.arch/powerpc-prologue.exp 23 Jan 2006 01:46:50 -0000 @@ -0,0 +1,61 @@ +# Copyright 2006 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. + +# Test PowerPC prologue analyzer. + +# Do not run on AIX (where we won't be able to build the tests without +# some surgery) or on PowerPC64 (ditto, dot symbols). +if {[istarget *-*-aix*] || ![istarget "powerpc-*-*"]} then { + verbose "Skipping PowerPC prologue tests." + return +} + +set testfile "powerpc-prologue" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} + +# Don't use "debug", so that we don't have line information for the assembly +# fragments. +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {}] != "" } { + untested "PowerPC prologue tests" + return -1 +} + + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +# +# Run to `main' where we begin our tests. +# + +if ![runto_main] then { + gdb_suppress_tests +} + +# Testcase for PIC prologue. + +gdb_test "continue" "Program received signal SIGTRAP.*" "continue to PIC" + +gdb_test "backtrace 10" \ + "#0\[ \t\]*$hex in gdb2029.*\r\n#1\[ \t\]*$hex in main.*" \ + "backtrace in PIC" + +gdb_test "info frame" \ + ".*Saved registers:.*r30 at.*r31 at.*pc at.*lr at.*" \ + "saved registers in PIC"