xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.base/pointers.c (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1*b725ae77Skettenis 
2*b725ae77Skettenis #if !defined (__STDC__) && !defined (_AIX)
3*b725ae77Skettenis #define signed  /**/
4*b725ae77Skettenis #endif
5*b725ae77Skettenis 
6*b725ae77Skettenis char		v_char;
7*b725ae77Skettenis signed char	v_signed_char;
8*b725ae77Skettenis unsigned char	v_unsigned_char;
9*b725ae77Skettenis 
10*b725ae77Skettenis short		v_short;
11*b725ae77Skettenis signed short	v_signed_short;
12*b725ae77Skettenis unsigned short	v_unsigned_short;
13*b725ae77Skettenis 
14*b725ae77Skettenis int		v_int;
15*b725ae77Skettenis signed int	v_signed_int;
16*b725ae77Skettenis unsigned int	v_unsigned_int;
17*b725ae77Skettenis 
18*b725ae77Skettenis long		v_long;
19*b725ae77Skettenis signed long	v_signed_long;
20*b725ae77Skettenis unsigned long	v_unsigned_long;
21*b725ae77Skettenis 
22*b725ae77Skettenis float		v_float;
23*b725ae77Skettenis double		v_double;
24*b725ae77Skettenis 
25*b725ae77Skettenis 
26*b725ae77Skettenis 
27*b725ae77Skettenis char		*v_char_pointer;
28*b725ae77Skettenis signed char	*v_signed_char_pointer;
29*b725ae77Skettenis unsigned char	*v_unsigned_char_pointer;
30*b725ae77Skettenis 
31*b725ae77Skettenis short		*v_short_pointer;
32*b725ae77Skettenis signed short	*v_signed_short_pointer;
33*b725ae77Skettenis unsigned short	*v_unsigned_short_pointer;
34*b725ae77Skettenis 
35*b725ae77Skettenis int		*v_int_pointer;
36*b725ae77Skettenis int             *v_int_pointer2;
37*b725ae77Skettenis signed int	*v_signed_int_pointer;
38*b725ae77Skettenis unsigned int	*v_unsigned_int_pointer;
39*b725ae77Skettenis 
40*b725ae77Skettenis long		*v_long_pointer;
41*b725ae77Skettenis signed long	*v_signed_long_pointer;
42*b725ae77Skettenis unsigned long	*v_unsigned_long_pointer;
43*b725ae77Skettenis 
44*b725ae77Skettenis float		*v_float_pointer;
45*b725ae77Skettenis double		*v_double_pointer;
46*b725ae77Skettenis 
47*b725ae77Skettenis 
48*b725ae77Skettenis char		v_char_array[2];
49*b725ae77Skettenis signed char	v_signed_char_array[2];
50*b725ae77Skettenis unsigned char	v_unsigned_char_array[2];
51*b725ae77Skettenis 
52*b725ae77Skettenis short		v_short_array[2];
53*b725ae77Skettenis signed short	v_signed_short_array[2];
54*b725ae77Skettenis unsigned short	v_unsigned_short_array[2];
55*b725ae77Skettenis 
56*b725ae77Skettenis int		v_int_array[2];
57*b725ae77Skettenis signed int	v_signed_int_array[2];
58*b725ae77Skettenis unsigned int	v_unsigned_int_array[2];
59*b725ae77Skettenis 
60*b725ae77Skettenis long		v_long_array[2];
61*b725ae77Skettenis signed long	v_signed_long_array[2];
62*b725ae77Skettenis unsigned long	v_unsigned_long_array[2];
63*b725ae77Skettenis 
64*b725ae77Skettenis float		v_float_array[2];
65*b725ae77Skettenis double		v_double_array[2];
66*b725ae77Skettenis 
67*b725ae77Skettenis int matrix[2][3] = { { 0, 1, 2}, {3, 4, 5}};
68*b725ae77Skettenis int (*rptr)[3] = matrix;
69*b725ae77Skettenis 
70*b725ae77Skettenis float ** ptr_to_ptr_to_float;
71*b725ae77Skettenis 
72*b725ae77Skettenis int y;
73*b725ae77Skettenis 
74*b725ae77Skettenis /* Do nothing function used for forcing some of the above variables to
75*b725ae77Skettenis    be referenced by the program source.  If the variables are not
76*b725ae77Skettenis    referenced, some linkers will remove the symbol from the symbol
77*b725ae77Skettenis    table making it impossible to refer to the variable in gdb.  */
usevar(void * var)78*b725ae77Skettenis void usevar (void *var) {}
79*b725ae77Skettenis 
main()80*b725ae77Skettenis int main ()
81*b725ae77Skettenis {
82*b725ae77Skettenis   void dummy();
83*b725ae77Skettenis   int more_code();
84*b725ae77Skettenis 
85*b725ae77Skettenis #ifdef usestubs
86*b725ae77Skettenis   set_debug_traps();
87*b725ae77Skettenis   breakpoint();
88*b725ae77Skettenis #endif
89*b725ae77Skettenis   dummy();
90*b725ae77Skettenis 
91*b725ae77Skettenis   more_code ();
92*b725ae77Skettenis 
93*b725ae77Skettenis   usevar (&v_int_pointer2);
94*b725ae77Skettenis   usevar (&rptr);
95*b725ae77Skettenis   usevar (&y);
96*b725ae77Skettenis 
97*b725ae77Skettenis   return 0;
98*b725ae77Skettenis 
99*b725ae77Skettenis }
100*b725ae77Skettenis 
dummy()101*b725ae77Skettenis void dummy()
102*b725ae77Skettenis {
103*b725ae77Skettenis 
104*b725ae77Skettenis 
105*b725ae77Skettenis   v_char = 0;
106*b725ae77Skettenis   v_signed_char = 1;
107*b725ae77Skettenis   v_unsigned_char = 2;
108*b725ae77Skettenis 
109*b725ae77Skettenis   v_short = 3;
110*b725ae77Skettenis   v_signed_short = 4;
111*b725ae77Skettenis   v_unsigned_short = 5;
112*b725ae77Skettenis 
113*b725ae77Skettenis   v_int = 6;
114*b725ae77Skettenis   v_signed_int = 7;
115*b725ae77Skettenis   v_unsigned_int = 8;
116*b725ae77Skettenis 
117*b725ae77Skettenis   v_long = 9;
118*b725ae77Skettenis   v_signed_long = 10;
119*b725ae77Skettenis   v_unsigned_long = 11;
120*b725ae77Skettenis 
121*b725ae77Skettenis   v_float = 100.0;
122*b725ae77Skettenis   v_double = 200.0;
123*b725ae77Skettenis 
124*b725ae77Skettenis 
125*b725ae77Skettenis 
126*b725ae77Skettenis   v_char_pointer = &v_char;
127*b725ae77Skettenis   v_signed_char_pointer = &v_signed_char;
128*b725ae77Skettenis   v_unsigned_char_pointer = &v_unsigned_char;
129*b725ae77Skettenis 
130*b725ae77Skettenis   v_short_pointer = &v_short;
131*b725ae77Skettenis   v_signed_short_pointer = &v_signed_short;
132*b725ae77Skettenis   v_unsigned_short_pointer = &v_unsigned_short;
133*b725ae77Skettenis 
134*b725ae77Skettenis   v_int_pointer = &v_int;
135*b725ae77Skettenis   v_signed_int_pointer = &v_signed_int;
136*b725ae77Skettenis   v_unsigned_int_pointer = &v_unsigned_int;
137*b725ae77Skettenis 
138*b725ae77Skettenis   v_long_pointer = &v_long;
139*b725ae77Skettenis   v_signed_long_pointer = &v_signed_long;
140*b725ae77Skettenis   v_unsigned_long_pointer = &v_unsigned_long;
141*b725ae77Skettenis 
142*b725ae77Skettenis   v_float_pointer = &v_float;
143*b725ae77Skettenis   v_double_pointer = &v_double;
144*b725ae77Skettenis 
145*b725ae77Skettenis   ptr_to_ptr_to_float = &v_float_pointer;
146*b725ae77Skettenis 
147*b725ae77Skettenis 
148*b725ae77Skettenis   v_char_array[0] = v_char;
149*b725ae77Skettenis   v_signed_char_array[0] = v_signed_char;
150*b725ae77Skettenis   v_unsigned_char_array[0] = v_unsigned_char;
151*b725ae77Skettenis 
152*b725ae77Skettenis   v_short_array[0] = v_short;
153*b725ae77Skettenis   v_signed_short_array[0] = v_signed_short;
154*b725ae77Skettenis   v_unsigned_short_array[0] = v_unsigned_short;
155*b725ae77Skettenis 
156*b725ae77Skettenis   v_int_array[0] = v_int;
157*b725ae77Skettenis   v_int_array[1] = v_int * 3;
158*b725ae77Skettenis 
159*b725ae77Skettenis   v_signed_int_array[0] = v_signed_int;
160*b725ae77Skettenis   v_unsigned_int_array[0] = v_unsigned_int;
161*b725ae77Skettenis 
162*b725ae77Skettenis   v_long_array[0] = v_long;
163*b725ae77Skettenis   v_signed_long_array[0] = v_signed_long;
164*b725ae77Skettenis   v_unsigned_long_array[0] = v_unsigned_long;
165*b725ae77Skettenis 
166*b725ae77Skettenis   v_float_array[0] = v_float;
167*b725ae77Skettenis   v_double_array[0] = v_double;
168*b725ae77Skettenis 
169*b725ae77Skettenis }
170*b725ae77Skettenis 
marker1()171*b725ae77Skettenis void marker1 ()
172*b725ae77Skettenis {
173*b725ae77Skettenis }
174*b725ae77Skettenis 
more_code()175*b725ae77Skettenis int more_code()
176*b725ae77Skettenis {
177*b725ae77Skettenis     char C, *pC, **ppC, ***pppC, ****ppppC, *****pppppC, ******ppppppC;
178*b725ae77Skettenis     unsigned char UC, *pUC;
179*b725ae77Skettenis     short S, *pS;
180*b725ae77Skettenis     unsigned short US, *pUS;
181*b725ae77Skettenis     int I, *pI;
182*b725ae77Skettenis     unsigned int UI, *pUI;
183*b725ae77Skettenis     long L, *pL;
184*b725ae77Skettenis     unsigned long UL, *pUL;
185*b725ae77Skettenis     float F, *pF;
186*b725ae77Skettenis     double D, *pD;
187*b725ae77Skettenis 
188*b725ae77Skettenis     C = 'A';
189*b725ae77Skettenis     UC = 21;
190*b725ae77Skettenis     S = -14;
191*b725ae77Skettenis     US = 7;
192*b725ae77Skettenis     I = 102;
193*b725ae77Skettenis     UI = 1002;
194*b725ae77Skettenis     L = -234;
195*b725ae77Skettenis     UL = 234;
196*b725ae77Skettenis     F = 1.25E10;
197*b725ae77Skettenis     D = -1.25E-37;
198*b725ae77Skettenis     pC = &C;
199*b725ae77Skettenis     ppC = &pC;
200*b725ae77Skettenis     pppC = &ppC;
201*b725ae77Skettenis     ppppC = &pppC;
202*b725ae77Skettenis     pppppC = &ppppC;
203*b725ae77Skettenis     ppppppC = &pppppC;
204*b725ae77Skettenis     pUC = &UC;
205*b725ae77Skettenis     pS = &S;
206*b725ae77Skettenis     pUS = &US;
207*b725ae77Skettenis     pI = &I;
208*b725ae77Skettenis     pUI = &UI;
209*b725ae77Skettenis     pL = &L;
210*b725ae77Skettenis     pUL = &UL;
211*b725ae77Skettenis     pF = &F;
212*b725ae77Skettenis     pD = &D;
213*b725ae77Skettenis 
214*b725ae77Skettenis     marker1();
215*b725ae77Skettenis     return 0;
216*b725ae77Skettenis }
217