Add dmalloc debug library facility.

Add patches for dmalloc.
Ignore the generated config/debug.in
This commit is contained in:
Yann E. MORIN" 2007-05-18 15:57:16 +00:00
parent a5a431f851
commit 5e43e3ea86
9 changed files with 411 additions and 1 deletions

35
config/debug/dmalloc.in Normal file
View File

@ -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

View File

@ -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 <yann.morin.1998@anciens.enib.fr> 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'

View File

@ -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 <yann.morin.1998@anciens.enib.fr> 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

View File

@ -0,0 +1,17 @@
Correctly check for g++ existence.
Copyright 2007 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
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

View File

@ -0,0 +1,64 @@
Patch to correctly handle the MIPS case.
It was build up by Yann E. MORIN <yann.morin.1998@anciens.enib.fr> 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 */

View File

@ -0,0 +1,44 @@
This patch makes building the shared library possible.
Copyright 2007 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
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)

View File

@ -0,0 +1,105 @@
Make install rules use DESTDIR.
Split installation of the utilitity from the global install.
Copyright 2007 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
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

View File

@ -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
}

View File

@ -7,7 +7,8 @@ doHelp() {
cat <<-EOF cat <<-EOF
Usage: ${myname} <tool> [option] <version> Usage: ${myname} <tool> [option] <version>
'tool' in one of: 'tool' in one of:
--gcc, --binutils, --glibc, --uClibc, --linux, --gdb --gcc, --binutils, --glibc, --uClibc, --linux,
--gdb, --dmalloc
Valid options for all tools: Valid options for all tools:
--experimental, -x --experimental, -x
@ -53,6 +54,7 @@ while [ $i -le $# ]; do
--uClibc) cat=LIBC; tool=uClibc; tool_prefix=libc_; tool_suffix=;; --uClibc) cat=LIBC; tool=uClibc; tool_prefix=libc_; tool_suffix=;;
--linux) cat=KERNEL; tool=linux; tool_prefix=kernel_; tool_suffix=;; --linux) cat=KERNEL; tool=linux; tool_prefix=kernel_; tool_suffix=;;
--gdb) cat=GDB; tool=gdb; tool_prefix=debug/ tool_suffix=;; --gdb) cat=GDB; tool=gdb; tool_prefix=debug/ tool_suffix=;;
--dmalloc) cat=DMALLOC; tool=dmalloc; tool_prefix=debug/ tool_suffix=;;
# Tools options: # Tools options:
-x|--experimental) EXP=1; OBS=;; -x|--experimental) EXP=1; OBS=;;
-o|--obsolete) OBS=1; EXP=;; -o|--obsolete) OBS=1; EXP=;;