Update copyright to LGPL on all files
[dyninst.git] / dyninstAPI / tests / src / test1.mutateeFortC.c
1 /*
2  * Copyright (c) 1996-2009 Barton P. Miller
3  * 
4  * We provide the Paradyn Parallel Performance Tools (below
5  * described as "Paradyn") on an AS IS basis, and do not warrant its
6  * validity or performance.  We reserve the right to update, modify,
7  * or discontinue this software at any time.  We shall have no
8  * obligation to supply such updates or modifications or any other
9  * form of support to you.
10  * 
11  * By your use of Paradyn, you understand and agree that we (or any
12  * other person or entity with proprietary rights in Paradyn) are
13  * under no obligation to provide either maintenance services,
14  * update services, notices of latent defects, or correction of
15  * defects for Paradyn.
16  * 
17  * This library is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU Lesser General Public
19  * License as published by the Free Software Foundation; either
20  * version 2.1 of the License, or (at your option) any later version.
21  * 
22  * This library is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
25  * Lesser General Public License for more details.
26  * 
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
30  */
31
32 /* Test application (Mutatee) */
33
34 /* $Id: test1.mutateeFortC.c,v 1.15 2005/09/23 23:49:46 jodom Exp $ */
35
36 #include <stdlib.h>
37 #include "test1.mutateeCommon.h"
38
39 struct struct26_1 {
40     int field1_;
41     int field2_;
42 };
43
44 struct struct26_2_ {
45     int field1_;
46     int field2_;
47     int field3_[10];
48     struct struct26_1 field4_;
49 };
50
51 // **********************************************************************
52 // The following structure (struct block_) is made to correspond with the
53 // Fortran common block (globals) defined in test1_common.h.  Be sure all
54 // changes to this structure are reflected in the other.
55 // **********************************************************************
56 struct block_ {
57         double globalVariable20_2_;
58
59         int globalVariable1_1, globalVariable3_1_, globalVariable4_1_, globalVariable5_1_, globalVariable5_2_;
60
61         int globalVariable6_1, globalVariable6_2_, globalVariable6_3_, globalVariable6_4_, globalVariable6_5_,
62                 globalVariable6_6_, globalVariable6_1a_, globalVariable6_2a_, globalVariable6_3a_, globalVariable6_4a_,
63                 globalVariable6_5a_, globalVariable6_6a_;
64
65         int constVar0_, constVar1_, constVar2_, constVar3_, constVar4_, constVar5_, constVar6_, constVar7_,
66                 constVar9_, constVar10_, constVar60_, constVar64_, constVar66_, constVar67_;
67         int globalVariable7_1, globalVariable7_2_, globalVariable7_3_, globalVariable7_4_, globalVariable7_5_,
68                 globalVariable7_6_, globalVariable7_7_, globalVariable7_8_, globalVariable7_9_, globalVariable7_10_,
69                 globalVariable7_11_, globalVariable7_12_, globalVariable7_13_, globalVariable7_14_, globalVariable7_15_,
70                 globalVariable7_16_;
71
72         int globalVariable7_1a_, globalVariable7_2a_, globalVariable7_3a_, globalVariable7_4a_, globalVariable7_5a_,
73                 globalVariable7_6a_, globalVariable7_7a_, globalVariable7_8a_, globalVariable7_9a_, globalVariable7_10a_,
74             globalVariable7_11a_, globalVariable7_12a_, globalVariable7_13a_, globalVariable7_14a_, globalVariable7_15a_,
75                 globalVariable7_16a__;
76
77         int globalVariable8_1;
78
79         int globalVariable10_1, globalVariable10_2_, globalVariable10_3_, globalVariable10_4_;
80
81         int globalVariable11_1, globalVariable11_2_, globalVariable11_3_, globalVariable11_4_, globalVariable11_5_;
82
83         int globalVariable12_1;
84
85         int globalVariable13_1;
86
87         int globalVariable14_1, globalVariable14_2_;
88
89         int globalVariable15_1, globalVariable15_2_, globalVariable15_3_, globalVariable15_4_;
90
91         int globalVariable16_1, globalVariable16_2_, globalVariable16_3_, globalVariable16_4_, globalVariable16_5_,
92                 globalVariable16_6_, globalVariable16_7_, globalVariable16_8_, globalVariable16_9_, globalVariable16_10_;
93
94         int globalVariable17_1, globalVariable17_2_;
95
96         int globalVariable18_1;
97
98         int globalVariable19_1, globalVariable19_2_;
99
100         int globalVariable20_1;
101
102         int globalVariable25_1, globalVariable25_2_, globalVariable25_3_, globalVariable25_4_, globalVariable25_5_,
103                 globalVariable25_6_, globalVariable25_7_;
104
105 /*      struct struct26_2_ globalVariable26_1; */
106 #if defined(alpha_dec_osf4_0)
107     long globalVariable26_2_;
108 #else
109     int globalVariable26_2_;
110 #endif
111         int globalVariable26_3_, globalVariable26_4_, globalVariable26_5_, globalVariable26_6_,
112                 globalVariable26_7_, globalVariable26_8_, globalVariable26_9_, globalVariable26_10_, globalVariable26_11_,
113                 globalVariable26_12_, globalVariable26_13_;
114
115         int globalVariable27_1; int globalVariable27_5_[10]; int globalVariable27_6_[10];
116         float globalVariable27_7_[10]; float globalVariable27_8_[12];
117
118         int globalVariable29_1;
119
120         int globalVariable31_1, globalVariable31_2_, globalVariable31_3_, globalVariable31_4_;
121
122         int globalVariable32_1, globalVariable32_2_, globalVariable32_3_, globalVariable32_4_;
123
124         int globalVariable36_1_, globalVariable36_2_, globalVariable36_3_,
125        globalVariable36_4_, globalVariable36_5_, globalVariable36_6_,
126        globalVariable36_7_, globalVariable36_8_, globalVariable36_9_,
127        globalVariable36_10_;
128
129    int passedTest_ [40];
130 };
131
132 #if !defined(XLF)
133 #define func1_1 func1_1_
134 #define func2_1 func2_1_
135 #define func3_1 func3_1_
136 #define func4_1 func4_1_
137 #define func5_1 func5_1_
138 #define func6_1 func6_1_
139 #define func7_1 func7_1_
140 #define func8_1 func8_1_
141 #define func9_1 func9_1_
142 #define func10_1 func10_1_
143 #define func11_1 func11_1_
144 #define func12_1 func12_1_
145 #define func13_1 func13_1_
146 #define func14_1 func14_1_
147 #define func15_1 func15_1_
148 #define func16_1 func16_1_
149 #define func17_1 func17_1_
150 #define func18_1 func18_1_
151 #define func19_1 func19_1_
152 #define func20_1 func20_1_
153 #define func21_1 func21_1_
154 #define func22_1 func22_1_
155 #define func23_1 func23_1_
156 #define func24_1 func24_1_
157 #define func25_1 func25_1_
158 #define func26_1 func26_1_
159 #define func27_1 func27_1_
160 #define func28_1 func28_1_
161 #define func29_1 func29_1_
162 #define func30_1 func30_1_
163 #define func31_1 func31_1_
164 #define func32_1 func32_1_
165 #define func33_1 func33_1_
166 #define func34_1 func34_1_
167 #define func35_1 func35_1_
168 #define func36_1 func36_1_
169 #define func37_1 func37_1_
170 #define func38_1 func38_1_
171 #define func39_1 func39_1_
172 #define func40_1 func40_1_
173 #define init_globals init_globals_
174 #define globals globals_
175 #endif
176
177 extern struct block_ globals;
178
179 extern void init_globals ();
180 extern void func1_1 ();
181 extern void func2_1 ();
182 extern void func3_1 ();
183 extern void func4_1 ();
184 extern void func5_1 ();
185 extern void func6_1 ();
186 extern void func7_1 ();
187 extern void func8_1 ();
188 extern void func9_1 ();
189 extern void func10_1 ();
190 extern void func11_1 ();
191 extern void func12_1 ();
192 extern void func13_1 ();
193 extern void func14_1 ();
194 extern void func15_1 ();
195 extern void func16_1 ();
196 extern void func17_1 ();
197 extern void func18_1 ();
198 extern void func19_1 ();
199 extern void func20_1 ();
200 extern void func21_1 ();
201 extern void func22_1 ();
202 extern void func23_1 ();
203 extern void func24_1 ();
204 extern void func25_1 ();
205 extern void func26_1 ();
206 extern void func27_1 ();
207 extern void func28_1 ();
208 extern void func29_1 ();
209 extern void func30_1 ();
210 extern void func31_1 ();
211 extern void func32_1 ();
212 extern void func33_1 ();
213 extern void func34_1 ();
214 extern void func35_1 ();
215 extern void func36_1 ();
216 extern void func37_1 ();
217 extern void func38_1 ();
218 extern void func39_1 ();
219 extern void func40_1 ();
220
221 int mutateeFortran = 1;
222 int mutateeCplusplus = 0;
223
224 #ifdef F77
225 int mutateeF77 = 1;
226 #else
227 int mutateeF77 = 0;
228 #endif
229
230 int globalVariable29_1;
231 int globalVariable36_1;
232 int globalVariable36_2;
233 int globalVariable36_3;
234 int globalVariable36_4;
235 int globalVariable36_5;
236 int globalVariable36_6;
237 int globalVariable36_7;
238 int globalVariable36_8;
239 int globalVariable36_9;
240 int globalVariable36_10;
241
242 void runTests()
243 {
244     int i, j;
245
246     int *pp1, *pp2, *pp3, *pp4, *pp5, *pp6, *pp7, *pp8, *pp9, *pp10;
247
248     for (j=0; j <= MAX_TEST; j++) {
249         globals.passedTest_[j] = FALSE;
250     }
251
252     pp1 = (int*) malloc (sizeof (int));
253     pp2 = (int*) malloc (sizeof (int));
254     pp3 = (int*) malloc (sizeof (int));
255     pp4 = (int*) malloc (sizeof (int));
256     pp5 = (int*) malloc (sizeof (int));
257     pp6 = (int*) malloc (sizeof (int));
258     pp7 = (int*) malloc (sizeof (int));
259     pp8 = (int*) malloc (sizeof (int));
260     pp9 = (int*) malloc (sizeof (int));
261     pp10 = (int*) malloc (sizeof (int));
262
263     *pp1 = 1; *pp2 = 2; *pp3 = 3; *pp4 = 4; *pp5 = 5;
264     *pp6 = 6; *pp7 = 7; *pp8 = 8; *pp9 = 9; *pp10 = 10;
265
266     init_globals();
267
268     /* XXX Hack, AIX 4.2 xlf90/parseStab doesn't get scoping rules right for Fortran. This lets
269        the C global override the local scope in this case - jkh 5/2/3 */
270     if (globalVariable29_1) {
271             globals.globalVariable29_1 = globalVariable29_1;
272     }
273
274     if (runTest[1]) func1_1();
275     if (runTest[2]) func2_1();
276     if (runTest[3]) func3_1();
277     if (runTest[4]) func4_1();
278     if (runTest[5]) func5_1();
279     if (runTest[6]) func6_1();
280     if (runTest[7]) func7_1();
281     if (runTest[8]) func8_1(pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10);
282     if (runTest[9]) func9_1(pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10);
283     if (runTest[10]) func10_1();
284     if (runTest[11]) func11_1();
285     if (runTest[12]) func12_1();
286
287     *pp1 = 131; *pp2 = 132; *pp3 = 133; *pp4 = 134; *pp5 = 135;
288
289     if (runTest[13]) func13_1(pp1, pp2, pp3, pp4, pp5);
290     if (runTest[14]) func14_1();
291     if (runTest[15]) func15_1();
292     if (runTest[16]) func16_1();
293     if (runTest[17]) func17_1();
294     if (runTest[18]) func18_1();
295     if (runTest[19]) func19_1();
296     if (runTest[20]) func20_1();
297     if (runTest[21]) func21_1();
298     if (runTest[22]) func22_1();
299     if (runTest[23]) func23_1();
300     if (runTest[24]) func24_1();
301     if (runTest[25]) func25_1();
302     if (runTest[26]) func26_1();
303     if (runTest[27]) func27_1();
304     if (runTest[28]) func28_1();
305     if (runTest[29]) func29_1();
306     if (runTest[30]) func30_1();
307
308     if (runTest[31]) func31_1();
309     if (runTest[32]) func32_1();
310
311     if (runTest[33]) func33_1();
312     if (runTest[34]) func34_1();
313     if (runTest[35]) func35_1();
314     if (runTest[36]) func36_1();
315     if (runTest[37]) func37_1();
316     if (runTest[38]) func38_1();
317     if (runTest[39]) func39_1();
318     if (runTest[40]) func40_1();
319
320     /* Combine fortran passedTest with C passedTest */
321     for (i=1; i <= MAX_TEST; i++)
322         if (globals.passedTest_ [i-1]) passedTest [i] = TRUE;
323 }
324
325 void xlf90_41_hack()
326 {
327     globals.globalVariable36_1_ = globalVariable36_1;
328     globals.globalVariable36_2_ = globalVariable36_2;
329     globals.globalVariable36_3_ = globalVariable36_3;
330     globals.globalVariable36_4_ = globalVariable36_4;
331     globals.globalVariable36_5_ = globalVariable36_5;
332     globals.globalVariable36_6_ = globalVariable36_6;
333     globals.globalVariable36_7_ = globalVariable36_7;
334     globals.globalVariable36_8_ = globalVariable36_8;
335     globals.globalVariable36_9_ = globalVariable36_9;
336     globals.globalVariable36_10_ = globalVariable36_10;
337 }
338