(1) unlink /tmp/dyninstAsync files on the mutatee side as well as the
[dyninst.git] / dyninstAPI_RT / src / RTmutatedBinary.c
1 /*
2  * Copyright (c) 1996-2004 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  * This license is for research uses.  For such uses, there is no
12  * charge. We define "research use" to mean you may freely use it
13  * inside your organization for whatever purposes you see fit. But you
14  * may not re-distribute Paradyn or parts of Paradyn, in any form
15  * source or binary (including derivatives), electronic or otherwise,
16  * to any other organization or entity without our permission.
17  * 
18  * (for other uses, please contact us at paradyn@cs.wisc.edu)
19  * 
20  * All warranties, including without limitation, any warranty of
21  * merchantability or fitness for a particular purpose, are hereby
22  * excluded.
23  * 
24  * By your use of Paradyn, you understand and agree that we (or any
25  * other person or entity with proprietary rights in Paradyn) are
26  * under no obligation to provide either maintenance services,
27  * update services, notices of latent defects, or correction of
28  * defects for Paradyn.
29  * 
30  * Even if advised of the possibility of such damages, under no
31  * circumstances shall we (or any other person or entity with
32  * proprietary rights in the software licensed hereunder) be liable
33  * to you or any third party for direct, indirect, or consequential
34  * damages of any character regardless of type of action, including,
35  * without limitation, loss of profits, loss of use, loss of good
36  * will, or computer failure or malfunction.  You agree to indemnify
37  * us (and any other person or entity with proprietary rights in the
38  * software licensed hereunder) for any and all liability it may
39  * incur to third parties resulting from your use of Paradyn.
40  */
41
42 /* $Id: RTmutatedBinary.c,v 1.10 2008/02/20 08:31:08 jaw Exp $ */
43
44 /* this file contains the code to restore the necessary
45    data for a mutated binary 
46  */
47
48
49 #include <unistd.h>
50 #include <stdlib.h>
51
52 extern int isMutatedExec;
53 char *buffer;
54
55 /* checkMutatedFile() is defined in RTmutatedBinary_<fileformat>.c */
56
57 extern int checkMutatedFile();
58
59 /*
60  * This function sets up pre-initialization
61  * data structures for SaveTheWorld. Ensure
62  * it is called _before_ DYNINSTinit
63  */ 
64 #if defined (cap_save_the_world)
65 void RTmutatedBinary_init()
66 {
67
68 /* this buffer is allocated to clear
69    the first page on the heap. This is necessary
70    because loading the heap tramps uses mmap, which
71    is going to eat the heap if the heap begins on 
72    the same page the heap tramps end on (almost certain)
73 */
74     /* Call-once protection */
75     static int init = 0;
76     
77     if (!init) {
78         buffer = (char*) malloc(getpagesize());
79         isMutatedExec =checkMutatedFile();
80         /* Can't free this buffer, because we need the same memory footprint
81            for when we load in shared libraries */
82         /*        free(buffer); */
83         init++;
84     }
85     
86 }
87 #endif
88