Update copyright to LGPL on all files
[dyninst.git] / testsuite / src / dyninst / test1_13_mutatee.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 #include "mutatee_util.h"
32
33 /* Externally accessed function prototypes.  These must have globally unique
34  * names.  I suggest following the pattern <testname>_<function>
35  */
36
37 int test1_13_func1(int p1, int p2, int p3, int p4, int p5);
38 int test1_13_func2();
39 void test1_13_call1(int a1, int a2, int a3, int a4, int a5);
40 void test1_13_call2(int ret);
41
42 /* Global variables accessed by the mutator.  These must have globally unique
43  * names.
44  */
45
46 /* Internally used function prototypes.  These should be declared with the
47  * keyword static so they don't interfere with other mutatees in the group.
48  */
49
50 /* Global variables used internally by the mutatee.  These should be declared
51  * with the keyword static so they don't interfere with other mutatees in the
52  * group.
53  */
54
55 static int globalVariable13_1 = 0;
56
57 #define RET13_1 1300100
58
59 /* Function definitions follow */
60
61 /*
62  * Test #13 - paramExpr,retExpr,nullExpr
63  *      Test various expressions
64  */
65
66 int test1_13_mutatee() {
67   int retval;
68
69   retval = test1_13_func1(131, 132, 133, 134, 135);
70   
71   if (0 == retval) {
72     test_passes(testname);
73   }
74   return retval;
75 }
76
77 int test1_13_func2()
78 {
79     return(RET13_1);
80 }
81
82 int test1_13_func1(int p1, int p2, int p3, int p4, int p5)
83 {
84   int retval;
85     test1_13_func2();
86
87     if ((p1 == 131) && (p2 == 132) && (p3 == 133) &&
88         (p4 == 134) && (p5 == 135) && (globalVariable13_1 == 63)) {
89         logerror("Passed test #13 (paramExpr,retExpr,nullExpr)\n");
90         retval = 0; /* Test passed */
91     } else {
92         logerror("**Failed test #13 (paramExpr,retExpr,nullExpr)\n");
93         if (p1 != 131) logerror("  parameter 1 is %d, not 131\n", p1);
94         if (p2 != 132) logerror("  parameter 2 is %d, not 132\n", p2);
95         if (p3 != 133) logerror("  parameter 3 is %d, not 133\n", p3);
96         if (p4 != 134) logerror("  parameter 4 is %d, not 134\n", p4);
97         if (p5 != 135) logerror("  parameter 5 is %d, not 135\n", p5);
98         if (!(globalVariable13_1 & 1)) logerror("    passed param a1 wrong\n");
99         if (!(globalVariable13_1 & 2)) logerror("    passed param a2 wrong\n");
100         if (!(globalVariable13_1 & 4)) logerror("    passed param a3 wrong\n");
101         if (!(globalVariable13_1 & 8)) logerror("    passed param a4 wrong\n");
102         if (!(globalVariable13_1 & 16)) logerror("    passed param a5 wrong\n");
103         if (!(globalVariable13_1 & 32)) logerror("    return value wrong\n");
104         retval = -1; /* Test failed */
105     }
106     return retval;
107 }
108
109 void test1_13_call1(int a1, int a2, int a3, int a4, int a5)
110 {
111     if (a1 == 131) globalVariable13_1 |= 1;
112     if (a2 == 132) globalVariable13_1 |= 2;
113     if (a3 == 133) globalVariable13_1 |= 4;
114     if (a4 == 134) globalVariable13_1 |= 8;
115     if (a5 == 135) globalVariable13_1 |= 16;
116     dprintf("a1 = %d\n", a1);
117     dprintf("a2 = %d\n", a2);
118     dprintf("a3 = %d\n", a3);
119     dprintf("a4 = %d\n", a4);
120     dprintf("a5 = %d\n", a5);
121 }
122
123 void test1_13_call2(int ret)
124 {
125     if (ret == RET13_1) globalVariable13_1 |= 32;
126 }