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
