Update copyright to LGPL on all files
[dyninst.git] / testsuite / src / dyninst / test1_9_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_9_func1(int p1, int p2, int p3, int p4, int p5, int p6, int p7,
38                   int p8, int p9, int p10);
39 int test1_9_call1(int p1, int p2, int p3, int p4, int p5);
40
41 /* Global variables accessed by the mutator.  These must have globally unique
42  * names.
43  */
44
45 /* Internally used function prototypes.  These should be declared with the
46  * keyword static so they don't interfere with other mutatees in the group.
47  */
48
49 /* Global variables used internally by the mutatee.  These should be declared
50  * with the keyword static so they don't interfere with other mutatees in the
51  * group.
52  */
53
54 static int test_failed = 0;
55
56 /* Function definitions follow */
57
58 /*
59  * Test #9 - reserve registers - funcCall
60  *      Verify the a snippet that calls a function does not clobber the
61  *      the parameter registers.
62  */
63
64 int test1_9_mutatee() {
65   return test1_9_func1(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
66 }
67
68 int test1_9_call1(int p1, int p2, int p3, int p4, int p5)
69 {
70     int x;
71     x = (((p1 + p2) + (p3 + p4) + (p5)));
72     if (x != (91 + 92 + 93 + 94 + 95 )) {
73       logerror("**Failed** test case #9 (preserve registers - funcCall)\n");
74       if (p1 != 91) {
75         logerror("    test1_9_call1 parameter 1 is %d not 91\n", p1);
76       }
77       if (p2 != 92) {
78         logerror("    test1_9_call1 parameter 2 is %d not 92\n", p2);
79       }
80       if (p3 != 93) {
81         logerror("    test1_9_call1 parameter 3 is %d not 93\n", p3);
82       }
83       if (p4 != 94) {
84         logerror("    test1_9_call1 parameter 4 is %d not 94\n", p4);
85       }
86       if (p5 != 95) {
87         logerror("    test1_9_call1 parameter 5 is %d not 95\n", p5);
88       }
89       /* exit(-1); /* FIXME Shouldn't quit the whole mutatee */
90       test_failed = 1; /* Set flag that test has failed */
91     }
92     dprintf("inside test1_9_call1\n");
93     return x;
94 }
95
96 int test1_9_func1(int p1, int p2, int p3, int p4, int p5, int p6, int p7,
97                   int p8, int p9, int p10) {
98   int retval;
99   dprintf("func9_1 (...) called\n");
100   if (test_failed) {
101     /* test1_9_call1 already printed error message */
102     retval = -1; /* Test failed */
103   } else if ((p1 == 1) && (p2 == 2) && (p3 == 3) && (p4 == 4) && (p5 == 5)
104              && (p6 == 6) && (p7 == 7) && (p8 == 8) && (p9 == 9)
105              && (p10 == 10))  {
106     logerror("Passed test #9 (preserve registers - funcCall)\n");
107     test_passes(testname);
108     retval = 0; /* Test passed */
109   } else {
110     logerror("**Failed** test #9 (preserve registers - funcCall )\n");
111     if (p1 != 1)  logerror("    parameter #1 is %d not 1\n", p1);
112     if (p2 != 2)  logerror("    parameter #2 is %d not 2\n", p2);
113     if (p3 != 3)  logerror("    parameter #3 is %d not 3\n", p3);
114     if (p4 != 4)  logerror("    parameter #4 is %d not 4\n", p4);
115     if (p5 != 5)  logerror("    parameter #5 is %d not 5\n", p5);
116     if (p6 != 6)  logerror("    parameter #6 is %d not 6\n", p6);
117     if (p7 != 7)  logerror("    parameter #7 is %d not 7\n", p7);
118     if (p8 != 8)  logerror("    parameter #8 is %d not 8\n", p8);
119     if (p9 != 9)  logerror("    parameter #9 is %d not 9\n", p9);
120     if (p10 != 10)  logerror("    parameter #10 is %d not 10\n", p10);
121     retval = -1; /* Test failed */
122   }
123   return retval;
124 }