This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] PPC atomic single stepping testcase
- From: Luis Machado <luisgpm at linux dot vnet dot ibm dot com>
- To: gdb-patches at sourceware dot org
- Date: Tue, 04 Dec 2007 17:33:12 -0200
- Subject: [PATCH] PPC atomic single stepping testcase
- Reply-to: luisgpm at linux dot vnet dot ibm dot com
Hi Folks,
The fix for the PPC single stepping through atomic sequences is already
upstream, but currently there's no testcase for it. Follows a patch to
add a testcase to check for that problem. It's been sitting in my system
for a while since it needed a fix, but should be OK now.
Comments?
Best regards,
Luis
2007-12-04 Luis Machado <luisgpm@br.ibm.com>
* gdb.arch/powerpc64-atomic-single-stepping.c: New testcase source file.
* gdb.arch/powerpc64-atomic-single-stepping.exp: New testcase expect file.
Index: gdb/testsuite/gdb.arch/powerpc64-atomic-single-stepping.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb/testsuite/gdb.arch/powerpc64-atomic-single-stepping.c 2007-12-04 10:21:12.000000000 -0800
@@ -0,0 +1,30 @@
+/* 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/>. */
+
+#include <stdio.h>
+
+void hello ()
+{
+ printf ("Hello, world!\n");
+}
+
+int main()
+{
+ hello();
+
+ return 0;
+}
Index: gdb/testsuite/gdb.arch/powerpc64-atomic-single-stepping.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb/testsuite/gdb.arch/powerpc64-atomic-single-stepping.exp 2007-12-04 10:22:06.000000000 -0800
@@ -0,0 +1,71 @@
+# 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.
+#
+# This file is part of the gdb testsuite.
+
+if $tracelevel {
+ strace $tracelevel
+}
+
+# Test single stepping through atomic sequences beginning with
+# a lwarx/ldarx instruction and ending with a stwcx/stdcx
+# instruction.
+
+set prms_id 0
+set bug_id 0
+
+if ![istarget "powerpc64-*"] then {
+ verbose "Skipping powerpc64 single stepping over atomic sequences testing."
+ return
+}
+
+set testfile "powerpc64-atomic-single-stepping"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+set compile_flags "debug"
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable ${compile_flags}] != "" } {
+ unsupported "Testcase compile failed."
+ 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 "x/g &puts" "$hex <puts>:\[\t\]+$hex" \
+ "Get the address of the puts function"
+
+gdb_breakpoint "*(\$__ + 88)" "Breakpoint $decimal at $hex" \
+ "Set the breakpoint at the start of the sequence"
+
+gdb_test continue "Continuing.*Breakpoint $decimal.*" \
+ "Continue until breakpoint"
+
+gdb_test "x/i \$pc" "$hex <.*>:\[\t\]+lwarx.*" \
+ "Check for the lwarx instruction to be stepped"
+
+gdb_test "stepi" "$hex in \._IO_puts \\(\\) from .*" \
+ "Step through the atomic sequence"
+
+gdb_test "x/i (\$pc - 4)" "$hex <.*>:\[\t\]+stwcx.*" \
+ "Check for stepped stcwx instruction"