summaryrefslogtreecommitdiff
path: root/packages/dmalloc
diff options
context:
space:
mode:
authorMichael Lauer <mickey@vanille-media.de>2008-07-25 06:19:05 +0000
committerMichael Lauer <mickey@vanille-media.de>2008-07-25 06:19:05 +0000
commit0f7269fa12495ec159b60255aaed5066e85ff016 (patch)
tree637a04e39d876dfb245d9013fc554dd11dd454f3 /packages/dmalloc
parent19e952fdd6ab8e75afce96ab9879b5e019640b44 (diff)
add (hacky) version of dmalloc
Diffstat (limited to 'packages/dmalloc')
-rw-r--r--packages/dmalloc/.mtn2git_empty0
-rw-r--r--packages/dmalloc/dmalloc_5.5.2.bb25
-rw-r--r--packages/dmalloc/files/.mtn2git_empty0
-rw-r--r--packages/dmalloc/files/conf.h274
-rw-r--r--packages/dmalloc/files/configure-pagesize-HACK.patch33
5 files changed, 332 insertions, 0 deletions
diff --git a/packages/dmalloc/.mtn2git_empty b/packages/dmalloc/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/dmalloc/.mtn2git_empty
diff --git a/packages/dmalloc/dmalloc_5.5.2.bb b/packages/dmalloc/dmalloc_5.5.2.bb
new file mode 100644
index 0000000000..c91152b537
--- /dev/null
+++ b/packages/dmalloc/dmalloc_5.5.2.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Debug Malloc Library"
+SECTION = "libs/devel"
+HOMEPAGE = "http://dmalloc.com"
+LICENSE = "CCSA"
+
+SRC_URI = "\
+ http://dmalloc.com/releases/dmalloc-${PV}.tgz \
+ file://configure-pagesize-HACK.patch;patch=1 \
+# HACK we ship a preconfigured conf.h since otherwise it misses a whole lot of stuff and compilation fails.
+# TODO find out why and get rid of it
+ file://conf.h \
+"
+inherit autotools pkgconfig
+
+do_configure_append() {
+ install -m 0644 ${WORKDIR}/conf.h ${S}
+}
+
+do_stage() {
+ oe_libinstall -a libdmalloc ${STAGING_LIBDIR}
+}
+
+do_install() {
+ :
+}
diff --git a/packages/dmalloc/files/.mtn2git_empty b/packages/dmalloc/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/dmalloc/files/.mtn2git_empty
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])
+