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'
