OSDN Git Service

b008883c43f0c4eadc28e78f356401a77ee2a75e
[pf3gnuchains/gcc-fork.git] / libmudflap / mf-runtime.h
1 /* Public libmudflap declarations -*- C -*- */
2
3 #ifndef MF_RUNTIME_H
4 #define MF_RUNTIME_H
5
6 typedef void *__mf_ptr_t;
7 typedef unsigned int __mf_uintptr_t __attribute__ ((__mode__ (__pointer__)));
8 typedef __SIZE_TYPE__ __mf_size_t;
9
10 /* Global declarations used by instrumentation.  When _MUDFLAP is
11    defined, these have been auto-declared by the compiler and we
12    should not declare them again (ideally we *would* declare them
13    again, to verify that the compiler's declarations match the
14    library's, but the C++ front end has no mechanism for allowing
15    the re-definition of a structure type).  */
16 #ifndef _MUDFLAP
17 struct __mf_cache { __mf_uintptr_t low; __mf_uintptr_t high; };
18 extern struct __mf_cache __mf_lookup_cache [];
19 extern __mf_uintptr_t __mf_lc_mask;
20 extern unsigned char __mf_lc_shift;
21 #endif
22
23 /* Multithreading support.  */
24 #ifdef _MUDFLAPTH
25 /* extern pthread_mutex_t __mf_biglock; */
26 #define _REENTRANT
27 #define _THREAD_SAFE
28 #endif
29
30 /* Codes to describe the type of access to check: __mf_check arg 3 */
31
32 #define __MF_CHECK_READ 0
33 #define __MF_CHECK_WRITE 1
34
35
36 /* Codes to describe a region of memory being registered: __mf_*register arg 3 */
37
38 #define __MF_TYPE_NOACCESS 0
39 #define __MF_TYPE_HEAP 1
40 #define __MF_TYPE_HEAP_I 2
41 #define __MF_TYPE_STACK 3
42 #define __MF_TYPE_STATIC 4
43 #define __MF_TYPE_GUESS 5
44
45
46 /* The public mudflap API */
47
48 #ifdef __cplusplus
49 extern "C" {
50 #endif
51
52 extern void __mf_check (void *ptr, __mf_size_t sz, int type, const char *location)
53        __attribute((nothrow));
54 extern void __mf_register (void *ptr, __mf_size_t sz, int type, const char *name) 
55        __attribute((nothrow));
56 extern void __mf_unregister (void *ptr, __mf_size_t sz, int type)
57        __attribute((nothrow));
58 extern unsigned __mf_watch (void *ptr, __mf_size_t sz);
59 extern unsigned __mf_unwatch (void *ptr, __mf_size_t sz);
60 extern void __mf_report ();
61 extern int __mf_set_options (const char *opts);
62
63
64 /* Redirect some standard library functions to libmudflap.  These are
65    done by simple #define rather than linker wrapping, since only
66    instrumented modules are meant to be affected.  */
67
68 #ifdef _MUDFLAP  
69 #pragma redefine_extname memcpy __mfwrap_memcpy 
70 #pragma redefine_extname memmove __mfwrap_memmove
71 #pragma redefine_extname memset __mfwrap_memset 
72 #pragma redefine_extname memcmp __mfwrap_memcmp 
73 #pragma redefine_extname memchr __mfwrap_memchr 
74 #pragma redefine_extname memrchr __mfwrap_memrchr
75 #pragma redefine_extname strcpy __mfwrap_strcpy 
76 #pragma redefine_extname strncpy __mfwrap_strncpy 
77 #pragma redefine_extname strcat __mfwrap_strcat 
78 #pragma redefine_extname strncat __mfwrap_strncat
79 #pragma redefine_extname strcmp __mfwrap_strcmp 
80 #pragma redefine_extname strcasecmp __mfwrap_strcasecmp 
81 #pragma redefine_extname strncmp __mfwrap_strncmp 
82 #pragma redefine_extname strncasecmp __mfwrap_strncasecmp
83 #pragma redefine_extname strdup __mfwrap_strdup 
84 #pragma redefine_extname strndup __mfwrap_strndup 
85 #pragma redefine_extname strchr __mfwrap_strchr 
86 #pragma redefine_extname strrchr __mfwrap_strrchr
87 #pragma redefine_extname strstr __mfwrap_strstr 
88 #pragma redefine_extname memmem __mfwrap_memmem 
89 #pragma redefine_extname strlen __mfwrap_strlen 
90 #pragma redefine_extname strnlen __mfwrap_strnlen
91 #pragma redefine_extname bzero __mfwrap_bzero 
92 #pragma redefine_extname bcopy __mfwrap_bcopy 
93 #pragma redefine_extname bcmp __mfwrap_bcmp 
94 #pragma redefine_extname index __mfwrap_index 
95 #pragma redefine_extname rindex __mfwrap_rindex
96 #pragma redefine_extname asctime __mfwrap_asctime
97 #pragma redefine_extname ctime __mfwrap_ctime
98 #pragma redefine_extname gmtime __mfwrap_gmtime
99 #pragma redefine_extname localtime __mfwrap_localtime
100 #pragma redefine_extname time __mfwrap_time
101 #pragma redefine_extname strerror __mfwrap_strerror
102 #pragma redefine_extname fopen __mfwrap_fopen
103 #pragma redefine_extname fdopen __mfwrap_fdopen
104 #pragma redefine_extname freopen __mfwrap_freopen
105 #pragma redefine_extname fclose __mfwrap_fclose
106 #pragma redefine_extname fread __mfwrap_fread
107 #pragma redefine_extname fwrite __mfwrap_fwrite
108 #pragma redefine_extname fgetc __mfwrap_fgetc
109 #pragma redefine_extname fgets __mfwrap_fgets
110 #pragma redefine_extname getc __mfwrap_getc
111 #pragma redefine_extname gets __mfwrap_gets
112 #pragma redefine_extname ungetc __mfwrap_ungetc
113 #pragma redefine_extname fputc __mfwrap_fputc
114 #pragma redefine_extname fputs __mfwrap_fputs
115 #pragma redefine_extname putc __mfwrap_putc
116 #pragma redefine_extname puts __mfwrap_puts
117 #pragma redefine_extname clearerr __mfwrap_clearerr
118 #pragma redefine_extname feof __mfwrap_feof
119 #pragma redefine_extname ferror __mfwrap_ferror
120 #pragma redefine_extname fileno __mfwrap_fileno
121 #pragma redefine_extname printf __mfwrap_printf
122 #pragma redefine_extname fprintf __mfwrap_fprintf
123 #pragma redefine_extname sprintf __mfwrap_sprintf
124 #pragma redefine_extname snprintf __mfwrap_snprintf
125 #pragma redefine_extname vprintf __mfwrap_vprintf
126 #pragma redefine_extname vfprintf __mfwrap_vfprintf
127 #pragma redefine_extname vsprintf __mfwrap_vsprintf
128 #pragma redefine_extname vsnprintf __mfwrap_vsnprintf
129 #pragma redefine_extname access __mfwrap_access
130 #pragma redefine_extname remove __mfwrap_remove
131 #pragma redefine_extname fflush __mfwrap_fflush
132 #pragma redefine_extname fseek __mfwrap_fseek
133 #pragma redefine_extname ftell __mfwrap_ftell
134 #pragma redefine_extname rewind __mfwrap_rewind
135 #pragma redefine_extname fgetpos __mfwrap_fgetpos
136 #pragma redefine_extname fsetpos __mfwrap_fsetpos
137 #pragma redefine_extname stat __mfwrap_stat
138 #pragma redefine_extname fstat __mfwrap_fstat
139 #pragma redefine_extname lstat __mfwrap_lstat
140 #pragma redefine_extname mkfifo __mfwrap_mkfifo
141 #pragma redefine_extname setvbuf __mfwrap_setvbuf
142 #pragma redefine_extname setbuf __mfwrap_setbuf
143 #pragma redefine_extname setbuffer __mfwrap_setbuffer
144 #pragma redefine_extname setlinebuf __mfwrap_setlinebuf
145 #pragma redefine_extname opendir __mfwrap_opendir
146 #pragma redefine_extname closedir __mfwrap_closedir
147 #pragma redefine_extname readdir __mfwrap_readdir
148 #pragma redefine_extname recv __mfwrap_recv
149 #pragma redefine_extname recvfrom __mfwrap_recvfrom
150 #pragma redefine_extname recvmsg __mfwrap_recvmsg
151 #pragma redefine_extname send __mfwrap_send
152 #pragma redefine_extname sendto __mfwrap_sendto
153 #pragma redefine_extname sendmsg __mfwrap_sendmsg
154 #pragma redefine_extname setsockopt __mfwrap_setsockopt
155 #pragma redefine_extname getsockopt __mfwrap_getsockopt
156 #pragma redefine_extname accept __mfwrap_accept
157 #pragma redefine_extname bind __mfwrap_bind
158 #pragma redefine_extname connect __mfwrap_connect
159 #pragma redefine_extname gethostname __mfwrap_gethostname
160 #pragma redefine_extname sethostname __mfwrap_sethostname
161 #pragma redefine_extname gethostbyname __mfwrap_gethostbyname
162 #pragma redefine_extname wait __mfwrap_wait
163 #pragma redefine_extname waitpid __mfwrap_waitpid
164 #pragma redefine_extname popen __mfwrap_popen
165 #pragma redefine_extname pclose __mfwrap_pclose
166 #pragma redefine_extname execve __mfwrap_execve
167 #pragma redefine_extname execv __mfwrap_execv
168 #pragma redefine_extname execvp __mfwrap_execvp
169 #pragma redefine_extname system __mfwrap_system
170 #pragma redefine_extname dlopen __mfwrap_dlopen
171 #pragma redefine_extname dlerror __mfwrap_dlerror
172 #pragma redefine_extname dlsym __mfwrap_dlsym
173 #pragma redefine_extname dlclose __mfwrap_dlclose
174 #pragma redefine_extname fopen64 __mfwrap_fopen64
175 #pragma redefine_extname freopen64 __mfwrap_freopen64
176 #pragma redefine_extname stat64 __mfwrap_stat64
177 #pragma redefine_extname fseeko64 __mfwrap_fseeko64
178 #pragma redefine_extname ftello64 __mfwrap_ftello64
179 #pragma redefine_extname semop __mfwrap_semop
180 #pragma redefine_extname semctl __mfwrap_semctl
181 #pragma redefine_extname shmctl __mfwrap_shmctl
182 #pragma redefine_extname shmat __mfwrap_shmat
183 #pragma redefine_extname shmdt __mfwrap_shmdt
184 #pragma redefine_extname __ctype_b_loc __mfwrap___ctype_b_loc
185 #pragma redefine_extname __ctype_toupper_loc __mfwrap___ctype_toupper_loc
186 #pragma redefine_extname __ctype_tolower_loc __mfwrap___ctype_tolower_loc
187 #pragma redefine_extname getlogin __mfwrap_getlogin
188 #pragma redefine_extname cuserid __mfwrap_cuserid
189 #pragma redefine_extname getpwnam __mfwrap_getpwnam
190 #pragma redefine_extname getpwuid __mfwrap_getpwuid
191 #pragma redefine_extname getgrnam __mfwrap_getgrnam
192 #pragma redefine_extname getgrgid __mfwrap_getgrgid
193 #pragma redefine_extname getservent __mfwrap_getservent
194 #pragma redefine_extname getservbyname __mfwrap_getservbyname
195 #pragma redefine_extname getservbyport __mfwrap_getservbyport
196 #pragma redefine_extname gai_strerror __mfwrap_gai_strerror
197 #pragma redefine_extname getmntent __mfwrap_getmntent
198 #pragma redefine_extname inet_ntoa __mfwrap_inet_ntoa
199 #pragma redefine_extname getprotoent __mfwrap_getprotoent
200 #pragma redefine_extname getprotobyname __mfwrap_getprotobyname
201 #pragma redefine_extname getprotobynumber __mfwrap_getprotobynumber
202
203 /* Disable glibc macros.  */
204 #define __NO_STRING_INLINES
205
206 #endif /* _MUDFLAP */
207
208
209 #ifdef __cplusplus
210 }
211 #endif
212
213 #endif /* MF_RUNTIME_H */