Rename newtestsuite to testsuite
[dyninst.git] / testsuite / src / dyninst / test1_30_mutatee.c
1 #include "mutatee_util.h"
2
3 /* group_mutatee_boilerplate.c is prepended to this file by the make system */
4
5 /* Externally accessed function prototypes.  These must have globally unique
6  * names.  I suggest following the pattern <testname>_<function>
7  */
8
9 void test1_30_call1();
10
11 /* Global variables accessed by the mutator.  These must have globally unique
12  * names.
13  */
14
15 unsigned long test1_30_globalVariable3 = 0;
16 unsigned long test1_30_globalVariable4 = 0;
17 unsigned long test1_30_globalVariable5 = 0;
18 unsigned long test1_30_globalVariable6 = 0;
19 /* See also test1_30_globalVariable7, defined below */
20 unsigned long test1_30_globalVariable8 = 0;
21 unsigned long test1_30_globalVariable9 = 0;
22
23 /* Internally used function prototypes.  These should be declared with the
24  * keyword static so they don't interfere with other mutatees in the group.
25  */
26
27 static void func30_2();
28
29 /* Global variables used internally by the mutatee.  These should be declared
30  * with the keyword static so they don't interfere with other mutatees in the
31  * group.
32  */
33
34 /* variables to keep the base addr and last addr of test1_30_call1 */
35 static unsigned long globalVariable30_1 = 0;
36 static unsigned long globalVariable30_2 = 0;
37
38 /* Function definitions follow */
39
40 #if defined(sparc_sun_solaris2_4_test) \
41  || defined(i386_unknown_solaris2_5_test) \
42  || defined(i386_unknown_linux2_0_test) \
43  || defined(x86_64_unknown_linux2_4_test) /* Blind duplication - Ray */ \
44  || defined(i386_unknown_nt4_0_test) \
45  || defined(rs6000_ibm_aix4_1_test) \
46  || defined(alpha_dec_osf4_0_test) \
47  || defined(ia64_unknown_linux2_4_test) \
48  || defined(os_linux_test) /* Use OS #define instead of platform - Greg */
49
50 /* this function has to be only 1 line for test30 to pass */
51 /* these two lines have to be together otherwise test30 will fail */
52 unsigned long test1_30_globalVariable7 = __LINE__;
53 void test1_30_call1(){ globalVariable30_1 = __LINE__; globalVariable30_2 = (unsigned long)test1_30_call1;}
54
55 #endif
56
57 int test1_30_mutatee() {
58   /* kludge = 1; /* Here so that the following function call isn't the first
59                     instruction */
60   int passed, retval;
61
62 #if defined(sparc_sun_solaris2_4_test) \
63  || defined(i386_unknown_solaris2_5_test) \
64  || defined(i386_unknown_linux2_0_test) \
65  || defined(x86_64_unknown_linux2_4_test) /* Blind duplication - Ray */ \
66  || defined(ia64_unknown_linux2_4_test) \
67  || defined(i386_unknown_nt4_0_test) \
68  || defined(rs6000_ibm_aix4_1_test) \
69  || defined(alpha_dec_osf4_0_test)
70     
71     func30_2();
72
73     passed = !test1_30_globalVariable3 ||
74 #if defined(rs6000_ibm_aix4_1_test)
75              ((test1_30_globalVariable8 <= test1_30_globalVariable3) &&
76 #else
77              ((globalVariable30_2 <= test1_30_globalVariable3) &&
78 #endif
79               (test1_30_globalVariable3 <= test1_30_globalVariable9));
80
81     if (!passed){
82         logerror("**Failed** test #30 (line information) in %s[%d]\n", __FILE__, __LINE__ );
83         return -1; /* Test failed */
84     }
85
86     passed = !test1_30_globalVariable4 ||
87 #if defined(rs6000_ibm_aix4_1_test)
88              ((test1_30_globalVariable8 <= test1_30_globalVariable4) &&
89 #else
90              ((globalVariable30_2 <= test1_30_globalVariable4) &&
91 #endif
92               (test1_30_globalVariable4 <= test1_30_globalVariable9));
93
94     if (!passed) {
95         logerror("**Failed** test #30 (line information) in %s[%d]\n", __FILE__, __LINE__ );
96         return -1; /* Test failed */
97     }
98
99     passed = !test1_30_globalVariable5 ||
100 #if defined(rs6000_ibm_aix4_1_test)
101               ((test1_30_globalVariable8 <= test1_30_globalVariable5) &&
102 #else
103               ((globalVariable30_2 <= test1_30_globalVariable5) &&
104 #endif
105                (test1_30_globalVariable5 <= test1_30_globalVariable9));
106
107     if (!passed) {
108       logerror("**Failed** test #30 (line information) in %s[%d]\n", __FILE__, __LINE__ );
109       logerror("gv30_5 = %lu, gv30_2 = %lu, gv30_9 = %lu\n", test1_30_globalVariable5,
110                globalVariable30_2, test1_30_globalVariable9);
111       return -1; /* Test failed */
112     }
113
114     passed = !test1_30_globalVariable6 ||
115               (globalVariable30_1 == test1_30_globalVariable6);
116     if (!passed) {
117         logerror("**Failed** test #30 (line information) in %s[%d]\n", __FILE__, __LINE__ );
118         logerror("gv30_6 = %lu, gv30_1 = %lu, should be equal and nonzero!\n", test1_30_globalVariable6,
119                globalVariable30_1);
120         return -1; /* Test failed */
121     }
122                
123     logerror("Passed test #30 (line information)\n");
124     retval = 0; /* Test passed */
125     test_passes(testname);
126 #else
127     logerror("Skipped test #30 (line information)\n");
128     logerror("\t- not implemented on this platform\n");
129     test_passes(testname);
130     retval = 0; /* Test "passed" */
131 #endif
132     return retval;
133 }
134
135 void func30_2() {
136     DUMMY_FN_BODY;
137 }