summaryrefslogtreecommitdiff
path: root/packages/dmalloc/files/conf.h
blob: d2d9c4af0cabf886109c4e058411803754487eee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
/* conf.h.  Generated by configure.  */
/*
 * Automatic configuration flags
 *
 * Copyright 2000 by Gray Watson
 *
 * This file is part of the dmalloc package.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose and without fee is hereby granted, provided
 * that the above copyright notice and this permission notice appear
 * in all copies, and that the name of Gray Watson not be used in
 * advertising or publicity pertaining to distribution of the document
 * or software without specific, written prior permission.
 *
 * Gray Watson makes no representations about the suitability of the
 * software described herein for any purpose.  It is provided "as is"
 * without express or implied warranty.
 *
 * The author may be contacted via http://dmalloc.com/
 *
 * $Id: conf.h.in,v 1.99 2005/12/21 13:40:27 gray Exp $
 */

#ifndef __CONF_H__
#define __CONF_H__

/* please see settings.h for manual configuration options */

/*
 * NOTE: The following settings should not need to be tuned by hand.
 */

/*
 * Set to 1 if the mprotect function was found and the PROT_NONE,
 * PROT_READ, and PROT_WRITE defines were found in sys/mman.h.  This
 * is so that we can restrict access to certain blocks of memory.
 */
#define PROTECT_ALLOWED 1

/*
 * (char *)sbrk(const int incr) is the main heap-memory allocation
 * routine that most systems employ.  This extends the program's data
 * space by INCR number of bytes.
 *
 * NOTE: If configure generates a 0 for this and HAVE_MMAP on your
 * system, you should see the INTERNAL_MEMORY_SPACE setting in the
 * settings.h file which is created from the settings.dist file.
 */
#define HAVE_SBRK 1

/*
 * (void *)mmap(...) is another heap-memory allocation routine that
 * systems employ.  On newer systems it is often preferable over sbrk.
 * It allocates a block of memory in the virtual-memory system.  The
 * USE_MMAP define is set if the standard mmap call works.
 *
 * NOTE: If configure generates a 0 for this and HAVE_SBRK on your
 * system, you should see the INTERNAL_MEMORY_SPACE setting in the
 * settings.h file which is created from the settings.dist file.
 */
#define HAVE_MMAP 1
#define USE_MMAP 1

/*
 * This is the basic block size in bits.  If possible, the configure
 * script will set this to be the value returned by the getpagesize()
 * function.  If not then some sort of best guess will be necessary.
 * 15 (meaning basic block size of 32k) will probably be good.
 *
 * NOTE: some sbrk functions round to the correct page-size.  No
 * problems aside from a possible small increase in the administration
 * overhead should happen if this value is too high.
 */
#define BASIC_BLOCK 12

/*
 * The alignment value of all allocations in number of bytes for
 * loading admin information before an allocation.  If possible, the
 * configure script will set this to be the value returned by
 * sizeof(long) which in most systems is the register width.
 *
 * NOTE: the value will never be auto-configured to be less than 8
 * because some system (like sparc for instance) report the sizeof(long)
 * == 4 while the register size is 8 bytes.  Certain memory needs to be of
 * the same base as the register size (stack frames, code, etc.).  Any
 * ideas how I can determine the register size in a better (and portable)
 * fashion?
 *
 * NOTE: larger the number the more memory may be wasted by certain
 * debugging settings like fence-post checking.
 */
#define ALLOCATION_ALIGNMENT 8

/*
 * This checks to see if the abort routine does extensive cleaning up
 * before halting a program.  If so then it may call malloc functions
 * making the library go recursive.  If abort is set to not okay then
 * you should tune the KILL_PROCESS and SIGNAL_INCLUDE options in
 * settings.h if you want the library to be able to dump core.
 */
#define ABORT_OKAY 1

/*
 * This checks to see if we can include signal.h and get SIGHUP,
 * SIGINT, and SIGTERM for the catch-signals token.  With this token,
 * you can have the library do an automatic shutdown if we see the
 * above signals.
 */
#define SIGNAL_OKAY 1
#define RETSIGTYPE void

/*
 * This checks to see if we can include return.h and use the assembly
 * macros there to call the callers address for logging.  If you do
 * not want this behavior, then set the USE_RETURN_MACROS to 0 in the
 * settings.h file.
 */
#define RETURN_MACROS_WORK 1

/*
 * Why can't the compiler folks agree about this.  I really hate Unix
 * sometimes for its blatant disregard for anything approaching a
 * standard.
 */
#define IDENT_WORKS 1

/*
 * Which pthread include file to use.
 */
#define HAVE_PTHREAD_H 1
#define HAVE_PTHREADS_H 0

/*
 * What pthread functions do we have?
 */
#define HAVE_PTHREAD_MUTEX_INIT 1
#define HAVE_PTHREAD_MUTEX_LOCK 1
#define HAVE_PTHREAD_MUTEX_UNLOCK 1

/*
 * What is the pthread mutex type?  Usually (always?) it is
 * pthread_mutex_t.
 */
#define THREAD_MUTEX_T pthread_mutex_t

/*
 * On some systems, you initialize mutex variables with NULL.  Others
 * require various stupid non-portable incantations.  The OSF 3.2 guys
 * should be ashamed of themselves.  This only is used if the
 * LOCK_THREADS setting is enabled in the settings.h.
 */
#define THREAD_LOCK_INIT_VAL 0

/*
 * Under the Cygwin environment, when malloc calls getenv, it core
 * dumps.  This is because Cygwin, as far as I know, is loading the
 * shared libraries for the various system functions and goes
 * recursive with a call to getenv.  Ugh.
 *
 * So we have to delay the getenv call.  This sets when we can do the
 * getenv call so the environmental processing is delayed.
 */
#define GETENV_SAFE 1

/*
 * See whether support exists for the constructor attribute which
 * allows the library to run code before main() is called.  I know
 * that later versions of gcc have support for this and maybe other
 * compilers do as well.
 */
#define CONSTRUCTOR_WORKS 1

/*
 * See whether support exists for the destructor attribute which
 * allows the library to run code after main() is exited.  I know
 * that later versions of gcc have support for this and maybe other
 * compilers do as well.
 */
#define DESTRUCTOR_WORKS 1

/*
 * See if we have the GetEnvironmentVariableA Cygwin function.  This
 * is used as a getenv replacement.
 */
#define HAVE_GETENVIRONMENTVARIABLEA 0

/*
 * LIBRARY DEFINES:
 */

/*
 * Whether the compiler and OS has standard C headers.
 */
#define STDC_HEADERS 1

/*
 * Some systems have functions which can register routines to be
 * called by exit(3) (or when the program returns from main).  This
 * functionality allows the dmalloc_shutdown() routine to be called
 * automatically upon program completion so that the library can log
 * statistics.  Use the AUTO_SHUTDOWN define above to disable this.
 * Please send me mail if this functionality exists on your system but
 * in another name.
 *
 * NOTE: If neither is available, take a look at atexit.c in the
 * contrib directory which may provide this useful functionality for
 * your system.
 */
#define HAVE_ATEXIT 1
#define HAVE_ON_EXIT 1

/* Is the DMALLOC_SIZE type unsigned? */
#define DMALLOC_SIZE_UNSIGNED 1

/*
 * The dmalloc library provides its own versions of the following
 * functions, or knows how to work around their absence.
 */
/* bells and whistles */
#define HAVE_FORK 1
#define HAVE_GETHOSTNAME 1
#define HAVE_GETPID 1
#define HAVE_GETUID 1
#define HAVE_TIME 1
#define HAVE_CTIME 1

#define HAVE_VPRINTF 1
#define HAVE_SNPRINTF 1
#define HAVE_VSNPRINTF 1

#define HAVE_RECALLOC 0
#define HAVE_MEMALIGN 1
#define HAVE_VALLOC 1

/* various functions for arg checking and/or internal use */

#define HAVE_ATOI 1
#define HAVE_ATOL 1
#define HAVE_BCMP 1
#define HAVE_BCOPY 1
#define HAVE_BZERO 1
#define HAVE_INDEX 1
#define HAVE_MEMCCPY 1
#define HAVE_MEMCHR 1
#define HAVE_MEMCMP 1
#define HAVE_MEMCPY 1
#define HAVE_MEMMOVE 1
#define HAVE_MEMSET 1
#define HAVE_RINDEX 1
#define HAVE_STRCASECMP 1
#define HAVE_STRCAT 1
#define HAVE_STRCHR 1
#define HAVE_STRCMP 1
#define HAVE_STRCPY 1
#define HAVE_STRCSPN 1
#define HAVE_STRDUP 0
#define HAVE_STRLEN 1
#define HAVE_STRNCASECMP 1
#define HAVE_STRNCAT 1
#define HAVE_STRNCMP 1
#define HAVE_STRNCPY 1
#define HAVE_STRNDUP 0
#define HAVE_STRPBRK 1
#define HAVE_STRRCHR 1
#define HAVE_STRSEP 1
#define HAVE_STRSPN 1
#define HAVE_STRSTR 1
#define HAVE_STRTOK 1

/* manual settings */
#include "settings.h"

#endif /* ! __CONF_H__ */