diff -r 54f82de1219c -r 224b45d1f00f arm-softfloat.dat
--- a/arm-softfloat.dat
+++ b/arm-softfloat.dat
@@ -1,5 +1,5 @@
 KERNELCONFIG=`pwd`/arm.config
-TARGET=arm-softfloat-linux-gnu
+TARGET=arm-unknown-linux-gnueabi
 TARGET_CFLAGS="-O"
-GCC_EXTRA_CONFIG="--with-float=soft"
+GCC_EXTRA_CONFIG="--with-float=soft --disable-libunwind-exceptions --with-gmp=/home/glee/sw/gmp --with-mpfr=/home/glee/sw/mpfr"
 GLIBC_EXTRA_CONFIG="--without-fp"
diff -r 54f82de1219c -r 224b45d1f00f crosstool.sh
--- a/crosstool.sh
+++ b/crosstool.sh
@@ -79,6 +79,7 @@
    esac
    # crypt is only an addon for glibc-2.1.x
    test -z "${GLIBCCRYPT_FILENAME}"   || GLIBC_ADDON_OPTIONS="${GLIBC_ADDON_OPTIONS}crypt,"
+   test -z "${GLIBCPORTS_FILENAME}"   || GLIBC_ADDON_OPTIONS="${GLIBC_ADDON_OPTIONS}${GLIBCPORTS_FILENAME},"
 fi
 
 # Add some default glibc config options if not given by user.  These used to be hardcoded.
@@ -421,7 +422,7 @@
             ${GLIBC_DIR}/configure --prefix=/usr \
             --build=$BUILD --host=$TARGET \
             --without-cvs --disable-sanity-checks --with-headers=$HEADERDIR \
-            --enable-hacker-mode
+            --enable-hacker-mode --enable-add-ons${GLIBC_ADDON_OPTIONS}
     fi
 
     if grep -q GLIBC_2.3 ${GLIBC_DIR}/ChangeLog; then
diff -r 54f82de1219c -r 224b45d1f00f demo-arm-softfloat.sh
--- a/demo-arm-softfloat.sh
+++ b/demo-arm-softfloat.sh
@@ -4,11 +4,15 @@
 # Generated by generate-demo.pl from buildlogs/all.dats.txt
 
 set -ex
-TARBALLS_DIR=$HOME/downloads
-RESULT_TOP=/opt/crosstool
+TARBALLS_DIR=`pwd`/downloads
+RESULT_TOP=`pwd`/../result_top
 export TARBALLS_DIR RESULT_TOP
 GCC_LANGUAGES="c,c++"
 export GCC_LANGUAGES
+
+SRC_DIR=`pwd`/src
+export SRC_DIR
+mkdir -p $SRC_DIR
 
 # Really, you should do the mkdir before running this,
 # and chown /opt/crosstool to yourself so you don't need to run as root.
@@ -26,6 +30,7 @@
 #eval `cat arm-softfloat.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
 #eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
 #eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
-eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
+#eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
+eval `cat arm-softfloat.dat gcc-4.2.4-glibc-2.7-nptl.dat` sh all.sh --notest
 
 echo Done.
diff -r 54f82de1219c -r 224b45d1f00f gcc-4.1.1-glibc-2.4-nptl.dat
--- /dev/null
+++ b/gcc-4.1.1-glibc-2.4-nptl.dat
@@ -0,0 +1,9 @@
+BINUTILS_DIR=binutils-2.18
+GLIBCPORTS_FILENAME=glibc-ports-2.4
+GCC_DIR=gcc-4.1.1
+GLIBC_DIR=glibc-2.4
+LINUX_DIR=linux-2.6.16
+GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.5
+GDB_DIR=gdb-6.6
+GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread  --enable-kernel=2.6.16"
+GLIBC_ADDON_OPTIONS="=nptl,glibc-ports-2.4"
diff -r 54f82de1219c -r 224b45d1f00f gcc-4.2.4-glibc-2.7-nptl.dat
--- /dev/null
+++ b/gcc-4.2.4-glibc-2.7-nptl.dat
@@ -0,0 +1,9 @@
+BINUTILS_DIR=binutils-2.18
+GLIBCPORTS_FILENAME=glibc-ports-2.7
+GCC_DIR=gcc-4.2.4
+GLIBC_DIR=glibc-2.7
+LINUX_DIR=linux-2.6.16
+GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.5
+GDB_DIR=gdb-6.6
+GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread  --enable-kernel=2.6.16"
+GLIBC_ADDON_OPTIONS="=nptl,glibc-ports-2.7"
diff -r 54f82de1219c -r 224b45d1f00f getandpatch.sh
--- a/getandpatch.sh
+++ b/getandpatch.sh
@@ -277,6 +277,7 @@
        ftp://gcc.gnu.org/pub/glibc/releases/$GLIBCTHREADS_FILENAME.tar.gz 
 
   test x$GLIBCCRYPT_FILENAME = x || getUnpackAndPatch     ftp://ftp.gnu.org/pub/gnu/glibc/$GLIBCCRYPT_FILENAME.tar.gz ftp://ftp.gnu.org/pub/gnu/glibc/$GLIBCCRYPT_FILENAME.tar.bz2
+  test x$GLIBCPORTS_FILENAME = x || getUnpackAndPatch     ftp://ftp.gnu.org/pub/gnu/glibc/$GLIBCPORTS_FILENAME.tar.gz ftp://ftp.gnu.org/pub/gnu/glibc/$GLIBCPORTS_FILENAME.tar.bz2
 fi
 
 if test -z "$JUST_DOWNLOAD"; then
diff -r 54f82de1219c -r 224b45d1f00f patches/binutils-2.18/binutils-2.18-makeinfo-versin.patch
--- /dev/null
+++ b/patches/binutils-2.18/binutils-2.18-makeinfo-versin.patch
@@ -0,0 +1,24 @@
+diff -ru binutils-2.18.orig/configure binutils-2.18/configure
+--- binutils-2.18.orig/configure	2008-11-10 17:30:19.394019721 +1100
++++ binutils-2.18/configure	2008-11-10 17:31:14.881519840 +1100
+@@ -6128,7 +6128,7 @@
+     # For an installed makeinfo, we require it to be from texinfo 4.4 or
+     # higher, else we use the "missing" dummy.
+     if ${MAKEINFO} --version \
+-       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++       | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
+       :
+     else
+       MAKEINFO="$MISSING makeinfo"
+diff -ru binutils-2.18.orig/configure.ac binutils-2.18/configure.ac
+--- binutils-2.18.orig/configure.ac	2008-11-10 17:30:19.394019721 +1100
++++ binutils-2.18/configure.ac	2008-11-10 17:31:34.121520653 +1100
+@@ -2403,7 +2403,7 @@
+     # For an installed makeinfo, we require it to be from texinfo 4.4 or
+     # higher, else we use the "missing" dummy.
+     if ${MAKEINFO} --version \
+-       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++       | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
+       :
+     else
+       MAKEINFO="$MISSING makeinfo"
diff -r 54f82de1219c -r 224b45d1f00f patches/gdb-6.6/gdb-6.6-makeinfo-version.patch
--- /dev/null
+++ b/patches/gdb-6.6/gdb-6.6-makeinfo-version.patch
@@ -0,0 +1,24 @@
+diff -ur gdb-6.6.orig/configure gdb-6.6/configure
+--- gdb-6.6.orig/configure	2008-11-10 17:24:49.971539808 +1100
++++ gdb-6.6/configure	2008-11-10 17:25:27.182717765 +1100
+@@ -3679,7 +3679,7 @@
+     # For an installed makeinfo, we require it to be from texinfo 4.4 or
+     # higher, else we use the "missing" dummy.
+     if ${MAKEINFO} --version \
+-       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++       | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
+       :
+     else
+       MAKEINFO="$MISSING makeinfo"
+diff -ur gdb-6.6.orig/configure.in gdb-6.6/configure.in
+--- gdb-6.6.orig/configure.in	2008-11-10 17:24:49.971539808 +1100
++++ gdb-6.6/configure.in	2008-11-10 17:25:42.092867677 +1100
+@@ -2228,7 +2228,7 @@
+     # For an installed makeinfo, we require it to be from texinfo 4.4 or
+     # higher, else we use the "missing" dummy.
+     if ${MAKEINFO} --version \
+-       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++       | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
+       :
+     else
+       MAKEINFO="$MISSING makeinfo"
diff -r 54f82de1219c -r 224b45d1f00f patches/glibc-2.7/glibc-2.7-nolibeh.patch
--- /dev/null
+++ b/patches/glibc-2.7/glibc-2.7-nolibeh.patch
@@ -0,0 +1,14 @@
+diff -urNp glibc-2.4.orig/Makeconfig glibc-2.4/Makeconfig
+--- glibc-2.4.orig/Makeconfig	2008-07-30 16:16:10.771683585 +1000
++++ glibc-2.4/Makeconfig	2008-07-30 16:18:06.158577860 +1000
+@@ -521,8 +521,8 @@ ifneq ($(have-as-needed),yes)
+ else
+  libgcc_eh := -Wl,--as-needed -lgcc_s$(libgcc_s_suffix) $(libunwind) -Wl,--no-as-needed
+ endif
+-gnulib := -lgcc $(libgcc_eh)
+-static-gnulib := -lgcc -lgcc_eh $(libunwind)
++gnulib := -lgcc
++static-gnulib := -lgcc $(libunwind)
+ libc.so-gnulib := -lgcc
+ endif
+ ifeq ($(elf),yes)
