From 0d50b215bf341f98fadfa2eb17ddc8d4c6aefd18 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 7 Nov 2012 16:58:21 +0000 Subject: [PATCH] Toolchain update libgmp 5.0.5, libmpfr 3.1.1, libmpc 1.0.1, binutils 2.22, glibc 2.16.0, gcc 4.7.2 First attempt to make a generic hardfp build with optimized files per device options. It breaks initrd creation when it tries to load the included file from its Makefile as it picks current directory ($pwd/initrd) to look for that include instead of toolchain path. Fixed builds: binutils: Removed patch binutils-2.21.1-gnueabihf.patch. Fixed in last sources (binutils 2.22) gcc-static: --disable-libquadmath (arm hasn't __float128) Adapted gcc-4.7.2-gnueabihf.patch glibc: "libc_cv_ctors_header=yes" (gcc constructor support is configured without the configure test) Removed patch glibc-2.13-gnueabihf.patch. Fixed in last sources (glibc 2.16.0) Removed patch glibc-2.13-prelink.patch gcc-final: --disable-bootstrap (removed the three times build bootstrap) --disable-libgomp (not needed for cross compilations) --disable-libstdcxx-pch (don't build the pre-compiled header (PCH) for libstdc++) --enable-c99 --enable-long-long (removed these options as in softfp) --- Makefile | 19 +-- efikamx.mk | 8 ++ generic.mk | 4 + raspberrypi.mk | 8 ++ vars.mk | 31 +++-- work/binutils-2.21.1-gnueabihf.patch | 35 ------ work/gcc-4.6.1-gnueabihf.patch | 166 --------------------------- work/gcc-4.7.2-gnueabihf.patch | 135 ++++++++++++++++++++++ work/glibc-2.13-gnueabihf.patch | 11 -- work/glibc-2.13-prelink.patch | 26 ----- work/libmpfr-3.1.1-p2.patch.gz | Bin 0 -> 3597 bytes 11 files changed, 179 insertions(+), 264 deletions(-) create mode 100644 efikamx.mk create mode 100644 generic.mk create mode 100644 raspberrypi.mk delete mode 100644 work/binutils-2.21.1-gnueabihf.patch delete mode 100644 work/gcc-4.6.1-gnueabihf.patch create mode 100644 work/gcc-4.7.2-gnueabihf.patch delete mode 100644 work/glibc-2.13-gnueabihf.patch delete mode 100644 work/glibc-2.13-prelink.patch create mode 100644 work/libmpfr-3.1.1-p2.patch.gz diff --git a/Makefile b/Makefile index da7e72b..177b39c 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ distclean: clean linux-headers-distclean libgmp-distclean libmpfr-distclean libm # LINUX HEADERS $(WORK)/linux-$(KERNEL_HEADERS_VERSION).tar.bz2: - wget -P $(WORK) -c ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$(KERNEL_HEADERS_VERSION).tar.bz2 + wget -P $(WORK) -c ftp://ftp.kernel.org/pub/linux/kernel/v3.0/linux-$(KERNEL_HEADERS_VERSION).tar.bz2 $(WORK)/linux-$(KERNEL_HEADERS_VERSION): $(WORK)/linux-$(KERNEL_HEADERS_VERSION).tar.bz2 tar -C $(WORK) -xvjf $(WORK)/linux-$(KERNEL_HEADERS_VERSION).tar.bz2 @@ -71,8 +71,10 @@ libgmp-distclean: libgmp-clean $(WORK)/mpfr-$(LIBMPFR_VERSION).tar.bz2: wget -P $(WORK) -c http://ftp.gnu.org/gnu/mpfr/mpfr-$(LIBMPFR_VERSION).tar.bz2 -$(WORK)/mpfr-$(LIBMPFR_VERSION): $(WORK)/mpfr-$(LIBMPFR_VERSION).tar.bz2 +$(WORK)/mpfr-$(LIBMPFR_VERSION): $(WORK)/mpfr-$(LIBMPFR_VERSION).tar.bz2 $(WORK)/libmpfr-3.1.1-p2.patch.gz tar -C $(WORK) -xvjf $(WORK)/mpfr-$(LIBMPFR_VERSION).tar.bz2 + cd $(WORK)/mpfr-$(LIBMPFR_VERSION) && \ + gunzip -c $(WORK)/libmpfr-$(LIBMPFR_VERSION)-p2.patch.gz | patch -p1 touch $(WORK)/mpfr-$(LIBMPFR_VERSION) $(WORK)/build-libmpfr: $(WORK)/mpfr-$(LIBMPFR_VERSION) @@ -132,8 +134,7 @@ $(WORK)/binutils-$(BINUTILS_VERSION).tar.bz2: $(WORK)/binutils-$(BINUTILS_VERSION): $(WORK)/binutils-$(BINUTILS_VERSION).tar.bz2 tar -C $(WORK) -xvjf $(WORK)/binutils-$(BINUTILS_VERSION).tar.bz2 - cd $(WORK)/binutils-$(BINUTILS_VERSION) && \ - patch -p1 -i $(WORK)/binutils-$(BINUTILS_VERSION)-gnueabihf.patch + sed -i '/^SUBDIRS/s/doc//' $(WORK)/binutils-$(BINUTILS_VERSION)/*/Makefile.in touch $(WORK)/binutils-$(BINUTILS_VERSION) $(WORK)/build-binutils: $(WORK)/binutils-$(BINUTILS_VERSION) @@ -184,7 +185,7 @@ $(CROSSTOOLS)/lib/gcc: $(WORK)/build-gcc-static $(WORK)/gcc-$(GCC_VERSION) --without-headers --enable-__cxa_atexit --enable-symvers=gnu --disable-decimal-float \ --disable-libgomp --disable-libmudflap --disable-libssp \ --with-mpfr=$(CROSSTOOLS) --with-gmp=$(CROSSTOOLS) --with-mpc=$(CROSSTOOLS) \ - --disable-shared --disable-threads --enable-languages=c \ + --disable-shared --disable-threads --enable-languages=c --disable-libquadmath \ --with-abi=$(ABI) --with-arch=$(ARCH) --with-mode=$(MODE) --with-float=$(FLOAT) --with-fpu=$(FPU) && \ make all-gcc all-target-libgcc && make install-gcc install-target-libgcc || exit 1 touch $(CROSSTOOLS)/lib/gcc @@ -210,9 +211,7 @@ $(WORK)/glibc-$(GLIBC_VERSION): $(WORK)/glibc-$(GLIBC_VERSION).tar.bz2 $(WORK)/g cd $(WORK)/glibc-$(GLIBC_VERSION) && \ tar xvjf $(WORK)/glibc-ports-$(GLIBC_VERSION).tar.bz2 && \ mv glibc-ports-$(GLIBC_VERSION) ports && \ - patch -p1 -i $(WORK)/glibc-$(GLIBC_VERSION)-gnueabihf.patch && \ - patch -p1 -i $(WORK)/glibc-$(GLIBC_VERSION)-prelink.patch && \ - sed -e 's/-lgcc_eh//g' -i Makeconfig + sed -e 's/-lgcc_eh//g' -e 's/-lgcc_s//g' -i Makeconfig touch $(WORK)/glibc-$(GLIBC_VERSION) $(WORK)/build-glibc: $(WORK)/glibc-$(GLIBC_VERSION) @@ -225,6 +224,7 @@ $(CLFS)/usr/lib/libc.so: $(WORK)/build-glibc $(WORK)/glibc-$(GLIBC_VERSION) echo "libc_cv_forced_unwind=yes" > config.cache && \ echo "libc_cv_c_cleanup=yes" >> config.cache && \ echo "libc_cv_gnu89_inline=yes" >> config.cache && \ + echo "libc_cv_ctors_header=yes" >> config.cache && \ echo "install_root=$(CLFS)" > configparms && \ unset CFLAGS && unset CXXFLAGS && \ BUILD_CC="gcc" CC="$(TARGET)-gcc" AR="$(TARGET)-ar" \ @@ -260,7 +260,8 @@ $(CLFS)/lib/gcc: $(WORK)/build-gcc-final $(WORK)/gcc-$(GCC_VERSION) --build=$(HOST) --host=$(HOST) --target=$(TARGET) \ --with-headers=$(CLFS)/usr/include --enable-shared \ --disable-multilib --with-sysroot=$(CLFS) --disable-nls \ - --enable-languages=c,c++ --enable-__cxa_atexit --enable-c99 --enable-long-long --enable-threads=posix \ + --enable-languages=c,c++ --enable-__cxa_atexit \ + --enable-threads=posix --disable-libstdcxx-pch --disable-bootstrap --disable-libgomp \ --with-mpfr=$(CROSSTOOLS) --with-gmp=$(CROSSTOOLS) --with-mpc=$(CROSSTOOLS) \ --with-abi=$(ABI) --with-arch=$(ARCH) --with-mode=$(MODE) --with-float=$(FLOAT) --with-fpu=$(FPU) && \ make AS_FOR_TARGET="$(TARGET)-as" LD_FOR_TARGET="$(TARGET)-ld" && \ diff --git a/efikamx.mk b/efikamx.mk new file mode 100644 index 0000000..48c7cca --- /dev/null +++ b/efikamx.mk @@ -0,0 +1,8 @@ +# Hardfp EfikaMX imx51 +ABI = aapcs-linux +ARCH = armv7-a +FPU = vfpv3-d16 +MODE = thumb +FLOAT = hard + +# End of file diff --git a/generic.mk b/generic.mk new file mode 100644 index 0000000..b894fb4 --- /dev/null +++ b/generic.mk @@ -0,0 +1,4 @@ +# Generic hardfp toolchain +ABI = aapcs-linux +MODE = arm +FLOAT = hard diff --git a/raspberrypi.mk b/raspberrypi.mk new file mode 100644 index 0000000..e96c6a3 --- /dev/null +++ b/raspberrypi.mk @@ -0,0 +1,8 @@ +# Hardfp raspberrypi +ABI = aapcs-linux +ARCH = armv6zk +FPU = vfp +MODE = thumb +FLOAT = hard + +# End of file diff --git a/vars.mk b/vars.mk index 54761f2..e273fe4 100644 --- a/vars.mk +++ b/vars.mk @@ -5,24 +5,21 @@ HOST = $(shell echo $$MACHTYPE | sed "s/$$(echo $$MACHTYPE | cut -d- -f2)/cross/") TARGET = arm-crux-linux-gnueabihf -PWD = $(shell pwd) -CLFS = $(PWD)/clfs -CROSSTOOLS = $(PWD)/crosstools -WORK = $(PWD)/work +TOPDIR = $(shell pwd) +CLFS = $(TOPDIR)/clfs +CROSSTOOLS = $(TOPDIR)/crosstools +WORK = $(TOPDIR)/work -KERNEL_HEADERS_VERSION = 2.6.35.6 -LIBGMP_VERSION = 5.0.2 -LIBMPFR_VERSION = 3.1.0 -LIBMPC_VERSION = 0.9 -BINUTILS_VERSION = 2.21.1 -GCC_VERSION = 4.6.1 -GLIBC_VERSION = 2.13 +KERNEL_HEADERS_VERSION = 3.5.4 +LIBGMP_VERSION = 5.0.5 +LIBMPFR_VERSION = 3.1.1 +LIBMPC_VERSION = 1.0.1 +BINUTILS_VERSION = 2.22 +GCC_VERSION = 4.7.2 +GLIBC_VERSION = 2.16.0 -# Hardfp EfikaMX imx51 -ABI = aapcs-linux -ARCH = armv7-a -FPU = vfpv3-d16 -MODE = thumb -FLOAT = hard +# Optimizations per device: generic/efikamx/raspberrypi +DEVICE=generic +include $(TOPDIR)/$(DEVICE).mk # End of file diff --git a/work/binutils-2.21.1-gnueabihf.patch b/work/binutils-2.21.1-gnueabihf.patch deleted file mode 100644 index 10d7017..0000000 --- a/work/binutils-2.21.1-gnueabihf.patch +++ /dev/null @@ -1,35 +0,0 @@ -=================================================================== -RCS file: /cvs/src/src/ld/configure.tgt,v -retrieving revision 1.244 -retrieving revision 1.245 -diff -u -r1.244 -r1.245 ---- src/ld/configure.tgt 2011/04/07 01:19:22 1.244 -+++ src/ld/configure.tgt 2011/04/08 16:05:12 1.245 -@@ -71,7 +71,7 @@ - arm*-*-symbianelf*) targ_emul=armsymbian;; - arm-*-kaos*) targ_emul=armelf ;; - arm9e-*-elf) targ_emul=armelf ;; --arm*b-*-linux-*eabi) targ_emul=armelfb_linux_eabi -+arm*b-*-linux-*eabi*) targ_emul=armelfb_linux_eabi - targ_extra_emuls=armelf_linux_eabi - targ_extra_libpath=$targ_extra_emuls - ;; -@@ -79,7 +79,7 @@ - targ_extra_emuls="armelfb armelf armelf_linux" - targ_extra_libpath="armelf_linux" - ;; --arm*-*-linux-*eabi) targ_emul=armelf_linux_eabi -+arm*-*-linux-*eabi*) targ_emul=armelf_linux_eabi - targ_extra_emuls=armelfb_linux_eabi - targ_extra_libpath=$targ_extra_emuls - ;; -@@ -87,7 +87,7 @@ - targ_extra_emuls="armelf armelfb armelfb_linux" - targ_extra_libpath="armelfb_linux" - ;; --arm*-*-uclinux*eabi) targ_emul=armelf_linux_eabi -+arm*-*-uclinux*eabi*) targ_emul=armelf_linux_eabi - targ_extra_emuls=armelfb_linux_eabi - targ_extra_libpath=$targ_extra_emuls - ;; - diff --git a/work/gcc-4.6.1-gnueabihf.patch b/work/gcc-4.6.1-gnueabihf.patch deleted file mode 100644 index 49059d3..0000000 --- a/work/gcc-4.6.1-gnueabihf.patch +++ /dev/null @@ -1,166 +0,0 @@ -http://gcc.gnu.org/ml/gcc/2011-02/msg00390.html - -Triplet for ARM Linux HardFP ABI, again - - * From: Guillem Jover - * To: gcc at gcc dot gnu dot org - * Date: Mon, 21 Feb 2011 11:12:09 +0100 - * Subject: Triplet for ARM Linux HardFP ABI, again - - -diff --git a/configure b/configure -index 501c6ff..43ff04f 100755 ---- a/configure -+++ b/configure -diff --git a/configure b/configure -index 501c6ff..43ff04f 100755 ---- a/configure -+++ b/configure -@@ -3236,7 +3236,7 @@ case "${target}" in - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - libgloss_dir=arm - ;; -- arm*-*-linux-gnueabi) -+ arm*-*-linux-*eabi*) - noconfigdirs="$noconfigdirs target-qthreads" - case ${with_newlib} in - no) noconfigdirs="$noconfigdirs target-newlib target-libgloss" -diff --git a/configure.ac b/configure.ac -index 9121d65..e1a42e0 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -682,7 +682,7 @@ case "${target}" in - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - libgloss_dir=arm - ;; -- arm*-*-linux-gnueabi) -+ arm*-*-linux-*eabi*) - noconfigdirs="$noconfigdirs target-qthreads" - case ${with_newlib} in - no) noconfigdirs="$noconfigdirs target-newlib target-libgloss" -diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in -index b64ba55..cbe6b70 100644 ---- a/gcc/ada/gcc-interface/Makefile.in -+++ b/gcc/ada/gcc-interface/Makefile.in -@@ -1841,7 +1841,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),) - LIBRARY_VERSION := $(LIB_VERSION) - endif - --ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),) -+ifeq ($(strip $(filter-out arm% linux%,$(arch) $(osys))),) - LIBGNAT_TARGET_PAIRS = \ - a-intnam.ads - // -diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc -index d71c012..1086a18 100644 ---- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc -+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc -@@ -1,5 +1,5 @@ - // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" } --// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } } -+// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-*eabi* } } - - // 2007-05-03 Benjamin Kosnik - // - diff --git a/work/gcc-4.7.2-gnueabihf.patch b/work/gcc-4.7.2-gnueabihf.patch new file mode 100644 index 0000000..8a77a7a --- /dev/null +++ b/work/gcc-4.7.2-gnueabihf.patch @@ -0,0 +1,135 @@ +diff -pruN gcc-4.7.2.orig/gcc/ada/gcc-interface/Makefile.in gcc-4.7.2/gcc/ada/gcc-interface/Makefile.in +--- gcc-4.7.2.orig/gcc/ada/gcc-interface/Makefile.in 2012-08-06 14:34:27.000000000 +0000 ++++ gcc-4.7.2/gcc/ada/gcc-interface/Makefile.in 2012-11-06 14:25:52.708613671 +0000 +@@ -1867,7 +1867,7 @@ ifeq ($(strip $(filter-out powerpc% linu + LIBRARY_VERSION := $(LIB_VERSION) + endif + +-ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),) ++ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(arch) $(osys)-$(word 4,$(targ)))),) + LIBGNAT_TARGET_PAIRS = \ + a-intnam.adsl_info [ADDRIDX (DT_GNU_CONFLICT)] != NULL) -@@ -2288,10 +2292,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - lossage); - } - -- /* Remember the last search directory added at startup, now that -- malloc will no longer be the one from dl-minimal.c. */ -- GLRO(dl_init_all_dirs) = GL(dl_all_dirs); -- - if (! prelinked && rtld_multiple_ref) - { - /* There was an explicit ref to the dynamic linker as a shared lib. diff --git a/work/libmpfr-3.1.1-p2.patch.gz b/work/libmpfr-3.1.1-p2.patch.gz new file mode 100644 index 0000000000000000000000000000000000000000..4fe891ee7b50da3361da8df2de88b17cc18cda45 GIT binary patch literal 3597 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 literal 0 HcmV?d00001 -- 2.26.2