Commit 28151cf8 authored by Eric Andersen's avatar Eric Andersen
Browse files

add dmalloc

parent b3d71710
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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"
+10 −0
Original line number Diff line number Diff line
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/
+43 −0
Original line number Diff line number Diff line
--- 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 */
 
+76 −0
Original line number Diff line number Diff line
#############################################################
#
# 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