]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
Merge branch 'ssp'
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 11 Jun 2008 09:23:38 +0000 (11:23 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 11 Jun 2008 09:23:38 +0000 (11:23 +0200)
Conflicts:

.config-default
lfs/adjust-toolchain
lfs/bash
lfs/binutils
lfs/coreutils
lfs/file
lfs/gcc
lfs/gettext
lfs/glibc
lfs/gzip
lfs/libtool
lfs/readline
lfs/strip
lfs/zlib
make.sh
tools/make-include

21 files changed:
1  2 
.config-default
lfs/adjust-toolchain
lfs/bash
lfs/binutils
lfs/bison
lfs/ccache
lfs/coreutils
lfs/diffutils
lfs/file
lfs/flex
lfs/gcc
lfs/gettext
lfs/glibc
lfs/grub
lfs/gzip
lfs/libtool
lfs/readline
lfs/strip
lfs/zlib
make.sh
tools/make-include

diff --cc .config-default
index c878b3c47b08d90790789adfd1b7bcf1abdafad5,c8b6395ddcc08222fc26b5b738e08a10f571a4b9..3e585f0337c88dea8c9a79313421758b04449c12
  
  #NICE=10
  
 +###############################################################################                   
 +# Parallelism                                                                 #
  ###############################################################################
 -# Jobs                                                                        #
 -###############################################################################
 -# If you have got more than one processor you can advice the gcc to run more  #
 +# If you have got more than one processor you can advice make to run more     #
  # than one job a time. You also may want to adjust this when using distcc.    #
 -# Default is count of cpus twice + 1.                                         #
 +# Default is count of cpus twice + 1. (-jN)                                   #
 +# Possible options:                                                           #
 +#    -j [N] : N is the number of the parallel jobs.                           #
 +#    -l N   : Specify the max. load avg. for the system.                      #
 +# Read more: http://www.gnu.org/software/automake/manual/make/Parallel.html   #
  ###############################################################################
  
 -#PARALLELISM=3
 +#PARALLELISMFLAGS=-j3
  
- ###############################################################################                   
+ ###############################################################################
  # Distcc Hosts                                                                #
  ###############################################################################
  # Distcc lets you run some instances of gcc on other dedicated machines.      #
index 438aef4e6169572fba9d8f073b46662afbf37eaa,9409e1a82febc6968f37e0b47c7e5148dd806214..0c9e4d72f5487e988960b3798dfd2e7ddb4bb1a5
@@@ -71,10 -63,11 +63,10 @@@ ifeq "$(STAGE)" "base
        ln -sfv $(TOOLS_DIR)/bin/ld $(TOOLS_DIR)/$$(gcc -dumpmachine)/bin/ld
        
        gcc -dumpspecs | sed \
+               -e "/^\*link:$$/{n;s,$$, -L/usr/lib,}" \
                -e 's@$(TOOLS_DIR)$(LINKER)@$(LINKER)@g' \
-               -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
-               -e '/\*cpp:/{n;s@$$@ -isystem /usr/include@}' > \
-               `dirname $$(gcc --print-libgcc-file-name)`/specs
+               -e '/^\*cpp:$$/{n;s,$$, -isystem /usr/include,}' \
+               > $$(dirname $$(gcc --print-libgcc-file-name))/myspecs
 -      
  endif
 -      
 +
        @$(POSTBUILD)
diff --cc lfs/bash
index ee17970614ffc099caf61c7aa58d35d886bacf62,aa5e18fa6e22c01d8a0675fbac998d17fc82235f..edf47ee403d6771024ddbf97859933b9a82490da
+++ b/lfs/bash
@@@ -37,7 -37,8 +37,8 @@@ TARGET     = $(DIR_INFO)/$(STAGE_ORDER)
  # Top-level Rules
  ###############################################################################
  
- objects = $(DL_FILE) $(THISAPP)-fixes-8.patch $(PKG_NAME)-doc-$(VER).tar.gz
 -objects = $(DL_FILE) $(THISAPP)-fixes-7.patch $(PKG_NAME)-doc-$(VER).tar.gz \
++objects = $(DL_FILE) $(THISAPP)-fixes-8.patch $(PKG_NAME)-doc-$(VER).tar.gz \
+       $(THISAPP)-arc4random-1.patch
  
  install : $(TARGET)
  
@@@ -74,9 -74,11 +75,10 @@@ ifeq "$(STAGE)" "base
        cd $(DIR_APP) && tar -xvf $(DIR_DL)/$(PKG_NAME)-doc-$(VER).tar.gz
        cd $(DIR_APP) && sed -i "s|htmldir = @htmldir@|htmldir = /usr/share/doc/$(THISAPP)|" \
                Makefile.in
 -      cd $(DIR_APP) && patch -Np1 < $(DIR_PATCHES)/$(THISAPP)-fixes-7.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_PATCHES)/$(THISAPP)-arc4random-1.patch
        cd $(DIR_APP) && ./configure --prefix=/usr --bindir=/bin \
                --without-bash-malloc --with-installed-readline
 -      cd $(DIR_APP) && make -j $(PARALLELISM)
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS)
        cd $(DIR_APP) && make install
  endif
  
diff --cc lfs/binutils
index 914b2b4cad550074397e1ccd9af9dd37890e48c8,8ad8f753cdf48c41968967cc71411dd3fce92fb7..8f669bf7a30ecba305a9d812093cb162c11f886a
@@@ -46,8 -46,8 +46,10 @@@ endi
  ###############################################################################
  
  objects = $(DL_FILE) $(THISAPP)-configure-1.patch \
-       $(THISAPP)-ld_makefile.patch
 +      $(THISAPP)-uClibc-1.patch \
++      $(THISAPP)-ld_makefile.patch \
+       $(THISAPP)-pt_pax-1.patch \
+       $(THISAPP)-lazy-1.patch
  
  install : $(TARGET)
  
@@@ -67,102 -67,57 +69,86 @@@ $(TARGET) 
        cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-configure-1.patch
  
  ifeq "$(STAGE)" "toolchain"
- ifeq "$(firstword $(MAKEFILE_LIST))" "$(PKG_NAME)"
-       #
-       #       Normal build
-       #
  ifeq "$(PASS)" "1"
- ifeq "$(MACHINE)" "$(MACHINE_REAL)"
-       cd $(DIR_SRC)/binutils-build && CC="gcc -B/usr/bin/" ../$(THISAPP)/configure \
-                                               --prefix=$(TOOLS_DIR) \
-                                               --disable-nls \
-                                               --disable-werror
-       cd $(DIR_SRC)/binutils-build && make $(PARALLELISMFLAGS)
-       cd $(DIR_SRC)/binutils-build && make install
-       cd $(DIR_SRC)/binutils-build && make -C ld clean
-       cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=$(TOOLS_DIR)/lib
-       cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new $(TOOLS_DIR)/bin
- else
-       #
-       # Cross build
-       #
-       cd $(DIR_SRC)/binutils-build && ../$(THISAPP)/configure \
-                                               --prefix=$(TOOLS_DIR) \
-                                               --build=${IFS_HOST} \
-                                               --host=${IFS_TARGET} \
-                                               --target=${IFS_TARGET} \
-                                               --disable-nls \
-                                               --enable-shared \
-                                               --disable-multilib
-       cd $(DIR_SRC)/binutils-build && make configure-host                                                                                                                                     
+       cd $(DIR_SRC)/binutils-build && \
+               ../$(THISAPP)/configure \
+                       --target=$(IFS_TARGET) \
+                       --prefix=$(TOOLS_DIR) \
+                       --disable-nls \
+                       --disable-werror
 -      cd $(DIR_SRC)/binutils-build && make -j $(PARALLELISM)
 +      cd $(DIR_SRC)/binutils-build && make $(PARALLELISMFLAGS)
        cd $(DIR_SRC)/binutils-build && make install
- endif
+       cd $(TOOLS_DIR)/$(IFS_TARGET)/bin; \
+               if [ "$(IFS_TARGET)" == "$$($(DIR_APP)/config.guess)" ]; then \
+                       for t in $$(ls -1); do \
+                               ln -sfv $${t} $(TOOLS_DIR)/bin/$(IFS_TARGET)-$${t}; \
+                       done; \
+               fi
  endif
  
  ifeq "$(PASS)" "2"
-       cd $(DIR_SRC)/binutils-build && ../$(THISAPP)/configure \
-                                               --prefix=$(TOOLS_DIR) \
-                                               --disable-nls \
-                                               --with-lib-path=$(TOOLS_DIR)/lib
+       cd $(DIR_SRC)/binutils-build && \
+               CC="$(IFS_TARGET)-gcc -B$(TOOLS_DIR)/lib/" \
+               AR=$(IFS_TARGET)-ar \
+               RANLIB=$(IFS_TARGET)-ranlib \
+               ../$(THISAPP)/configure \
+                       --prefix=$(TOOLS_DIR) \
+                       --disable-nls \
+                       --with-lib-path=$(TOOLS_DIR)/lib
 -      cd $(DIR_SRC)/binutils-build && make -j $(PARALLELISM)
 +      cd $(DIR_SRC)/binutils-build && make $(PARALLELISMFLAGS)
        cd $(DIR_SRC)/binutils-build && make install
-       
        cd $(DIR_SRC)/binutils-build && make -C ld clean
        cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib
        cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new $(TOOLS_DIR)/bin
  endif
+ endif
  
- else
-       #
-       # Cross build
-       #
-       cd $(DIR_SRC)/binutils-build && AR=ar AS=as ../$(THISAPP)/configure \
-                                               --prefix=$(CTOOLS_DIR) \
-                                               --host=${IFS_HOST} \
-                                               --target=${IFS_TARGET} \
-                                               --with-lib-path=$(TOOLS_DIR)/lib \
-                                               --disable-nls \
-                                               --enable-shared \
-                                               --disable-multilib
-       cd $(DIR_SRC)/binutils-build && make configure-host
-       cd $(DIR_SRC)/binutils-build && make $(PARALLELISMFLAGS)
-       cd $(DIR_SRC)/binutils-build && make install
-       
-       -mkdir -p $(TOOLS_DIR)/include
-       cp -fv $(DIR_APP)/include/libiberty.h $(TOOLS_DIR)/include
+ ifeq "$(STAGE)" "base"
+ ifeq "$(PAX)" "1"
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-pt_pax-1.patch
+ endif
+       cd $(DIR_SRC)/binutils-build && \
+               CC="gcc -specs=$$(dirname $$(gcc --print-libgcc-file-name))/myspecs -B/usr/lib/ -B/usr/bin/" \
+               ../$(THISAPP)/configure \
+                       --prefix=/usr \
+                       --enable-shared \
+                       --disable-werror
 -      cd $(DIR_SRC)/binutils-build && make tooldir=/usr -j $(PARALLELISM)
++      cd $(DIR_SRC)/binutils-build && make tooldir=/usr $(PARALLELISMFLAGS)
+       cd $(DIR_SRC)/binutils-build && make tooldir=/usr install
+       cp -fv ../$(THISAPP)/include/libiberty.h /usr/include
  endif
 +endif
 +
 +ifeq "$(STAGE)" "base"
 +      cd $(DIR_SRC)/binutils-build && ../$(THISAPP)/configure --prefix=/usr \
 +              --enable-shared
 +      cd $(DIR_SRC)/binutils-build && make tooldir=/usr $(PARALLELISMFLAGS)
 +      cd $(DIR_SRC)/binutils-build && make tooldir=/usr install
 +      
 +      cp -fv ../$(THISAPP)/include/libiberty.h /usr/include
 +endif
 +
 +ifeq "$(STAGE)" "installer"
 +      cd $(DIR_SRC)/binutils-build && ../$(THISAPP)/configure \
 +                                              --target=$(UCLIBC_TARGET) \
 +                                              --prefix=$(UCLIBC_DIR) \
 +                                              --with-sysroot=$(UCLIBC_SYSROOT_DIR) \
 +                                              --disable-multilib \
 +                                              --disable-werror \
 +                                              --disable-nls
 +      cd $(DIR_SRC)/binutils-build && make $(PARALLELISMFLAGS)
 +      cd $(DIR_SRC)/binutils-build && make install
 +
 +      for t in ar as ld strip; do \
 +              ln -sfv $(UCLIBC_DIR)/bin/$(UCLIBC_TARGET)-$${t} \
 +                      $(UCLIBC_CC_CORE_STATIC_DIR)/$(UCLIBC_TARGET)/bin/$${t}; \
 +              ln -sfv $(UCLIBC_DIR)/bin/$(UCLIBC_TARGET)-$${t} \
 +                      $(UCLIBC_CC_CORE_STATIC_DIR)/bin/$(UCLIBC_TARGET)-$${t}; \
 +      done
 +endif
  
        @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build
        @$(POSTBUILD)
diff --cc lfs/bison
index ef9a7a0e55e49c45867cbc8fcef092d830008dff,c9df2810f896bc2fe2b08248f309e3419a7e8104..0d63945f53872bc84f9979ed282cdaa305c4d0f7
+++ b/lfs/bison
@@@ -50,12 -50,26 +50,26 @@@ $(objects) 
  # Installation Details
  ###############################################################################
  
 -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 +$(TARGET) : 
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+ ifeq "$(STAGE)" "toolchain"
+       cd $(DIR_APP) && ./configure --prefix=$(TOOLS_DIR)
+       cd $(DIR_APP) && make -j $(PARALLELISM)
+       cd $(DIR_APP) && make install
+ endif
+ ifeq "$(STAGE)" "base"
        cd $(DIR_APP) && ./configure --prefix=/usr
        cd $(DIR_APP) && echo '#define YYENABLE_NLS 1' >> config.h
 -      cd $(DIR_APP) && make -j $(PARALLELISM)
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS)
        cd $(DIR_APP) && make install
+       cd $(DIR_APP)/lib/ && \
+               gcc -shared -Wl,-soname,liby.so.2.3 -o liby.so.2.3 -fPIC main.o yyerror.o
+       rm -fv /usr/lib/liby.a
+       cd $(DIR_APP)/lib/ && install -v liby.so.2.3 /usr/lib/liby.so.2.3
+       ln -vsf liby.so.2.3 /usr/lib/liby.so
+ endif
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --cc lfs/ccache
index 61461b48766ac1adfac280af541231199c4a49b2,6dd17c14ddd534d7a193e4ef2777e054975ccc3d..5de649d35f24823185fd352d054c2e9bda55357b
@@@ -58,19 -56,12 +58,20 @@@ ifeq "$(STAGE)" "toolchain
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && patch -p0 < $(DIR_PATCHES)/$(THISAPP).patch
        cd $(DIR_APP) && CFLAGS="-O2 -static" ./configure --prefix=$(PREFIX)
 -      cd $(DIR_APP) && make -j $(PARALLELISM)
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS)
        cd $(DIR_APP) && make install
-       ln -sf ccache $(PREFIX)/bin/gcc
-       ln -sf ccache $(PREFIX)/bin/g++
-       ln -sf ccache $(PREFIX)/bin/cc
+       for i in gcc g++ cc; do \
+               ln -sf ccache $(PREFIX)/bin/$${i}; \
+               ln -sf ccache $(PREFIX)/bin/$(IFS_TARGET)-$${i}; \
+       done
        $(PREFIX)/bin/ccache -z
        @rm -rf $(DIR_APP)
 +endif
 +
 +ifeq "$(STAGE)" "installer"
 +      ln -sf ccache $(PREFIX)/bin/$(UCLIBC_TARGET)-gcc
 +      ln -sf ccache $(PREFIX)/bin/$(UCLIBC_TARGET)-g++
 +      ln -sf ccache $(PREFIX)/bin/$(UCLIBC_TARGET)-cc
 +endif
 +
        @$(POSTBUILD)
diff --cc lfs/coreutils
Simple merge
diff --cc lfs/diffutils
index e120c5c075c6b79def8cef1d5c7bd5be53ad6968,c259b80e2b2e5dcc691f24b56e9802e476326197..3c9c93c146dfa860db2ad8e650f3bf3cd12953ff
@@@ -62,9 -62,10 +62,10 @@@ endi
  
  ifeq "$(STAGE)" "base"
        cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-i18n-1.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-hardened_tmp-1.patch
        cd $(DIR_APP) && touch man/diff.1
        cd $(DIR_APP) && ./configure --prefix=/usr
 -      cd $(DIR_APP) && make -j $(PARALLELISM)
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS)
        cd $(DIR_APP) && make install
  endif
  
diff --cc lfs/file
index 95b92cdebffbb417d6ec3dd1248c7a4722f7311e,0be34ce3143a059be917c356d04593fa5d4847e7..64ebe3a772172d07c5aabcff3f15d44eefed007a
+++ b/lfs/file
@@@ -50,11 -50,11 +50,11 @@@ $(objects) 
  # Installation Details
  ###############################################################################
  
 -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 +$(TARGET) : 
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && ./configure --prefix=/usr --disable-static
 -      cd $(DIR_APP) && make -j $(PARALLELISM)
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --cc lfs/flex
index efee938c460851cc4693822d899ec3f6212982d2,fe8b82149f7c1df7f0c36ff36a7dc6d5109ae162..c63da577d4ab09a7bd612f53e16f0bf0378a568b
+++ b/lfs/flex
@@@ -53,15 -53,25 +53,25 @@@ $(objects) 
  # Installation Details
  ###############################################################################
  
 -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 +$(TARGET) : 
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+ ifeq "$(STAGE)" "toolchain"
+       cd $(DIR_APP) && ./configure --prefix=$(TOOLS_DIR)
+       cd $(DIR_APP) && make -j $(PARALLELISM)
+       cd $(DIR_APP) && make install
+ endif
+ ifeq "$(STAGE)" "base"
        cd $(DIR_APP) && ./configure --prefix=/usr
 -      cd $(DIR_APP) && make -j $(PARALLELISM)
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS)
        cd $(DIR_APP) && make install
        ln -sfv libfl.a /usr/lib/libl.a
-       echo "#!/bin/sh"                                                                                        >  /usr/bin/lex
+       echo "#!/bin/sh"                        >  /usr/bin/lex
        echo "exec /usr/bin/flex -l \"$$@\""    >> /usr/bin/lex
        chmod 755 /usr/bin/lex
+ endif
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --cc lfs/gcc
index 4b51f475ecbaadd6b5e081ebad0a0f934eeb77bc,64e2906353effa6a2a6cf532035ff529d457bbbd..8c7442dae7e241e5b55ec408aad8e25f6601de9d
+++ b/lfs/gcc
@@@ -52,9 -48,10 +52,13 @@@ endi
  ###############################################################################
  
  objects = $(DL_FILE) \
-       $(THISAPP)-uClibc-1.patch
 +      $(THISAPP)-cross_search_paths-1.patch \
 +      $(THISAPP)-specs-1.patch \
++      $(THISAPP)-uClibc-1.patch \
+       $(THISAPP)-fstack_protector-1.patch \
+       $(THISAPP)-strncat_chk-1.patch \
+       $(THISAPP)-fortify_source-2.patch \
+       $(THISAPP)-fpie-2.patch
  
  install : $(TARGET)
  
@@@ -71,59 -68,32 +75,32 @@@ $(TARGET) 
        @$(PREBUILD)
        @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
        -mkdir -v $(DIR_SRC)/gcc-build
-       
  ifeq "$(STAGE)" "toolchain"
- ifeq "$(firstword $(MAKEFILE_LIST))" "$(PKG_NAME)"
-       #
-       #       Normal build
-       #
-       
  ifeq "$(PASS)" "1"
- ifeq "$(MACHINE)" "$(MACHINE_REAL)"
-       cd $(DIR_SRC)/gcc-build && CC="gcc -B/usr/bin/" ../$(THISAPP)/configure \
-                                               --prefix=$(TOOLS_DIR) \
-                                               --with-local-prefix=$(TOOLS_DIR) \
-                                               --disable-nls \
-                                               --enable-shared \
-                                               --enable-languages=c
+ ifeq "$(PIE)" "1"
+       ## Enable -fPIC by default
+       cd $(DIR_APP) && sed 's/^\(#define CC1_SPEC.*\)\("\)$$/\1 %{fno-pic|fpic|fPIC:;:-fPIC}\2/' \
+               -i gcc/config/i386/linux.h
+ endif
+       cd $(DIR_SRC)/gcc-build && \
+               ../$(THISAPP)/configure \
+                       --target=$(IFS_TARGET) \
+                       --prefix=$(TOOLS_DIR) \
+                       --enable-languages=c \
+                       --disable-shared \
+                       --disable-threads \
+                       --disable-multilib \
+                       --disable-libmudflap \
+                       --disable-libssp \
+                       --disable-libgomp \
+                       --disable-nls \
+                       --disable-werror
 -      cd $(DIR_SRC)/gcc-build && make -j $(PARALLELISM)
 +      cd $(DIR_SRC)/gcc-build && make $(PARALLELISMFLAGS)
        cd $(DIR_SRC)/gcc-build && make install
-       ln -vs gcc $(TOOLS_DIR)/bin/cc
- else
-       #
-       # Cross build
-       #
-       cd $(DIR_APP) && sed -e "s,/tools,$(TOOLS_DIR),g" \
-               < $(DIR_PATCHES)/$(THISAPP)-specs-1.patch | patch -Np1
-       
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-cross_search_paths-1.patch
-       
-       cd $(DIR_APP) && cp -v gcc/cppdefault.c{,.orig}
-       cd $(DIR_APP) && sed -e '/#define STANDARD_INCLUDE_DIR/s@"/usr/include"@0@g' \
-               gcc/cppdefault.c.orig > gcc/cppdefault.c
-       
-       cd $(DIR_APP) && cp -v gcc/Makefile.in{,.orig}
-       cd $(DIR_APP) && sed -e 's@\(^NATIVE_SYSTEM_HEADER_DIR =\).*@\1 $(TOOLS_DIR)/include@g' \
-               gcc/Makefile.in.orig > gcc/Makefile.in
-       
-       cd $(DIR_SRC)/gcc-build && ../$(THISAPP)/configure \
-                                               --prefix=$(TOOLS_DIR) \
-                                               --build=${IFS_HOST} \
-                                               --host=${IFS_TARGET} \
-                                               --target=${IFS_TARGET} \
-                                               --with-local-prefix=$(TOOLS_DIR) \
-                                               --enable-long-long \
-                                               --enable-c99 \
-                                               --enable-shared \
-                                               --enable-threads=posix \
-                                               --enable-__cxa_atexit \
-                                               --disable-nls \
-                                               --enable-languages=c,c++ \
-                                               --disable-libstdcxx-pch
-       cd $(DIR_SRC)/gcc-build && make $(PARALLELISMFLAGS) AS_FOR_TARGET=$(AS) \
-                                               LD_FOR_TARGET=$(LD)
-       cd $(DIR_SRC)/gcc-build && make install
- endif
+       ln -fvs gcc $(TOOLS_DIR)/bin/cc
+       ln -sfv libgcc.a $$($(IFS_TARGET)-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/')
  endif
  
  ifeq "$(PASS)" "2"
@@@ -226,64 -160,16 +167,67 @@@ endi
                                                --enable-__cxa_atexit \
                                                --enable-clocale=gnu \
                                                --enable-languages=c,c++ \
-                                               --disable-bootstrap
+                                               --disable-bootstrap \
+                                               --disable-werror \
+                                               --disable-libgomp
+       ## Libgomp was disabled here because it doesn't want to compile ##
 -      cd $(DIR_SRC)/gcc-build && make -j $(PARALLELISM)
 +      cd $(DIR_SRC)/gcc-build && make $(PARALLELISMFLAGS)
        cd $(DIR_SRC)/gcc-build && make install
-       
        ln -sfv ../usr/bin/cpp /lib
-       ln -sfv gcc /usr/bin/cc 
+       ln -sfv gcc /usr/bin/cc
  endif
  
 +ifeq "$(STAGE)" "installer"
 +      cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-uClibc-1.patch
 +ifeq "$(PASS)" "1"
 +      ### Copying headers to install area of bootstrap gcc,
 +      #   so it can build libgcc2
 +      mkdir -pv $(UCLIBC_CC_CORE_STATIC_DIR)/$(UCLIBC_TARGET)/include
 +      cp -rfv $(UCLIBC_HEADERS_DIR)/* $(UCLIBC_CC_CORE_STATIC_DIR)/$(UCLIBC_TARGET)/include
 +
 +      cd $(DIR_SRC)/gcc-build && CC_FOR_BUILD="$(HOST_GCC)" ../$(THISAPP)/configure \
 +                                              --target=$(UCLIBC_TARGET) \
 +                                              --prefix=$(UCLIBC_CC_CORE_STATIC_DIR) \
 +                                              --with-local-prefix=$(UCLIBC_SYSROOT_DIR) \
 +                                              --disable-multilib \
 +                                              --with-newlib \
 +                                              --with-sysroot=$(UCLIBC_SYSROOT_DIR) \
 +                                              --enable-__cxa_atexit \
 +                                              --disable-nls \
 +                                              --enable-threads=no \
 +                                              --enable-symvers=gnu \
 +                                              --enable-languages=c \
 +                                              --disable-shared \
 +                                              --enable-target-optspace
 +      cd $(DIR_SRC)/gcc-build && make $(PARALLELISMFLAGS) all-gcc
 +      cd $(DIR_SRC)/gcc-build && make install-gcc
 +endif
 +
 +ifeq "$(PASS)" "2"
 +      cd $(DIR_SRC)/gcc-build && CC_FOR_BUILD="$(HOST_GCC)" ../$(THISAPP)/configure \
 +                                              --target=$(UCLIBC_TARGET) \
 +                                              --prefix=$(UCLIBC_DIR) \
 +                                              --with-local-prefix=$(UCLIBC_SYSROOT_DIR) \
 +                                              --disable-multilib \
 +                                              --with-sysroot=$(UCLIBC_SYSROOT_DIR) \
 +                                              --enable-__cxa_atexit \
 +                                              --disable-nls \
 +                                              --enable-threads=posix \
 +                                              --enable-symvers=gnu \
 +                                              --enable-c99 \
 +                                              --enable-long-long \
 +                                              --enable-languages=c,c++ \
 +                                              --enable-target-optspace \
 +                                              --enable-shared
 +      cd $(DIR_SRC)/gcc-build && make $(PARALLELISMFLAGS)
 +      cd $(DIR_SRC)/gcc-build && make install
 +
 +      ln -svf $(UCLIBC_DIR)/bin/$(UCLIBC_TARGET)-gcc \
 +              $(UCLIBC_DIR)/bin/$(UCLIBC_TARGET)-cc
 +      cp -vaf $(UCLIBC_DIR)/$(UCLIBC_TARGET)/lib/* $(UCLIBC_SYSROOT_DIR)/usr/lib
 +endif
 +endif
 +
        @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build
        @$(POSTBUILD)
diff --cc lfs/gettext
index bda46833742217495042204258645e2c3e167d8f,b366d84cf38e020d78875d83392b00aef24c0ddb..66f00d02f956f649f48ad55ba8a4e30e0801ea97
@@@ -62,8 -62,8 +62,8 @@@ ifeq "$(STAGE)" "toolchain
  endif
  
  ifeq "$(STAGE)" "base"
-       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && ./configure --prefix=/usr --disable-static
 -      cd $(DIR_APP) && make -j $(PARALLELISM)
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS)
        cd $(DIR_APP) && make install
  endif
  
diff --cc lfs/glibc
index b84c620b0d260043ca8d5e344fa1d63ba57d2ef2,c3e10273408c57611005fd1b21375b0bdf75fd27..bc74de6979a16cc0865fffd742b743e4e4f26417
+++ b/lfs/glibc
@@@ -62,20 -82,30 +82,30 @@@ $(TARGET) 
        @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
        @mkdir $(DIR_SRC)/glibc-build
  
- ifeq "$(firstword $(MAKEFILE_LIST))" "$(PKG_NAME)"
-       #
-       # Normal build
-       #
-       
  ifeq "$(STAGE)" "toolchain"
-       cd $(DIR_SRC)/glibc-build && echo "CFLAGS += -march=$(MACHINE)" > configparms
-       cd $(DIR_SRC)/glibc-build && CFLAGS="$(CFLAGS)" ../$(THISAPP)/configure \
-               --prefix=$(TOOLS_DIR) --disable-profile --enable-add-ons \
-               --enable-kernel=2.6.0 --with-binutils=$(TOOLS_DIR)/bin \
-               --without-gd --with-headers=$(TOOLS_DIR)/include \
-               --without-selinux
-               
+ ifeq "$(MACHINE)" "i586"
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-i586_chk-2.patch
+ endif
+ ifeq "$(PAX)" "1"
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-pt_pax-1.patch
+ endif
+       cd $(DIR_SRC)/glibc-build && CFLAGS="-O2 -march=$(MACHINE) -pipe" \
+               ../$(THISAPP)/configure \
+                       --prefix=$(TOOLS_DIR) \
+                       --host=$(IFS_TARGET) \
+                       --build=$(shell $(DIR_APP)/scripts/config.guess) \
+                       --disable-profile \
+                       --enable-add-ons \
+                       --enable-kernel=2.6.0 \
+                       --with-headers=$(TOOLS_DIR)/include \
+                       --without-selinux \
+                       --without-gd \
+                       --enable-bind-now \
+                       libc_cv_initfini_array=yes \
+                       libc_cv_forced_unwind=yes \
+                       libc_cv_c_cleanup=yes
+                       #--with-binutils=$(TOOLS_DIR)/bin
 -      cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=-j$(PARALLELISM)
 +      cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(PARALLELISMFLAGS)
        -mkdir -v $(TOOLS_DIR)/etc
        touch $(TOOLS_DIR)/etc/ld.so.conf
        cd $(DIR_SRC)/glibc-build && make install
@@@ -88,60 -124,85 +124,85 @@@ endi
        cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=$(LINKER) -o|' \
                scripts/test-installation.pl
        cd $(DIR_APP) && sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in
-       cd $(DIR_SRC)/glibc-build && echo "CFLAGS += -march=$(MACHINE)" > configparms
-       cd $(DIR_SRC)/glibc-build && ../$(THISAPP)/configure --prefix=/usr \
-     --disable-profile --enable-add-ons --enable-kernel=2.6.0 \
-               --libexecdir=/usr/lib/glibc
-       
+ ifeq "$(PAX)" "1"
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-pt_pax-1.patch
+ endif
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-arc4_prng-1.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-strlcpy_strlcat-1.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-asprintf_reset2null-1.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-issetugid-1.patch
+       cd $(DIR_APP) && sed 's/#define UNSECURE_ENVVARS.*/&\
+               "MUDFLAP_OPTIONS\\0" \\/' -i.orig sysdeps/generic/unsecvars.h
+ ifeq "$(SSP)" "1"
+       cd $(DIR_APP) && sed 's/-nostdlib/& -fno-stack-protector/g' -i.orig configure
+       cd $(DIR_APP) && sed 's/fstack-protector/&-all/' -i.orig nscd/Makefile
+ endif
+ ifeq "$(PIE)" "1"
+       cd $(DIR_APP) && sed 's/CFLAGS-ldconfig.c =/& -fno-PIC -fno-PIE/' \
+               -i.orig elf/Makefile
+ endif
+       cd $(DIR_SRC)/glibc-build && \
+               CFLAGS="-O2 -march=$(MACHINE) -pipe" \
+               ../$(THISAPP)/configure $(CONFIGURE_ARGS)
+ ifeq "$(SSP)" "1"
+       ## First compile the libraries
+       echo "build-programs=no" >> $(DIR_SRC)/glibc-build/configparms
+       echo "CC = gcc -fPIC -fno-stack-protector -U_FORTIFY_SOURCE -nonow -nopie" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo "CXX = g++ -fPIC -fno-stack-protector -U_FORTIFY_SOURCE -nonow -nopie" \
+               >> $(DIR_SRC)/glibc-build/configparms
 -      cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=-j$(PARALLELISM)
++      cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(PARALLELISMFLAGS)
+       ## Second compile the rest
+       @rm -f $(DIR_SRC)/glibc-build/configparms
+       echo "CC = gcc -fPIE -fstack-protector-all -D_FORTIFY_SOURCE=2" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo "CXX = g++ -fPIE -fstack-protector-all -D_FORTIFY_SOURCE=2" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo "CFLAGS-sln.c += -fno-PIC -fno-PIE" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo "+link = \$$(CC) -nostdlib -nostartfiles -fPIE -pie -o \$$@ \\" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo " \$$(sysdep-LDFLAGS) \$$(config-LDFLAGS) \$$(LDFLAGS) \$$(LDFLAGS-\$$(@F)) \\" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo " -Wl,-z,combreloc -Wl,-z,relro -Wl,-z,now \$$(hashstyle-LDFLAGS) \\" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo " \$$(addprefix \$$(csu-objpfx),S\$$(start-installed-name)) \\" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo " \$$(+preinit) `\$$(CC) --print-file-name=crtbeginS.o` \\" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo " \$$(filter-out \$$(addprefix \$$(csu-objpfx),start.o \\" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo " \$$(start-installed-name))\\" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo " \$$(+preinit) \$$(link-extra-libs) \\" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo " \$$(common-objpfx)libc% \$$(+postinit),\$$^) \\" \
+               >> $(DIR_SRC)/glibc-build/configparms
+       echo " \$$(link-extra-libs) \$$(link-libc) `\$$(CC) --print-file-name=crtendS.o` \$$(+postinit)" \
+               >> $(DIR_SRC)/glibc-build/configparms
+ endif
 -      cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=-j$(PARALLELISM)
 +      cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(PARALLELISMFLAGS)
        touch /etc/ld.so.conf
        cd $(DIR_SRC)/glibc-build && make install
-       
+       install -vd /usr/lib/static/
+       mv -v /usr/lib/{libbsd-compat,libg,libieee,libmcheck}.a /usr/lib/static/
+       mv -v /usr/lib/{libBrokenLocale,libanl,libcrypt}.a /usr/lib/static/
+       mv -v /usr/lib/{libm,libnsl,libpthread,libresolv}.a /usr/lib/static/
+       mv -v /usr/lib/{librpcsvc,librt,libutil}.a /usr/lib/static/
        # Locales
-       -mkdir -pv /usr/lib/locale
-       localedef -i de_DE -f UTF-8 de_DE.UTF-8
-       localedef -i de_DE -f ISO-8859-1 de_DE
-       localedef -i en_US -f UTF-8 en_US.UTF-8
-       localedef -i en_US -f ISO-8859-1 en_US
-       localedef -i en_GB -f UTF-8 en_GB.UTF-8
-       localedef -i en_GB -f ISO-8859-1 en_GB
-       
+       cd $(DIR_SRC)/glibc-build && make localedata/install-locales
        # Timezone
        cp -v --remove-destination /usr/share/zoneinfo/GMT /etc/localtime
- endif
- else
-       #
-       # Cross build
-       #
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-libgcc_eh-1.patch
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-localedef_segfault-1.patch
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-i586_chk-1.patch
-       
-       echo "libc_cv_forced_unwind=yes" > $(DIR_SRC)/glibc-build/config.cache
-       echo "libc_cv_c_cleanup=yes"            >> $(DIR_SRC)/glibc-build/config.cache
-       
-       cd $(DIR_SRC)/glibc-build && BUILD_CC="gcc" \
-                                                                                                                                       CC="$(IFS_TARGET)-gcc" \
-                                                                                                                                       AR="$(IFS_TARGET)-ar" \
-                                                                                                                                       RANLIB="$(IFS_TARGET)-ranlib" \
-                                                                                                                                       CFLAGS="-march=$$(cut -d- -f1 <<< $(IFS_TARGET)) -mtune=generic -g -O2" \
-                                                                                                                                       ../$(THISAPP)/configure \
-                                                                                                                                       --prefix=$(TOOLS_DIR) \
-                                                                                                                                       --host=${IFS_TARGET} \
-                                                                                                                                       --build=$(IFS_HOST) \
-                                                                                                                                       --disable-profile \
-                                                                                                                                       --enable-add-ons \
-                                                                                                                                       --with-tls \
-                                                                                                                                       --enable-kernel=2.6.0 \
-                                                                                                                                       --with-__thread \
-                                                                                                                                       --with-binutils=$(CTOOLS_DIR)/bin \
-                                                                                                                                       --with-headers=$(TOOLS_DIR)/include \
-                                                                                                                                       --cache-file=config.cache
        
-       cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(PARALLELISMFLAGS)
-       cd $(DIR_SRC)/glibc-build && make install
+       # Set up ld.so.conf
+       echo -e "# Begin /etc/ld.so.conf\n"     >> /etc/ld.so.conf
+       echo -e "/usr/local/lib\n"              >> /etc/ld.so.conf
+       echo    "# End /etc/ld.so.conf"         >> /etc/ld.so.conf
  endif
  
        @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build
diff --cc lfs/grub
Simple merge
diff --cc lfs/gzip
index 95da0104d575932c84229ac7d481a5204ef3a854,9db47e49e16fcbfddfbe23e0135b2ce9d9217219..5c66fe08413e6ff0bde2e58df609ffd19bd354c7
+++ b/lfs/gzip
@@@ -61,8 -61,13 +61,13 @@@ ifeq "$(STAGE)" "toolchain
                        sed 's/futimens/gl_&/' $$file.orig > $$file; \
                done
  
+ ifeq "$(PIE)" "1"
+       ## Don't use assembler code because this is not position independent.
+       cd $(DIR_APP) && DEFS=NO_ASM ./configure --prefix=$(TOOLS_DIR)
+ else
        cd $(DIR_APP) && ./configure --prefix=$(TOOLS_DIR)
 -      cd $(DIR_APP) && make -j $(PARALLELISM)
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS)
+ endif
        cd $(DIR_APP) && make install
  endif
  
diff --cc lfs/libtool
index f10f6a36d22f991bf71940fbafc8dedebcc5897f,c482444098430472afbb65c1762f19a850e2a686..d2a6efcff139a11a236f5fe53f6211a75f4d960c
@@@ -50,11 -50,11 +50,11 @@@ $(objects) 
  # Installation Details
  ###############################################################################
  
 -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 +$(TARGET) : 
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && ./configure --prefix=/usr --disable-static
 -      cd $(DIR_APP) && make -j $(PARALLELISM)
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --cc lfs/readline
index edfc081c41fa5873e9dd0c3424974752f876bd2b,ec56e7a61656b09fcc22636b08c44d7c99a18656..e985374b9986a3cd7746f974aafdc1bbf896d826
@@@ -56,11 -56,10 +56,10 @@@ $(TARGET) 
        cd $(DIR_APP) && sed -i '/MV.*old/d' Makefile.in
        cd $(DIR_APP) && sed -i '/{OLDSUFF}/c:' support/shlib-install
        cd $(DIR_APP) && patch -Np1 -i $(DIR_PATCHES)/$(THISAPP)-fixes-5.patch
 -      
 -      cd $(DIR_APP) && ./configure --prefix=/usr --libdir=/lib --disable-static
 -      
 -      cd $(DIR_APP) && make -j $(PARALLELISM) SHLIB_LIBS=-lncurses
 +
 +ifeq "$(STAGE)" "base"
-       cd $(DIR_APP) && ./configure --prefix=/usr --libdir=/lib
-       
++      cd $(DIR_APP) && ./configure --prefix=/usr --libdir=/lib  --disable-static
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS) SHLIB_LIBS=-lncurses
        cd $(DIR_APP) && make install
        
        mv -v /lib/lib{readline,history}.a /usr/lib
diff --cc lfs/strip
Simple merge
diff --cc lfs/zlib
index 2d9ebc476c0b88d41c29b2fe9e121b488c5fab90,a4712eca816bdd86a5b517b9321d7b893f914a48..038a56e412fa15530272736382c73b3b448f2f7b
+++ b/lfs/zlib
@@@ -63,27 -62,6 +63,20 @@@ ifeq "$(STAGE)" "base
        
        rm -v /lib/libz.so
        ln -sfv ../../lib/libz.so.$(VER) /usr/lib/libz.so
-       
-       cd $(DIR_APP) && make clean
-       cd $(DIR_APP) && ./configure --prefix=/usr
-       cd $(DIR_APP) && make $(PARALLELISMFLAGS)
-       cd $(DIR_APP) && make install
--      
-       chmod -v 644 /usr/lib/libz.a
 +endif
 +
 +ifeq "$(STAGE)" "installer"
 +      cd $(DIR_APP) && $(U_TOOLS) ./configure --prefix=/usr \
 +                                                      --shared \
 +                                                      --libdir=/lib
 +      cd $(DIR_APP) && make $(PARALLELISMFLAGS)
 +      cd $(DIR_APP) && install -v -m 644 zlib.h zconf.h \
 +              $(INSTALLER_DIR)/usr/include
 +      cd $(DIR_APP) && install -v -m 755 libz.so.$(VER) \
 +              $(INSTALLER_DIR)/usr/lib
 +      ln -svf libz.so.$(VER) $(INSTALLER_DIR)/usr/lib/libz.so.1
 +      ln -svf libz.so.$(VER) $(INSTALLER_DIR)/usr/lib/libz.so
 +endif
 +
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --cc make.sh
index e2929bcdb5c642ca741818207e7a617d7a8c0e7c,8eabb6a0d126a4546d6e7944890816369b7de5a6..a62728442e622b6afb30a80193cab064983f821e
+++ b/make.sh
  ############################################################################
  #
  
 -NAME="IPFire"                                                                         # Software name
 -SNAME="ipfire"                                                                        # Short name
 -VERSION="3.0-prealpha"                                        # Version number
 +NAME="IPFire"                 # Software name
 +SNAME="ipfire"                        # Short name
 +VERSION="3.0-prealpha"                # Version number
- TOOLCHAINVERSION="${VERSION}-3"       # Toolchain
+ TOOLCHAINVERSION="${VERSION}-4"       # Toolchain
 -SLOGAN="www.ipfire.org"                                       # Software slogan
 +SLOGAN="www.ipfire.org"               # Software slogan
  
  # Include funtions
  . tools/make-include
index ac33deb49726c9c3aa495d2cbf18b14ae076f2f6,9ed5c409f6c977b5201ac74d600a47cc8bfd57ce..bb5f5b2b302ba0489e08ca80fe820d573f92a320
@@@ -31,8 -31,13 +31,13 @@@ KVER=`grep --max-count=1 VER lfs/linux 
  MACHINE_REAL=`uname -m`
  GIT_TAG=$(git tag | tail -1)
  
+ # Security options
+ SSP=1
+ PIE=1
+ PAX=1
  # Parallelism flag
 -PARALLELISM=$(( $(grep processor < /proc/cpuinfo | wc -l) * 2 + 1 ))
 +PARALLELISMFLAGS=-j$(( $(grep processor < /proc/cpuinfo | wc -l) * 2 + 1 ))
  DISTCC_HOSTS=localhost
  
  PWD=`pwd`
@@@ -679,10 -685,9 +711,10 @@@ prepareenv() 
        unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
  
        # Make some extra directories
-       mkdir -p $BASEDIR/build_${MACHINE}/{$TOOLS_DIR,$CTOOLS_DIR,cdrom} 2>/dev/null
 -      mkdir -p $BASEDIR/build_${MACHINE}/{$TOOLS_DIR,$INSTALLER_DIR,cdrom,images} 2>/dev/null
++      mkdir -p $BASEDIR/build_${MACHINE}/{$TOOLS_DIR,cdrom} 2>/dev/null
        mkdir -p $BASEDIR/{cache,ccache,distcc} 2>/dev/null
-       mkdir -p $LFS/{$TOOLS_DIR/usr,$CTOOLS_DIR,usr/src} 2>/dev/null
 +      mkdir -p $BASEDIR/cache/toolchains 2>/dev/null
+       mkdir -p $LFS/{$TOOLS_DIR/usr,usr/src} 2>/dev/null
        mkdir -p $LFS/dev/pts
        mkdir -p $LFS/proc
        mkdir -p $LFS/usr/src/{cache,config,doc,lfs,log_${MACHINE},src,ccache,distcc}
        mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null
  
        # Make all sources and proc available under lfs build
 -      mount --bind /dev                                                                                                                                                                       $LFS/dev
 -  mount --bind /proc                                                                                                                                                          $LFS/proc
 -      mount --bind $BASEDIR/cache                                                                                                                             $LFS/usr/src/cache
 -      mount --bind $BASEDIR/ccache                                                                                                                    $LFS/usr/src/ccache
 -      mount --bind $BASEDIR/distcc                                                                                                                    $LFS/usr/src/distcc
 -      mount --bind $BASEDIR/config                                                                                                                    $LFS/usr/src/config
 -      mount --bind $BASEDIR/doc                                                                                                                                       $LFS/usr/src/doc
 -      mount --bind $BASEDIR/lfs                                                                                                                                       $LFS/usr/src/lfs
 -      mount --bind $BASEDIR/log_${MACHINE}                                                                                    $LFS/usr/src/log_${MACHINE}
 -      mount --bind $BASEDIR/src                                                                                                                                       $LFS/usr/src/src
 -      mount --bind $BASEDIR/build_${MACHINE}/$TOOLS_DIR                                       $LFS/$TOOLS_DIR
 -      mount --bind $BASEDIR/build_${MACHINE}/$INSTALLER_DIR                   $LFS/$INSTALLER_DIR
 -      mount --bind $BASEDIR/build_${MACHINE}/$CDROM_DIR                                       $LFS/$CDROM_DIR
 -      mount --bind $BASEDIR/build_${MACHINE}/$IMAGES_DIR                              $LFS/$IMAGES_DIR
 +      mount --bind /dev                                       $LFS/dev
 +      mount --bind /proc                                      $LFS/proc
 +      mount --bind $BASEDIR/cache                             $LFS/usr/src/cache
 +      mount --bind $BASEDIR/ccache                            $LFS/usr/src/ccache
 +      mount --bind $BASEDIR/distcc                            $LFS/usr/src/distcc
 +      mount --bind $BASEDIR/config                            $LFS/usr/src/config
 +      mount --bind $BASEDIR/doc                               $LFS/usr/src/doc
 +      mount --bind $BASEDIR/lfs                               $LFS/usr/src/lfs
 +      mount --bind $BASEDIR/log_${MACHINE}                    $LFS/usr/src/log_${MACHINE}
 +      mount --bind $BASEDIR/src                               $LFS/usr/src/src
 +      mount --bind $BASEDIR/build_${MACHINE}/$TOOLS_DIR       $LFS/$TOOLS_DIR
-       mount --bind $BASEDIR/build_${MACHINE}/$CTOOLS_DIR      $LFS/$CTOOLS_DIR
 +      mount --bind $BASEDIR/build_${MACHINE}/$CDROM_DIR       $LFS/$CDROM_DIR
  
        # Run LFS static binary creation scripts one by one
        export CCACHE_DIR=$BASEDIR/ccache