add dmalloc
authorEric Andersen <andersen@codepoet.org>
Tue, 12 Dec 2006 22:16:41 +0000 (22:16 -0000)
committerEric Andersen <andersen@codepoet.org>
Tue, 12 Dec 2006 22:16:41 +0000 (22:16 -0000)
package/Config.in
package/dmalloc/Config.in [new file with mode: 0644]
package/dmalloc/dmalloc-mips.patch [new file with mode: 0644]
package/dmalloc/dmalloc.mk [new file with mode: 0644]

index 5a6b38452ea7a3cba6af88d15781c16593897366..79835e9ca232e441c5b81af006f6cf7ae18a61f5 100644 (file)
@@ -41,6 +41,7 @@ source "package/dillo/Config.in"
 source "package/directfb/Config.in"
 source "package/distcc/Config.in"
 source "package/dm/Config.in"
+source "package/dmalloc/Config.in"
 source "package/dmraid/Config.in"
 source "package/dnsmasq/Config.in"
 source "package/dropbear/Config.in"
diff --git a/package/dmalloc/Config.in b/package/dmalloc/Config.in
new file mode 100644 (file)
index 0000000..d8784e7
--- /dev/null
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_DMALLOC
+       bool "dmalloc"
+       default n
+       help
+         A debug memory allocation library which is a drop in replacement for
+         the system's malloc, realloc, calloc, free and other memory management
+         routines while providing powerful debugging facilities configurable at
+         runtime.
+
+         http://dmalloc.com/
diff --git a/package/dmalloc/dmalloc-mips.patch b/package/dmalloc/dmalloc-mips.patch
new file mode 100644 (file)
index 0000000..66721fd
--- /dev/null
@@ -0,0 +1,43 @@
+--- dmalloc/configure  2006-09-01 18:28:51.000000000 -0700
++++ dmalloc-mips/configure     2006-09-01 18:49:07.000000000 -0700
+@@ -6114,7 +6114,7 @@
+ echo $ECHO_N "checking return.h macros work... $ECHO_C" >&6
+ if test "$cross_compiling" = yes; then
+    cat >>confdefs.h <<\_ACEOF
+-#define RETURN_MACROS_WORK 0
++#define RETURN_MACROS_WORK 1
+ _ACEOF
+  echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+--- dmalloc/return.h   2004-10-19 07:51:21.000000000 -0700
++++ dmalloc-mips/return.h      2006-09-08 21:52:43.000000000 -0700
+@@ -106,26 +106,16 @@
+ /*************************************/
+ /*
+- * For DEC Mips machines running Ultrix
++ * For Mips machines running Linux
+  */
+ #if __mips
+ /*
+- * I have no idea how to get inline assembly with the default cc.
+- * Anyone know how?
+- */
+-
+-#if 0
+-
+-/*
+  * NOTE: we assume here that file is global.
+  *
+- * $31 is the frame pointer.  $2 looks to be the return address but maybe
+- * not consistently.
++ * $31 is the return address.
+  */
+-#define GET_RET_ADDR(file)    asm("sw $2, file")
+-
+-#endif
++#define GET_RET_ADDR(file)    asm("sw $31, %0" : "=m" (file))
+ #endif /* __mips */
diff --git a/package/dmalloc/dmalloc.mk b/package/dmalloc/dmalloc.mk
new file mode 100644 (file)
index 0000000..563caa4
--- /dev/null
@@ -0,0 +1,76 @@
+#############################################################
+#
+# dmalloc
+#
+#############################################################
+DMALLOC_VER:=5.4.2
+DMALLOC_SOURCE:=dmalloc-$(DMALLOC_VER).tgz
+DMALLOC_SITE:=http://dmalloc.com/releases
+DMALLOC_DIR:=$(BUILD_DIR)/dmalloc-$(DMALLOC_VER)
+DMALLOC_CAT:=zcat
+DMALLOC_BINARY:=dmalloc
+DMALLOC_TARGET_BINARY:=usr/bin/dmalloc
+
+$(DL_DIR)/$(DMALLOC_SOURCE):
+        $(WGET) -P $(DL_DIR) $(DMALLOC_SITE)/$(DMALLOC_SOURCE)
+
+dmalloc-source: $(DL_DIR)/$(DMALLOC_SOURCE)
+
+$(DMALLOC_DIR)/.unpacked: $(DL_DIR)/$(DMALLOC_SOURCE)
+       $(DMALLOC_CAT) $(DL_DIR)/$(DMALLOC_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+       toolchain/patch-kernel.sh $(DMALLOC_DIR) package/dmalloc dmalloc\*.patch
+       $(SED) 's/^ac_cv_page_size=0$$/ac_cv_page_size=12/' $(DMALLOC_DIR)/configure
+       $(SED) 's/(ld -/($${LD-ld} -/' $(DMALLOC_DIR)/configure
+       $(SED) 's/'\''ld -/"$${LD-ld}"'\'' -/' $(DMALLOC_DIR)/configure
+       touch $(DMALLOC_DIR)/.unpacked
+
+$(DMALLOC_DIR)/.configured: $(DMALLOC_DIR)/.unpacked
+       (cd $(DMALLOC_DIR); rm -rf config.cache; \
+               $(TARGET_CONFIGURE_OPTS) \
+               CFLAGS="-g $(TARGET_CFLAGS)" \
+               LDFLAGS="-g" \
+               ./configure \
+               --target=$(GNU_TARGET_NAME) \
+               --host=$(GNU_TARGET_NAME) \
+               --build=$(GNU_HOST_NAME) \
+               --prefix=/usr \
+               --enable-threads \
+               --enable-shlib \
+       );
+       touch $(DMALLOC_DIR)/.configured
+
+$(DMALLOC_DIR)/$(DMALLOC_BINARY): $(DMALLOC_DIR)/.configured
+       $(MAKE) -C $(DMALLOC_DIR)
+
+$(TARGET_DIR)/$(DMALLOC_TARGET_BINARY): $(DMALLOC_DIR)/$(DMALLOC_BINARY)
+       $(MAKE) prefix=$(STAGING_DIR)/usr \
+               exec_prefix=$(TARGET_DIR)/usr \
+               libdir=$(STAGING_DIR)/usr/lib \
+               shlibdir=$(TARGET_DIR)/usr/lib \
+               includedir=$(STAGING_DIR)/include \
+               -C $(DMALLOC_DIR) install
+       (cd $(STAGING_DIR)/usr/lib; \
+               mv libdmalloc*.so $(TARGET_DIR)/usr/lib);
+       touch $(TARGET_DIR)/$(DMALLOC_TARGET_BINARY)
+
+dmalloc: uclibc $(TARGET_DIR)/$(DMALLOC_TARGET_BINARY)
+
+dmalloc-clean: 
+       rm -f $(TARGET_DIR)/usr/lib/libdmalloc*
+       rm -f $(STAGING_DIR)/usr/lib/libdmalloc*
+       rm -f $(STAGING_DIR)/include/dmalloc.h
+       rm -f $(TARGET_DIR)/$(DMALLOC_TARGET_BINARY)
+       $(MAKE) -C $(DMALLOC_DIR) clean
+
+dmalloc-dirclean: 
+       rm -rf $(DMALLOC_DIR)
+
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_DMALLOC)),y)
+TARGETS+=dmalloc
+endif