1# Copyright 2009, 2011 Free Software Foundation, Inc.
2#
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program.  If not, see <http://www.gnu.org/licenses/>.
15#
16# Contributed by Markus Deuling <deuling@de.ibm.com>.
17#
18# Testsuite for Cell Broadband Engine combined debugger
19# Testcase for __ea pointer
20
21load_lib cell.exp
22
23set testfile "ea-test"
24set source ${srcdir}/${subdir}/${testfile}.c
25set binary ${objdir}/${subdir}/${testfile}
26
27if {[skip_cell_tests]} {
28    return 0
29}
30
31# Compile SPU binary.
32if { [gdb_compile_cell_spu $source $binary executable {debug}]  != "" } {
33  unsupported "Compile spu binary failed, so all tests in this file will automatically fail."
34  return -1
35}
36
37gdb_exit
38gdb_start
39gdb_reinitialize_dir $srcdir/$subdir
40gdb_load ${binary}
41
42if ![runto_main] then {
43  fail "Can't run to main"
44  return 0
45}
46
47# p
48gdb_test "p ppe_pointer" \
49	 "(int.*@__ea).*0x0.*" \
50	 "p ppe_pointer"
51
52gdb_test "p normal_pointer" \
53	 "(int.*).*0x0.*" \
54	 "p normal_pointer"
55
56gdb_test "p local_ppe_pointer" \
57	 "(int.*@__ea).*0x0.*" \
58	 "p local_ppe_pointer"
59
60gdb_test "p local_normal_pointer" \
61	 "(int.*).*0x0.*" \
62	 "p local_normal_pointer"
63
64# ptype
65gdb_test "ptype ppe_pointer" \
66	 "type = int.*@__ea" \
67	 "ptype ppe_pointer"
68
69gdb_test "ptype normal_pointer" \
70	 "type = int.*" \
71	 "ptype normal_pointer"
72
73gdb_test "ptype local_ppe_pointer" \
74	 "type = int.*@__ea" \
75	 "ptype local_ppe_pointer"
76
77gdb_test "ptype local_normal_pointer" \
78	 "type = int.*" \
79	 "ptype local_normal_pointer"
80
81# info locals
82gdb_test "info locals" \
83	 ".*local_ppe_pointer =.*0x0.*local_normal_pointer =.*0x0.*" \
84	 "info locals"
85
86# p &
87gdb_test "p &ppe_pointer" \
88	 ".*=.*(int.*@__ea.*).*0x.*" \
89	 "p &ppe_pointer"
90
91gdb_test "p &normal_pointer" \
92	 ".*=.*(int.*).*0x.*" \
93	 "p &normal_pointer"
94
95gdb_test "p &local_ppe_pointer" \
96	 ".*=.*(int.*@__ea.*).*0x.*" \
97	 "p &local_ppe_pointer"
98
99gdb_test "p &local_normal_pointer" \
100	 ".*=.*(int.*).*0x.*" \
101	 "p &local_normal_pointer"
102
103# ptype *
104gdb_test "ptype *ppe_pointer" \
105	 "type = int" \
106	 "ptype *ppe_pointer"
107
108gdb_test "ptype *normal_pointer" \
109	 "type = int" \
110	 "ptype *normal_pointer"
111
112gdb_test "ptype *local_ppe_pointer" \
113	 "type = int" \
114	 "ptype *local_ppe_pointer"
115
116gdb_test "ptype *local_normal_pointer" \
117	 "type = int" \
118	 "ptype *local_normal_pointer"
119
120gdb_exit
121
122return 0
123
124
125