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