]> gcc.gnu.org Git - gcc.git/blame - libmudflap/mf-runtime.h
re PR tree-optimization/46177 (ICE: in prop_phis, at tree-loop-distribution.c:327...
[gcc.git] / libmudflap / mf-runtime.h
CommitLineData
085e30b7
MS
1/* Implementation header for mudflap runtime library.
2 Mudflap: narrow-pointer bounds-checking by tree rewriting.
748086b7 3 Copyright (C) 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
085e30b7
MS
4 Contributed by Frank Ch. Eigler <fche@redhat.com>
5 and Graydon Hoare <graydon@redhat.com>
6
7This file is part of GCC.
8
9GCC is free software; you can redistribute it and/or modify it under
10the terms of the GNU General Public License as published by the Free
748086b7 11Software Foundation; either version 3, or (at your option) any later
085e30b7
MS
12version.
13
085e30b7
MS
14GCC is distributed in the hope that it will be useful, but WITHOUT ANY
15WARRANTY; without even the implied warranty of MERCHANTABILITY or
16FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17for more details.
18
748086b7
JJ
19Under Section 7 of GPL version 3, you are granted additional
20permissions described in the GCC Runtime Library Exception, version
213.1, as published by the Free Software Foundation.
22
23You should have received a copy of the GNU General Public License and
24a copy of the GCC Runtime Library Exception along with this program;
25see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
26<http://www.gnu.org/licenses/>. */
085e30b7 27
6de9cd9a
DN
28/* Public libmudflap declarations -*- C -*- */
29
30#ifndef MF_RUNTIME_H
31#define MF_RUNTIME_H
32
1330529e
GM
33typedef void *__mf_ptr_t;
34typedef unsigned int __mf_uintptr_t __attribute__ ((__mode__ (__pointer__)));
35typedef __SIZE_TYPE__ __mf_size_t;
6de9cd9a 36
c31b8e1b
ZW
37/* Global declarations used by instrumentation. When _MUDFLAP is
38 defined, these have been auto-declared by the compiler and we
39 should not declare them again (ideally we *would* declare them
40 again, to verify that the compiler's declarations match the
41 library's, but the C++ front end has no mechanism for allowing
42 the re-definition of a structure type). */
43#ifndef _MUDFLAP
1330529e 44struct __mf_cache { __mf_uintptr_t low; __mf_uintptr_t high; };
6de9cd9a 45extern struct __mf_cache __mf_lookup_cache [];
1330529e 46extern __mf_uintptr_t __mf_lc_mask;
6de9cd9a 47extern unsigned char __mf_lc_shift;
c31b8e1b 48#endif
6de9cd9a
DN
49
50/* Multithreading support. */
51#ifdef _MUDFLAPTH
52/* extern pthread_mutex_t __mf_biglock; */
89040431 53#ifndef _REENTRANT
6de9cd9a 54#define _REENTRANT
89040431
FCE
55#endif
56#ifndef _THREAD_SAFE
6de9cd9a
DN
57#define _THREAD_SAFE
58#endif
89040431 59#endif
6de9cd9a
DN
60
61/* Codes to describe the type of access to check: __mf_check arg 3 */
62
63#define __MF_CHECK_READ 0
64#define __MF_CHECK_WRITE 1
65
66
67/* Codes to describe a region of memory being registered: __mf_*register arg 3 */
68
69#define __MF_TYPE_NOACCESS 0
70#define __MF_TYPE_HEAP 1
71#define __MF_TYPE_HEAP_I 2
72#define __MF_TYPE_STACK 3
73#define __MF_TYPE_STATIC 4
74#define __MF_TYPE_GUESS 5
75
76
77/* The public mudflap API */
78
79#ifdef __cplusplus
80extern "C" {
81#endif
82
1330529e 83extern void __mf_check (void *ptr, __mf_size_t sz, int type, const char *location)
6de9cd9a 84 __attribute((nothrow));
fb925a51 85extern void __mf_register (void *ptr, __mf_size_t sz, int type, const char *name)
6de9cd9a 86 __attribute((nothrow));
1330529e 87extern void __mf_unregister (void *ptr, __mf_size_t sz, int type)
cfbd22d7 88 __attribute((nothrow));
1330529e
GM
89extern unsigned __mf_watch (void *ptr, __mf_size_t sz);
90extern unsigned __mf_unwatch (void *ptr, __mf_size_t sz);
6de9cd9a
DN
91extern void __mf_report ();
92extern int __mf_set_options (const char *opts);
93
94
95/* Redirect some standard library functions to libmudflap. These are
96 done by simple #define rather than linker wrapping, since only
97 instrumented modules are meant to be affected. */
98
fb925a51
MS
99#ifdef _MUDFLAP
100#pragma redefine_extname memcpy __mfwrap_memcpy
6de9cd9a 101#pragma redefine_extname memmove __mfwrap_memmove
fb925a51
MS
102#pragma redefine_extname memset __mfwrap_memset
103#pragma redefine_extname memcmp __mfwrap_memcmp
104#pragma redefine_extname memchr __mfwrap_memchr
6de9cd9a 105#pragma redefine_extname memrchr __mfwrap_memrchr
fb925a51
MS
106#pragma redefine_extname strcpy __mfwrap_strcpy
107#pragma redefine_extname strncpy __mfwrap_strncpy
108#pragma redefine_extname strcat __mfwrap_strcat
6de9cd9a 109#pragma redefine_extname strncat __mfwrap_strncat
fb925a51
MS
110#pragma redefine_extname strcmp __mfwrap_strcmp
111#pragma redefine_extname strcasecmp __mfwrap_strcasecmp
112#pragma redefine_extname strncmp __mfwrap_strncmp
6de9cd9a 113#pragma redefine_extname strncasecmp __mfwrap_strncasecmp
fb925a51
MS
114#pragma redefine_extname strdup __mfwrap_strdup
115#pragma redefine_extname strndup __mfwrap_strndup
116#pragma redefine_extname strchr __mfwrap_strchr
6de9cd9a 117#pragma redefine_extname strrchr __mfwrap_strrchr
fb925a51
MS
118#pragma redefine_extname strstr __mfwrap_strstr
119#pragma redefine_extname memmem __mfwrap_memmem
120#pragma redefine_extname strlen __mfwrap_strlen
6de9cd9a 121#pragma redefine_extname strnlen __mfwrap_strnlen
fb925a51
MS
122#pragma redefine_extname bzero __mfwrap_bzero
123#pragma redefine_extname bcopy __mfwrap_bcopy
124#pragma redefine_extname bcmp __mfwrap_bcmp
125#pragma redefine_extname index __mfwrap_index
6de9cd9a
DN
126#pragma redefine_extname rindex __mfwrap_rindex
127#pragma redefine_extname asctime __mfwrap_asctime
128#pragma redefine_extname ctime __mfwrap_ctime
129#pragma redefine_extname gmtime __mfwrap_gmtime
130#pragma redefine_extname localtime __mfwrap_localtime
131#pragma redefine_extname time __mfwrap_time
132#pragma redefine_extname strerror __mfwrap_strerror
133#pragma redefine_extname fopen __mfwrap_fopen
ddfabf89
FCE
134#pragma redefine_extname fdopen __mfwrap_fdopen
135#pragma redefine_extname freopen __mfwrap_freopen
6de9cd9a
DN
136#pragma redefine_extname fclose __mfwrap_fclose
137#pragma redefine_extname fread __mfwrap_fread
138#pragma redefine_extname fwrite __mfwrap_fwrite
139#pragma redefine_extname fgetc __mfwrap_fgetc
140#pragma redefine_extname fgets __mfwrap_fgets
141#pragma redefine_extname getc __mfwrap_getc
142#pragma redefine_extname gets __mfwrap_gets
143#pragma redefine_extname ungetc __mfwrap_ungetc
144#pragma redefine_extname fputc __mfwrap_fputc
145#pragma redefine_extname fputs __mfwrap_fputs
146#pragma redefine_extname putc __mfwrap_putc
147#pragma redefine_extname puts __mfwrap_puts
148#pragma redefine_extname clearerr __mfwrap_clearerr
149#pragma redefine_extname feof __mfwrap_feof
150#pragma redefine_extname ferror __mfwrap_ferror
151#pragma redefine_extname fileno __mfwrap_fileno
152#pragma redefine_extname printf __mfwrap_printf
153#pragma redefine_extname fprintf __mfwrap_fprintf
154#pragma redefine_extname sprintf __mfwrap_sprintf
155#pragma redefine_extname snprintf __mfwrap_snprintf
156#pragma redefine_extname vprintf __mfwrap_vprintf
157#pragma redefine_extname vfprintf __mfwrap_vfprintf
158#pragma redefine_extname vsprintf __mfwrap_vsprintf
159#pragma redefine_extname vsnprintf __mfwrap_vsnprintf
160#pragma redefine_extname access __mfwrap_access
161#pragma redefine_extname remove __mfwrap_remove
162#pragma redefine_extname fflush __mfwrap_fflush
163#pragma redefine_extname fseek __mfwrap_fseek
164#pragma redefine_extname ftell __mfwrap_ftell
165#pragma redefine_extname rewind __mfwrap_rewind
166#pragma redefine_extname fgetpos __mfwrap_fgetpos
167#pragma redefine_extname fsetpos __mfwrap_fsetpos
168#pragma redefine_extname stat __mfwrap_stat
169#pragma redefine_extname fstat __mfwrap_fstat
170#pragma redefine_extname lstat __mfwrap_lstat
171#pragma redefine_extname mkfifo __mfwrap_mkfifo
172#pragma redefine_extname setvbuf __mfwrap_setvbuf
173#pragma redefine_extname setbuf __mfwrap_setbuf
ddfabf89
FCE
174#pragma redefine_extname setbuffer __mfwrap_setbuffer
175#pragma redefine_extname setlinebuf __mfwrap_setlinebuf
6de9cd9a
DN
176#pragma redefine_extname opendir __mfwrap_opendir
177#pragma redefine_extname closedir __mfwrap_closedir
178#pragma redefine_extname readdir __mfwrap_readdir
179#pragma redefine_extname recv __mfwrap_recv
180#pragma redefine_extname recvfrom __mfwrap_recvfrom
181#pragma redefine_extname recvmsg __mfwrap_recvmsg
182#pragma redefine_extname send __mfwrap_send
183#pragma redefine_extname sendto __mfwrap_sendto
184#pragma redefine_extname sendmsg __mfwrap_sendmsg
185#pragma redefine_extname setsockopt __mfwrap_setsockopt
186#pragma redefine_extname getsockopt __mfwrap_getsockopt
187#pragma redefine_extname accept __mfwrap_accept
188#pragma redefine_extname bind __mfwrap_bind
189#pragma redefine_extname connect __mfwrap_connect
190#pragma redefine_extname gethostname __mfwrap_gethostname
191#pragma redefine_extname sethostname __mfwrap_sethostname
192#pragma redefine_extname gethostbyname __mfwrap_gethostbyname
193#pragma redefine_extname wait __mfwrap_wait
194#pragma redefine_extname waitpid __mfwrap_waitpid
195#pragma redefine_extname popen __mfwrap_popen
196#pragma redefine_extname pclose __mfwrap_pclose
197#pragma redefine_extname execve __mfwrap_execve
198#pragma redefine_extname execv __mfwrap_execv
199#pragma redefine_extname execvp __mfwrap_execvp
200#pragma redefine_extname system __mfwrap_system
201#pragma redefine_extname dlopen __mfwrap_dlopen
202#pragma redefine_extname dlerror __mfwrap_dlerror
203#pragma redefine_extname dlsym __mfwrap_dlsym
204#pragma redefine_extname dlclose __mfwrap_dlclose
205#pragma redefine_extname fopen64 __mfwrap_fopen64
ddfabf89 206#pragma redefine_extname freopen64 __mfwrap_freopen64
6de9cd9a
DN
207#pragma redefine_extname stat64 __mfwrap_stat64
208#pragma redefine_extname fseeko64 __mfwrap_fseeko64
209#pragma redefine_extname ftello64 __mfwrap_ftello64
210#pragma redefine_extname semop __mfwrap_semop
211#pragma redefine_extname semctl __mfwrap_semctl
212#pragma redefine_extname shmctl __mfwrap_shmctl
213#pragma redefine_extname shmat __mfwrap_shmat
214#pragma redefine_extname shmdt __mfwrap_shmdt
dc88d66f
FCE
215#pragma redefine_extname __ctype_b_loc __mfwrap___ctype_b_loc
216#pragma redefine_extname __ctype_toupper_loc __mfwrap___ctype_toupper_loc
217#pragma redefine_extname __ctype_tolower_loc __mfwrap___ctype_tolower_loc
66a5d3b1
FCE
218#pragma redefine_extname getlogin __mfwrap_getlogin
219#pragma redefine_extname cuserid __mfwrap_cuserid
220#pragma redefine_extname getpwnam __mfwrap_getpwnam
221#pragma redefine_extname getpwuid __mfwrap_getpwuid
222#pragma redefine_extname getgrnam __mfwrap_getgrnam
223#pragma redefine_extname getgrgid __mfwrap_getgrgid
224#pragma redefine_extname getservent __mfwrap_getservent
225#pragma redefine_extname getservbyname __mfwrap_getservbyname
226#pragma redefine_extname getservbyport __mfwrap_getservbyport
227#pragma redefine_extname gai_strerror __mfwrap_gai_strerror
07c2f075
FCE
228#pragma redefine_extname getmntent __mfwrap_getmntent
229#pragma redefine_extname inet_ntoa __mfwrap_inet_ntoa
230#pragma redefine_extname getprotoent __mfwrap_getprotoent
231#pragma redefine_extname getprotobyname __mfwrap_getprotobyname
232#pragma redefine_extname getprotobynumber __mfwrap_getprotobynumber
6de9cd9a
DN
233
234/* Disable glibc macros. */
235#define __NO_STRING_INLINES
236
237#endif /* _MUDFLAP */
238
239
240#ifdef __cplusplus
241}
242#endif
243
244#endif /* MF_RUNTIME_H */
This page took 0.55625 seconds and 5 git commands to generate.