From: Joel Brobecker <brobecker@gnat.com>
To: gdb-patches@sources.redhat.com
Subject: [RFA/testsuite/powerpc] New gdb.arch test for prologue analysis
Date: Mon, 19 Apr 2004 23:24:00 -0000 [thread overview]
Message-ID: <20040419232439.GC22414@gnat.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 788 bytes --]
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 <brobecker@gnat.com>
* gdb.arch/powerpc-prologue.c: New file.
* gdb.arch/powerpc-prologue.exp: New file.
2004-04-19 Joel Brobecker <brobecker@gnat.com>
* 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
[-- Attachment #2: powerpc-prologue.c --]
[-- Type: text/plain, Size: 1859 bytes --]
/* 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");
[-- Attachment #3: powerpc-prologue.exp --]
[-- Type: text/plain, Size: 2692 bytes --]
# 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
[-- Attachment #4: fnchange.lst.diff --]
[-- Type: text/plain, Size: 1000 bytes --]
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
next reply other threads:[~2004-04-19 23:24 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-04-19 23:24 Joel Brobecker [this message]
2004-04-19 23:34 ` Daniel Jacobowitz
2004-04-19 23:58 ` Joel Brobecker
2004-04-26 16:18 ` Joel Brobecker
2004-05-07 14:35 ` Andrew Cagney
2004-05-08 0:12 ` Joel Brobecker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040419232439.GC22414@gnat.com \
--to=brobecker@gnat.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox