This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PPC Call-clobbered registers testcase


Thanks for reviewing,

Hopefully i addressed all of the issues in this updated version. I'm
aiming at gdb.opt for this one.

- Addressed the directory structure in the Changelog
- Not PowerPC-specific anymore
- Copyrighted c file
- Optimize compile flag
- Defined __attribute__(x)

As for the last comment, about passing on correct values, the correct
behaviour, at least in this test case, is for GDB to display those
values as optimized since they no longer are proven to be correct.
Anything i'm failing to see in this case?

Regards,

On Sat, 2007-10-06 at 12:12 -0400, Daniel Jacobowitz wrote:
> Thanks for doing this.
> 
> On Tue, Sep 25, 2007 at 10:21:51AM -0300, Luis Machado wrote:
> > 2007-09-24  Luis Machado  <luisgpm@br.ibm.com>
> > 
> >     * ppc-clobbered-registers-O2.c: New testcase source file.
> >     * ppc-clobbered-registers-O2.exp: New testcase expect file.
> 
> The directory name should be included here.  Also, gdb.trace doesn't
> mean what you think it does :-)  It's for tracepoint tests; so instead
> you probably want gdb.base.
> 
> Alternatively, a new gdb.opt for optimized code tests.  CodeSourcery
> has a project I hope we will be contributing by the beginning of next
> year that puts a few testcases in gdb.opt; if no one thinks that's a
> bad idea, then let's start the directory now.
> 
> There's nothing PowerPC specific about these tests.  So I would
> recommend not putting ppc in their names or skipping them for
> non-PowerPC targets.  It will turn up the same bug on other platforms
> that passed arguments in registers, hopefully.
> 
> > Index: gdb/testsuite/gdb.trace/ppc-clobbered-registers-O2.c
> > ===================================================================
> > --- /dev/null	1970-01-01 00:00:00.000000000 +0000
> > +++ gdb/testsuite/gdb.trace/ppc-clobbered-registers-O2.c	2007-09-24 07:26:39.000000000 -0700
> > @@ -0,0 +1,21 @@
> > +
> > +unsigned * __attribute__((noinline))
> 
> New test cases should have a copyright header, please.  And let's use
> 
> #ifndef __GNUC__
> #define __attribute__(x)
> #endif
> 
> so that non-GNU compilers can have a chance to run the test too.  At
> least in theory.
> 
> > +set compile_flags "debug additional_flags=-O2"
> 
> "debug optimize=-O2"
> 
> > +gdb_test backtrace ".*operand0=<value optimized out>.*operand1=<value optimized out>.*" \
> > +  "Check value of call clobbered registers"
> 
> May as well let the test pass if it sees the correct values, too.
> 
-- 
Luis Machado
IBM Linux Technology Center
e-mail: luisgpm@linux.vnet.ibm.com
2007-10-08  Luis Machado  <luisgpm@br.ibm.com>

    * gdb.opt/clobbered-registers-O2.c: New testcase source file.
    * gdb.opt/clobbered-registers-O2.exp: New testcase expect file.

Index: gdb/testsuite/gdb.opt/clobbered-registers-O2.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ gdb/testsuite/gdb.opt/clobbered-registers-O2.c	2007-10-08 09:36:28.000000000 -0700
@@ -0,0 +1,44 @@
+/* This file is part of GDB, the GNU debugger.
+
+   Copyright 2007 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 3 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, see <http://www.gnu.org/licenses/>.
+
+   Please email any bugs, comments, and/or additions to this file to:
+   bug-gdb@prep.ai.mit.edu  */
+
+#ifndef __GNUC__
+#define __attribute__(x)
+#endif
+
+unsigned * __attribute__((noinline))
+start_sequence (unsigned * x, unsigned * y)
+{
+	return (unsigned *)0xdeadbeef;
+};
+
+unsigned __attribute__((noinline))
+gen_movsd (unsigned * operand0, unsigned * operand1)
+{
+	return *start_sequence(operand0, operand1);
+}
+
+int main(void)
+{
+  unsigned x, y;
+
+  x = 13;
+  y = 14;
+  return (int)gen_movsd (&x, &y);
+}
Index: gdb/testsuite/gdb.opt/clobbered-registers-O2.exp
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ gdb/testsuite/gdb.opt/clobbered-registers-O2.exp	2007-10-08 11:20:17.000000000 -0700
@@ -0,0 +1,56 @@
+# Copyright 2007 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.
+#
+# This file is part of the gdb testsuite.
+
+if $tracelevel {
+    strace $tracelevel
+}
+
+# Test displaying call clobbered registers in optimized binaries for ppc.
+# GDB should not show incorrect values.
+
+set prms_id 0
+set bug_id 0
+
+set testfile "clobbered-registers-O2"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+set compile_flags "debug optimize=-O2"
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable ${compile_flags}] != "" } {
+    untested clobbered-registers-O2.exp
+    return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+if ![runto_main] then {
+    perror "Couldn't run to breakpoint"
+    continue
+}
+
+gdb_test "b start_sequence" ".*Breakpoint 2 at.*line 29.*" \
+  "Insert breakpoint at problematic function"
+
+gdb_test continue ".*Breakpoint 2.*in start_sequence.*" \
+  "Run until problematic function"
+
+gdb_test backtrace ".*operand0=<value optimized out>.*operand1=<value optimized out>.*" \
+  "Check value of call clobbered registers"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]