From 5e43e3ea8637a08b04dcd177798daf398aedfee2 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Fri, 18 May 2007 15:57:16 +0000 Subject: Add dmalloc debug library facility. Add patches for dmalloc. Ignore the generated config/debug.in diff --git a/config/debug/dmalloc.in b/config/debug/dmalloc.in new file mode 100644 index 0000000..70da263 --- /dev/null +++ b/config/debug/dmalloc.in @@ -0,0 +1,35 @@ +# dmalloc debug facility + +menuconfig DMALLOC + bool + prompt "dmalloc" + default n + depends on EXPERIMENTAL + +if DMALLOC + +choice + bool + prompt "dmalloc version" + +config DMALLOC_V_5_4_3 + bool + prompt "5.4.3" + depends on OBSOLETE + +config DMALLOC_V_5_5_2 + bool + prompt "5.5.2" + +# CT_INSERT_VERSION_ABOVE +# Don't remove above line! +endchoice + +config DMALLOC_VERSION + string + default "5.4.3" if DMALLOC_V_5_4_3 + default "5.5.2" if DMALLOC_V_5_5_2 +# CT_INSERT_VERSION_STRING_ABOVE +# Don't remove above line! + +endif diff --git a/patches/dmalloc/5.5.2/100-use-xtools.patch b/patches/dmalloc/5.5.2/100-use-xtools.patch new file mode 100644 index 0000000..78097fc --- /dev/null +++ b/patches/dmalloc/5.5.2/100-use-xtools.patch @@ -0,0 +1,58 @@ +This patch makes configure use the cross ld and ar rather than the native tools. + +It was build up by Yann E. MORIN from some +bits gathered from buildroot, which is LGPL v2.1 +License for dmalloc is: + * 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. + +I personnaly believe that the resulting code should therefore be +LGPL v2.1, but don't believe me, ask your lawyers! + +diff -dur dmalloc-5.5.2.orig/configure dmalloc-5.5.2/configure +--- dmalloc-5.5.2.orig/configure 2007-05-14 19:26:14.000000000 +0200 ++++ dmalloc-5.5.2/configure 2007-05-18 11:38:25.000000000 +0200 +@@ -4418,14 +4418,14 @@ + (exit $ac_status); }; }; then + + # so now we try to create an archive from the compiled .o file +- (ar cr conftest.a conftest.o) 2>&5 ++ (${AR} cr conftest.a conftest.o) 2>&5 + # see which shared-library ld commands work + # + # Darwin/Mac OS X - Terry Teague + # username terry_teague at domain users.sourceforge.net + ac_cv_shared_lib_link_objs=no + if test `uname` = "Darwin"; then +- if (ld -dylib -o conftest.so.t -lc conftest.a) 2>&5; then ++ if (${LD} -dylib -o conftest.so.t -lc conftest.a) 2>&5; then + # By convention on some platforms + # libLLL.so, libLLL.X.so are symlinks to libLLL.X.Y.Z.so + # where X.Y.Z is version # (major.minor.increment) of the library +@@ -4443,12 +4443,12 @@ + ac_cv_shared_link_args='# Could not configure shlib linking' + enable_shlib=no + fi +- elif (ld -shared --whole-archive -soname conftest.so -o conftest.so.t conftest.a) 2>&5; then +- ac_cv_shared_link_args='ld -shared --whole-archive -soname $@ -o $@.t' +- elif (ld -shared -o conftest.so.t -all -soname conftest.so.t -none -lc -all conftest.a) 2>&5; then +- ac_cv_shared_link_args='ld -shared -o $@.t -all -soname $@ -none -lc -all' +- elif (ld -G -o conftest.so.t conftest.a) 2>&5; then +- ac_cv_shared_link_args='ld -G -o $@.t' ++ elif (${LD} -shared --whole-archive -soname conftest.so -o conftest.so.t conftest.a) 2>&5; then ++ ac_cv_shared_link_args="${LD}"' -shared --whole-archive -soname $@ -o $@.t' ++ elif (${LD} -shared -o conftest.so.t -all -soname conftest.so.t -none -lc -all conftest.a) 2>&5; then ++ ac_cv_shared_link_args="${LD}"' -shared -o $@.t -all -soname $@ -none -lc -all' ++ elif (${LD} -G -o conftest.so.t conftest.a) 2>&5; then ++ ac_cv_shared_link_args="${LD}"' -G -o $@.t' + else + # oh well, toss an error + ac_cv_shared_link_args='# Could not configure shlib linking' diff --git a/patches/dmalloc/5.5.2/110-block_size.patch b/patches/dmalloc/5.5.2/110-block_size.patch new file mode 100644 index 0000000..41d9c5c --- /dev/null +++ b/patches/dmalloc/5.5.2/110-block_size.patch @@ -0,0 +1,32 @@ +This patch sets the page size to a default 12, that is a 4KiB block size. +Testing for the correct block-size is impossible when cross-compiling. + +It was build up by Yann E. MORIN from some +bits gathered from buildroot, which is LGPL v2.1 +License for dmalloc is: + * 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. + +I personnaly believe that the resulting code should therefore be +LGPL v2.1, but don't believe me, ask your lawyers! + +diff -dur dmalloc-5.5.2.orig/configure dmalloc-5.5.2/configure +--- dmalloc-5.5.2.orig/configure 2007-05-14 19:26:14.000000000 +0200 ++++ dmalloc-5.5.2/configure 2007-05-18 11:38:25.000000000 +0200 +@@ -5306,7 +5306,7 @@ + + echo "$as_me:$LINENO: checking basic-block size" >&5 + echo $ECHO_N "checking basic-block size... $ECHO_C" >&6 +-ac_cv_page_size=0 ++ac_cv_page_size=12 + if test $ac_cv_page_size = 0; then + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling diff --git a/patches/dmalloc/5.5.2/120-g++_check.patch b/patches/dmalloc/5.5.2/120-g++_check.patch new file mode 100644 index 0000000..a8f76f5 --- /dev/null +++ b/patches/dmalloc/5.5.2/120-g++_check.patch @@ -0,0 +1,17 @@ +Correctly check for g++ existence. + +Copyright 2007 Yann E. MORIN +Licensed to you as dmalloc-5.5.2 is. + +diff -dur dmalloc-5.5.2.orig/configure dmalloc-5.5.2/configure +--- dmalloc-5.5.2.orig/configure 2007-05-18 11:40:31.000000000 +0200 ++++ dmalloc-5.5.2/configure 2007-05-18 11:42:02.000000000 +0200 +@@ -2643,7 +2643,7 @@ + + + # see if we actually have a CXX program +-if test "$ac_cv_prog_CXX" = "" -o ! -x "$ac_cv_prog_CXX"; then ++if test "$ac_cv_prog_CXX" = "" -o ! -x `which "$ac_cv_prog_CXX"`; then + { echo "$as_me:$LINENO: WARNING: could not find C++ compiler $ac_cv_prog_CXX" >&5 + echo "$as_me: WARNING: could not find C++ compiler $ac_cv_prog_CXX" >&2;} + enable_cxx=no diff --git a/patches/dmalloc/5.5.2/200-mips.patch b/patches/dmalloc/5.5.2/200-mips.patch new file mode 100644 index 0000000..69f0e45 --- /dev/null +++ b/patches/dmalloc/5.5.2/200-mips.patch @@ -0,0 +1,64 @@ +Patch to correctly handle the MIPS case. + +It was build up by Yann E. MORIN from some +bits gathered from buildroot, which is LGPL v2.1 +License for dmalloc is: + * 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. + +I personnaly believe that the resulting code should therefore be +LGPL v2.1, but don't believe me, ask your lawyers! + +diff -dur dmalloc-5.5.2.orig/configure dmalloc-5.5.2/configure +--- dmalloc-5.5.2.orig/configure 2007-05-18 12:15:39.000000000 +0200 ++++ dmalloc-5.5.2/configure 2007-05-18 12:15:48.000000000 +0200 +@@ -7107,7 +7107,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 +diff -dur dmalloc-5.5.2.orig/return.h dmalloc-5.5.2/return.h +--- dmalloc-5.5.2.orig/return.h 2007-05-14 19:26:14.000000000 +0200 ++++ dmalloc-5.5.2/return.h 2007-05-18 12:15:48.000000000 +0200 +@@ -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/patches/dmalloc/5.5.2/300-shared_library.patch b/patches/dmalloc/5.5.2/300-shared_library.patch new file mode 100644 index 0000000..ccf2bb2 --- /dev/null +++ b/patches/dmalloc/5.5.2/300-shared_library.patch @@ -0,0 +1,44 @@ +This patch makes building the shared library possible. + +Copyright 2007 Yann E. MORIN +Licensed to you as dmalloc-5.5.2 is. + +diff -dur dmalloc-5.5.2.orig/Makefile.in dmalloc-5.5.2/Makefile.in +--- dmalloc-5.5.2.orig/Makefile.in 2007-05-14 19:26:14.000000000 +0200 ++++ dmalloc-5.5.2/Makefile.in 2007-05-18 15:54:04.000000000 +0200 +@@ -257,7 +257,7 @@ + # via: http://256.com/gray/email.html + $(LIB_SL) : $(LIBRARY) + rm -f $@ $@.t +- @shlinkargs@ $(LIBRARY) $(OBJS) $(NORMAL_OBJS) ++ @shlinkargs@ $(LIBRARY) + mv $@.t $@ + + $(LIBRARY) : $(OBJS) $(NORMAL_OBJS) +@@ -270,7 +270,7 @@ + + $(LIB_TH_SL) : $(LIB_TH) + rm -f $@ $@.t +- @shlinkargs@ $(LIB_TH) $(OBJS) $(THREAD_OBJS) ++ @shlinkargs@ $(LIB_TH) + mv $@.t $@ + + $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS) +@@ -279,7 +279,7 @@ + + $(LIB_CXX_SL) : $(LIB_CXX) + rm -f $@ $@.t +- @shlinkargs@ $(LIB_CXX) $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS) ++ @shlinkargs@ $(LIB_CXX) + mv $@.t $@ + + $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS) +@@ -288,7 +288,7 @@ + + $(LIB_TH_CXX_SL) : $(LIB_TH_CXX) + rm -f $@ $@.t +- @shlinkargs@ $(LIB_TH_CXX) $(OBJS) $(THREAD_OBJS) $(CXX_OBJS) ++ @shlinkargs@ $(LIB_TH_CXX) + mv $@.t $@ + + threadssl : $(LIB_TH_SL) diff --git a/patches/dmalloc/5.5.2/400-use_DESTDIR.patch b/patches/dmalloc/5.5.2/400-use_DESTDIR.patch new file mode 100644 index 0000000..072e3a7 --- /dev/null +++ b/patches/dmalloc/5.5.2/400-use_DESTDIR.patch @@ -0,0 +1,105 @@ +Make install rules use DESTDIR. +Split installation of the utilitity from the global install. + +Copyright 2007 Yann E. MORIN +Licensed to you as dmalloc-5.5.2 is. + +diff -dur dmalloc-5.5.2.orig/Makefile.in dmalloc-5.5.2/Makefile.in +--- dmalloc-5.5.2.orig/Makefile.in 2007-05-18 16:03:31.000000000 +0200 ++++ dmalloc-5.5.2/Makefile.in 2007-05-18 16:22:59.000000000 +0200 +@@ -174,66 +174,67 @@ + # rm -f configure + + installdirs : +- $(srcdir)/mkinstalldirs $(includedir) $(libdir) $(bindir) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(includedir) $(DESTDIR)/$(libdir) $(DESTDIR)/$(bindir) + + installincs : $(HFLS) +- $(srcdir)/mkinstalldirs $(includedir) +- $(INSTALL_DATA) $(HFLS) $(includedir) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(includedir) ++ $(INSTALL_DATA) $(HFLS) $(DESTDIR)/$(includedir) + + installthsl : $(LIB_TH_SL) +- $(srcdir)/mkinstalldirs $(libdir) +- $(INSTALL_PROGRAM) $(LIB_TH_SL) $(libdir) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir) ++ $(INSTALL_PROGRAM) $(LIB_TH_SL) $(DESTDIR)/$(libdir) + + installth : $(INSTALL_THREADS) +- $(srcdir)/mkinstalldirs $(libdir) +- $(INSTALL_PROGRAM) $(LIB_TH) $(libdir) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir) ++ $(INSTALL_PROGRAM) $(LIB_TH) $(DESTDIR)/$(libdir) + @CXX_OFF@ @echo "Enter 'make installthcxx' to install the threaded C++ library" + @SL_OFF@ @echo "Enter 'make installthsl' to install the threaded shared-library" + + installthcxxsl : $(LIB_TH_CXX_SL) +- $(srcdir)/mkinstalldirs $(shlibdir) +- $(INSTALL_PROGRAM) $(LIB_TH_CXX_SL) $(shlibdir) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(shlibdir) ++ $(INSTALL_PROGRAM) $(LIB_TH_CXX_SL) $(DESTDIR)/$(shlibdir) + + installthcxx : $(INSTALL_TH_CXX) +- $(srcdir)/mkinstalldirs $(libdir) +- $(INSTALL_PROGRAM) $(LIB_TH_CXX) $(libdir) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir) ++ $(INSTALL_PROGRAM) $(LIB_TH_CXX) $(DESTDIR)/$(libdir) + @SL_OFF@ @echo "Enter 'make installthcxxsl' to install the threaded C++ shared-library" + + installcxxsl : $(LIB_CXX_SL) +- $(srcdir)/mkinstalldirs $(libdir) +- $(INSTALL_PROGRAM) $(LIB_CXX_SL) $(libdir) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir) ++ $(INSTALL_PROGRAM) $(LIB_CXX_SL) $(DESTDIR)/$(libdir) + + installcxx : $(INSTALL_CXX) +- $(srcdir)/mkinstalldirs $(libdir) +- $(INSTALL_PROGRAM) $(LIB_CXX) $(libdir) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir) ++ $(INSTALL_PROGRAM) $(LIB_CXX) $(DESTDIR)/$(libdir) + @TH_OFF@ @echo "Enter 'make installthcxx' to install the threaded C++ library" + @SL_OFF@ @echo "Enter 'make installcxxsl' to install the C++ shared-library" + + installsl : $(LIB_SL) +- $(srcdir)/mkinstalldirs $(shlibdir) +- $(INSTALL_PROGRAM) $(LIB_SL) $(shlibdir) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(shlibdir) ++ $(INSTALL_PROGRAM) $(LIB_SL) $(DESTDIR)/$(shlibdir) + @CXX_OFF@ @echo "Enter 'make installcxxsl' to install the C++ shared-library" + @TH_OFF@ @echo "Enter 'make installthsl' to install thread shared-library" + + installlib : $(INSTALL_LIB) +- $(srcdir)/mkinstalldirs $(libdir) +- $(INSTALL_PROGRAM) $(LIBRARY) $(libdir) +- @RANLIB@ $(libdir)/$(LIBRARY) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(libdir) ++ $(INSTALL_PROGRAM) $(LIBRARY) $(DESTDIR)/$(libdir) ++ @RANLIB@ $(DESTDIR)/$(libdir)/$(LIBRARY) + @SL_OFF@ @echo "Enter 'make installsl' to install $(LIB_SL) in $(shlibdir)" + @CXX_OFF@ @echo "Enter 'make installcxx' to install the C++ library" + @TH_OFF@ @echo "Enter 'make installth' to install thread library" + + installdocs : $(srcdir)/docs/$(HTMLFILE) $(srcdir)/docs/$(TEXIFILE) \ + $(srcdir)/docs/$(PDFFILE) +- $(srcdir)/mkinstalldirs $(docdir) +- $(INSTALL_DATA) $(srcdir)/docs/$(HTMLFILE) $(docdir) +- $(INSTALL_DATA) $(srcdir)/docs/$(TEXIFILE) $(docdir) +- $(INSTALL_DATA) $(srcdir)/docs/$(PDFFILE) $(docdir) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(docdir) ++ $(INSTALL_DATA) $(srcdir)/docs/$(HTMLFILE) $(DESTDIR)/$(docdir) ++ $(INSTALL_DATA) $(srcdir)/docs/$(TEXIFILE) $(DESTDIR)/$(docdir) ++ $(INSTALL_DATA) $(srcdir)/docs/$(PDFFILE) $(DESTDIR)/$(docdir) + +-install : installincs installlib $(UTIL) +- $(srcdir)/mkinstalldirs $(bindir) +- $(INSTALL_PROGRAM) $(UTIL) $(bindir) +- @echo "Enter 'make installdocs' to install $(DOCFILES) in $(docdir)" ++installutil : $(UTIL) ++ $(srcdir)/mkinstalldirs $(DESTDIR)/$(bindir) ++ $(INSTALL_PROGRAM) $(UTIL) $(DESTDIR)/$(bindir) ++ ++install : installincs installlib installutil installdocs + + dmalloc.h.2 : $(srcdir)/configure + $(SHELL) $(srcdir)/configure diff --git a/scripts/build/debug/dmalloc.sh b/scripts/build/debug/dmalloc.sh new file mode 100644 index 0000000..0d6aa6f --- /dev/null +++ b/scripts/build/debug/dmalloc.sh @@ -0,0 +1,53 @@ +# Build script for the dmalloc debug library facility + +is_enabled="${CT_DMALLOC}" + +do_debug_dmalloc_get() { + CT_GetFile "dmalloc-${CT_DMALLOC_VERSION}" http://dmalloc.com/releases/ +} + +do_debug_dmalloc_extract() { + CT_ExtractAndPatch "dmalloc-${CT_DMALLOC_VERSION}" +} + +do_debug_dmalloc_build() { + CT_DoStep INFO "Installing dmalloc" + CT_DoLog EXTRA "Configuring dmalloc" + + mkdir -p "${CT_BUILD_DIR}/build-dmalloc" + cd "${CT_BUILD_DIR}/build-dmalloc" + + extra_config= + case "${CT_CC_LANG_CXX}" in + y) extra_config="${extra_config} --enable-cxx";; + *) extra_config="${extra_config} --disable-cxx";; + esac + case "${CT_LIBC_THREADS_NONE}" in + y) extra_config="${extra_config} --disable-threads";; + *) extra_config="${extra_config} --enable-threads";; + esac + case "${CT_SHARED_LIBS}" in + y) extra_config="${extra_config} --enable-shlib";; + *) extra_config="${extra_config} --disable-shlib";; + esac + + CT_DoLog DEBUG "Extra config passed: \"${extra_config}\"" + + LD="${CT_TARGET}-ld" \ + AR="${CT_TARGET}-ar" \ + "${CT_SRC_DIR}/dmalloc-${CT_DMALLOC_VERSION}/configure" \ + --prefix=/usr \ + --build="${CT_BUILD}" \ + --host="${CT_TARGET}" \ + ${extra_config} 2>&1 |CT_DoLog ALL + + CT_DoLog EXTRA "Building dmalloc" + make ${PARALLELMFLAGS} 2>&1 |CT_DoLog ALL + + CT_DoLog EXTRA "Building dmalloc" + make DESTDIR="${CT_SYSROOT_DIR}" installincs \ + installlib 2>&1 |CT_DoLog ALL + make DESTDIR="${CT_DEBUG_INSTALL_DIR}" installutil 2>&1 |CT_DoLog ALL + + CT_EndStep +} diff --git a/tools/addToolVersion.sh b/tools/addToolVersion.sh index cab0235..fc741c5 100755 --- a/tools/addToolVersion.sh +++ b/tools/addToolVersion.sh @@ -7,7 +7,8 @@ doHelp() { cat <<-EOF Usage: ${myname} [option] 'tool' in one of: - --gcc, --binutils, --glibc, --uClibc, --linux, --gdb + --gcc, --binutils, --glibc, --uClibc, --linux, + --gdb, --dmalloc Valid options for all tools: --experimental, -x @@ -53,6 +54,7 @@ while [ $i -le $# ]; do --uClibc) cat=LIBC; tool=uClibc; tool_prefix=libc_; tool_suffix=;; --linux) cat=KERNEL; tool=linux; tool_prefix=kernel_; tool_suffix=;; --gdb) cat=GDB; tool=gdb; tool_prefix=debug/ tool_suffix=;; + --dmalloc) cat=DMALLOC; tool=dmalloc; tool_prefix=debug/ tool_suffix=;; # Tools options: -x|--experimental) EXP=1; OBS=;; -o|--obsolete) OBS=1; EXP=;; -- cgit v0.10.2-6-g49f6