aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.cell/ea-test.exp
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.cell/ea-test.exp')
-rw-r--r--gdb/testsuite/gdb.cell/ea-test.exp124
1 files changed, 124 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.cell/ea-test.exp b/gdb/testsuite/gdb.cell/ea-test.exp
new file mode 100644
index 0000000..a94b688
--- /dev/null
+++ b/gdb/testsuite/gdb.cell/ea-test.exp
@@ -0,0 +1,124 @@
+# Copyright 2009 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/>.
+#
+# Contributed by Markus Deuling <deuling@de.ibm.com>.
+#
+# Testsuite for Cell Broadband Engine combined debugger
+# Testcase for __ea pointer
+
+load_lib cell.exp
+
+set testfile "ea-test"
+set source ${srcdir}/${subdir}/${testfile}.c
+set binary ${objdir}/${subdir}/${testfile}
+
+if {[skip_cell_tests]} {
+ return 0
+}
+
+# Compile SPU binary.
+if { [gdb_compile_cell_spu $source $binary executable {debug}] != "" } {
+ unsupported "Compile spu binary failed, so all tests in this file will automatically fail."
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binary}
+
+if ![runto_main] then {
+ fail "Can't run to main"
+ return 0
+}
+
+# p
+gdb_test "p ppe_pointer" \
+ "(int.*@__ea).*0x0.*" \
+ "p ppe_pointer"
+
+gdb_test "p normal_pointer" \
+ "(int.*).*0x0.*" \
+ "p normal_pointer"
+
+gdb_test "p local_ppe_pointer" \
+ "(int.*@__ea).*0x0.*" \
+ "p local_ppe_pointer"
+
+gdb_test "p local_normal_pointer" \
+ "(int.*).*0x0.*" \
+ "p local_normal_pointer"
+
+# ptype
+gdb_test "ptype ppe_pointer" \
+ "type = int.*@__ea" \
+ "ptype ppe_pointer"
+
+gdb_test "ptype normal_pointer" \
+ "type = int.*" \
+ "ptype normal_pointer"
+
+gdb_test "ptype local_ppe_pointer" \
+ "type = int.*@__ea" \
+ "ptype local_ppe_pointer"
+
+gdb_test "ptype local_normal_pointer" \
+ "type = int.*" \
+ "ptype local_normal_pointer"
+
+# info locals
+gdb_test "info locals" \
+ ".*local_ppe_pointer =.*0x0.*local_normal_pointer =.*0x0.*" \
+ "info locals"
+
+# p &
+gdb_test "p &ppe_pointer" \
+ ".*=.*(int.*@__ea.*).*0x.*" \
+ "p &ppe_pointer"
+
+gdb_test "p &normal_pointer" \
+ ".*=.*(int.*).*0x.*" \
+ "p &normal_pointer"
+
+gdb_test "p &local_ppe_pointer" \
+ ".*=.*(int.*@__ea.*).*0x.*" \
+ "p &local_ppe_pointer"
+
+gdb_test "p &local_normal_pointer" \
+ ".*=.*(int.*).*0x.*" \
+ "p &local_normal_pointer"
+
+# ptype *
+gdb_test "ptype *ppe_pointer" \
+ "type = int" \
+ "ptype *ppe_pointer"
+
+gdb_test "ptype *normal_pointer" \
+ "type = int" \
+ "ptype *normal_pointer"
+
+gdb_test "ptype *local_ppe_pointer" \
+ "type = int" \
+ "ptype *local_ppe_pointer"
+
+gdb_test "ptype *local_normal_pointer" \
+ "type = int" \
+ "ptype *local_normal_pointer"
+
+gdb_exit
+
+return 0
+
+