Remove old testsuite
[dyninst.git] / newtestsuite / src / dyninst / test2_6_mutatee.c
1 #include <signal.h>
2 #include <dlfcn.h>
3
4 #include "mutatee_util.h"
5 #include "test2.h"
6
7 /* Externally accessed function prototypes.  These must have globally unique
8  * names.  I suggest following the pattern <testname>_<function>
9  */
10
11 /* Global variables accessed by the mutator.  These must have globally unique
12  * names.
13  */
14
15 /* Internally used function prototypes.  These should be declared with the
16  * keyword static so they don't interfere with other mutatees in the group.
17  */
18
19 void func1();
20
21 /* Global variables used internally by the mutatee.  These should be declared
22  * with the keyword static so they don't interfere with other mutatees in the
23  * group.
24  */
25
26 /* Function definitions follow */
27
28 /* TODO stop_process() should probably be moved into mutatee_util */
29 /*
30  * Stop the process (in order to wait for the mutator to finish what it's
31  * doing and restart us).
32  */
33 void stop_process()
34 {
35 #ifdef os_windows_test
36     DebugBreak();
37 #else
38     kill(getpid(), SIGSTOP);
39 #endif
40 }
41
42 int test2_6_mutatee() {
43   func1();
44   stop_process();
45   test_passes("test2_6");
46   return 0; /* No error */
47 }
48
49 void func1() {
50 /* #if defined(sparc_sun_solaris2_4_test) \ */
51 /*  || defined(i386_unknown_solaris2_5_test) \ */
52 /*  || defined(i386_unknown_linux2_0_test) \ */
53 /*  || defined(x86_64_unknown_linux2_4_test) /\* Blind duplication - Ray *\/ \ */
54 /*  || defined(mips_sgi_irix6_4_test) \ */
55 /*  || defined(alpha_dec_osf4_0_test) \ */
56 /*  || defined(rs6000_ibm_aix4_1_test) \ */
57 /*  || defined(ia64_unknown_linux2_4_test) */
58
59     void *ref;
60     /* now use the dlopen interface to force an object to load. */
61 #if defined(alpha_dec_osf4_0_test)
62     ref = dlopen(TEST_DYNAMIC_LIB, RTLD_NOW);
63 #else
64     ref = dlopen(TEST_DYNAMIC_LIB, RTLD_NOW | RTLD_GLOBAL);
65 #endif
66
67     if (!ref) {
68         logerror("%s[%d]: %s\n", __FILE__, __LINE__, dlerror() );
69     }
70 /* #endif */
71 }