From 0f7269fa12495ec159b60255aaed5066e85ff016 Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Fri, 25 Jul 2008 06:19:05 +0000 Subject: add (hacky) version of dmalloc --- packages/dmalloc/files/.mtn2git_empty | 0 packages/dmalloc/files/conf.h | 274 +++++++++++++++++++++ .../dmalloc/files/configure-pagesize-HACK.patch | 33 +++ 3 files changed, 307 insertions(+) create mode 100644 packages/dmalloc/files/.mtn2git_empty create mode 100644 packages/dmalloc/files/conf.h create mode 100644 packages/dmalloc/files/configure-pagesize-HACK.patch (limited to 'packages/dmalloc/files') diff --git a/packages/dmalloc/files/.mtn2git_empty b/packages/dmalloc/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/dmalloc/files/conf.h b/packages/dmalloc/files/conf.h new file mode 100644 index 0000000000..d2d9c4af0c --- /dev/null +++ b/packages/dmalloc/files/conf.h @@ -0,0 +1,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__ */ diff --git a/packages/dmalloc/files/configure-pagesize-HACK.patch b/packages/dmalloc/files/configure-pagesize-HACK.patch new file mode 100644 index 0000000000..e9c8d666a0 --- /dev/null +++ b/packages/dmalloc/files/configure-pagesize-HACK.patch @@ -0,0 +1,33 @@ +Index: dmalloc-5.5.2/configure.ac +=================================================================== +--- dmalloc-5.5.2.orig/configure.ac ++++ dmalloc-5.5.2/configure.ac +@@ -348,26 +348,8 @@ AC_MSG_RESULT([$ac_cv_use_mmap]) + # + AC_CHECK_FUNCS(getpagesize) + AC_MSG_CHECKING([basic-block size]) +-ac_cv_page_size=0 +-if test $ac_cv_page_size = 0; then +- AC_RUN_IFELSE([main() { if (getpagesize()<=2048) exit(0); else exit(1); }], +- [ ac_cv_page_size=11 ] ) +-fi +-if test $ac_cv_page_size = 0; then +- AC_RUN_IFELSE([main() { if (getpagesize()<=4096) exit(0); else exit(1); }], +- [ ac_cv_page_size=12 ] ) +-fi +-if test $ac_cv_page_size = 0; then +- AC_RUN_IFELSE([main() { if (getpagesize()<=8192) exit(0); else exit(1); }], +- [ ac_cv_page_size=13 ] ) +-fi +-if test $ac_cv_page_size = 0; then +- AC_RUN_IFELSE([main() { if (getpagesize()<=16384) exit(0); else exit(1); }], +- [ ac_cv_page_size=14 ] ) +-fi +-if test $ac_cv_page_size = 0; then +- ac_cv_page_size=15 +-fi ++# fix to 4K for now ++ac_cv_page_size=12 + AC_DEFINE_UNQUOTED([BASIC_BLOCK],[$ac_cv_page_size]) + AC_MSG_RESULT([$ac_cv_page_size]) + -- cgit v1.2.3