From 7dc1a9c7b849ea870c203ff2e9c09c63098c02c4 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 20 Dec 2006 13:38:24 +0000 Subject: [PATCH] gcc4: Sync with OE.dev git-svn-id: https://svn.o-hand.com/repos/poky/trunk@1063 311d38ba-8fff-0310-9ca6-ca027cbcb966 --- .../gcc-4.1.1/fix-ICE-in-arm_unwind_emit_set.diff | 18 ++++ .../gcc/gcc-4.1.1/gcc-4.1.1-pr13685-1.patch | 26 ++++++ meta/packages/gcc/gcc-4.1.1/unbreak-armv4t.patch | 12 +++ meta/packages/gcc/gcc-cross_4.1.1.bb | 2 +- meta/packages/gcc/gcc4-build.inc | 97 +--------------------- meta/packages/gcc/gcc_4.1.1.bb | 12 ++- 6 files changed, 69 insertions(+), 98 deletions(-) create mode 100644 meta/packages/gcc/gcc-4.1.1/fix-ICE-in-arm_unwind_emit_set.diff create mode 100644 meta/packages/gcc/gcc-4.1.1/gcc-4.1.1-pr13685-1.patch create mode 100644 meta/packages/gcc/gcc-4.1.1/unbreak-armv4t.patch diff --git a/meta/packages/gcc/gcc-4.1.1/fix-ICE-in-arm_unwind_emit_set.diff b/meta/packages/gcc/gcc-4.1.1/fix-ICE-in-arm_unwind_emit_set.diff new file mode 100644 index 0000000..568e15a --- /dev/null +++ b/meta/packages/gcc/gcc-4.1.1/fix-ICE-in-arm_unwind_emit_set.diff @@ -0,0 +1,18 @@ +--- trunk/gcc/config/arm/arm.c 2006/09/19 13:18:27 117055 ++++ trunk/gcc/config/arm/arm.c 2006/09/19 13:19:24 117056 +@@ -15415,6 +15415,15 @@ + /* Move from sp to reg. */ + asm_fprintf (asm_out_file, "\t.movsp %r\n", REGNO (e0)); + } ++ else if (GET_CODE (e1) == PLUS ++ && GET_CODE (XEXP (e1, 0)) == REG ++ && REGNO (XEXP (e1, 0)) == SP_REGNUM ++ && GET_CODE (XEXP (e1, 1)) == CONST_INT) ++ { ++ /* Set reg to offset from sp. */ ++ asm_fprintf (asm_out_file, "\t.movsp %r, #%d\n", ++ REGNO (e0), (int)INTVAL(XEXP (e1, 1))); ++ } + else + abort (); + break; diff --git a/meta/packages/gcc/gcc-4.1.1/gcc-4.1.1-pr13685-1.patch b/meta/packages/gcc/gcc-4.1.1/gcc-4.1.1-pr13685-1.patch new file mode 100644 index 0000000..a56b130 --- /dev/null +++ b/meta/packages/gcc/gcc-4.1.1/gcc-4.1.1-pr13685-1.patch @@ -0,0 +1,26 @@ +Submitted By: Alexander E. Patrakov +Date: 2006-12-11 +Initial Package Version: 4.1.1 +Upstream Status: backport +Origin: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28621 +Description: Fix crash of programs compiled with -Os -ffast-math +(affects procps on the LiveCD) +--- gcc-4.1.1/gcc/config/i386/i386.c ++++ gcc-4.1.1/gcc/config/i386/i386.c +@@ -1502,12 +1502,10 @@ + } + + /* Validate -mpreferred-stack-boundary= value, or provide default. +- The default of 128 bits is for Pentium III's SSE __m128, but we +- don't want additional code to keep the stack aligned when +- optimizing for code size. */ +- ix86_preferred_stack_boundary = (optimize_size +- ? TARGET_64BIT ? 128 : 32 +- : 128); ++ The default of 128 bits is for Pentium III's SSE __m128, We can't ++ change it because of optimize_size. Otherwise, we can't mix object ++ files compiled with -Os and -On. */ ++ ix86_preferred_stack_boundary = 128; + if (ix86_preferred_stack_boundary_string) + { + i = atoi (ix86_preferred_stack_boundary_string); diff --git a/meta/packages/gcc/gcc-4.1.1/unbreak-armv4t.patch b/meta/packages/gcc/gcc-4.1.1/unbreak-armv4t.patch new file mode 100644 index 0000000..b3399ab --- /dev/null +++ b/meta/packages/gcc/gcc-4.1.1/unbreak-armv4t.patch @@ -0,0 +1,12 @@ +diff -urN gcc-4.1.1/gcc/config/arm/linux-eabi.h gcc-4.1.1-arm9tdmi/gcc/config/arm/linux-eabi.h +--- gcc-4.1.1/gcc/config/arm/linux-eabi.h 2006-10-22 11:11:49.000000000 -0700 ++++ gcc-4.1.1-arm9tdmi/gcc/config/arm/linux-eabi.h 2006-10-24 21:34:01.000000000 -0700 +@@ -45,7 +45,7 @@ + The ARM10TDMI core is the default for armv5t, so set + SUBTARGET_CPU_DEFAULT to achieve this. */ + #undef SUBTARGET_CPU_DEFAULT +-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi + + #undef SUBTARGET_EXTRA_LINK_SPEC + #define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi" diff --git a/meta/packages/gcc/gcc-cross_4.1.1.bb b/meta/packages/gcc/gcc-cross_4.1.1.bb index 4c53017..5721dee 100644 --- a/meta/packages/gcc/gcc-cross_4.1.1.bb +++ b/meta/packages/gcc/gcc-cross_4.1.1.bb @@ -5,7 +5,7 @@ inherit cross FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}" # NOTE: split PR. If the main .oe changes something that affects its *build* # remember to increment this one too. -PR = "r6" +PR = "r9" DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native" PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++" diff --git a/meta/packages/gcc/gcc4-build.inc b/meta/packages/gcc/gcc4-build.inc index 817d8b5..b8a214a 100644 --- a/meta/packages/gcc/gcc4-build.inc +++ b/meta/packages/gcc/gcc4-build.inc @@ -1,97 +1,6 @@ -HAS_GFORTRAN = "no" +FORTRAN = ",f95" +HAS_GFORTRAN ?= "yes" HAS_G2C = "no" -MIRRORS_prepend () { -${GNU_MIRROR}/gcc/releases/ ftp://gcc.gnu.org/pub/gcc/releases/ -${GNU_MIRROR}/gcc/ http://mirrors.rcn.net/pub/sourceware/gcc/releases/ -${GNU_MIRROR}/gcc/releases/ http://gcc.get-software.com/releases/ -${GNU_MIRROR}/gcc/ http://gcc.get-software.com/releases/ -} - -gcclibdir ?= "${libdir}/gcc" -S = "${WORKDIR}/gcc-${PV}" -B = "${S}/build.${HOST_SYS}.${TARGET_SYS}" -BINV ?= "${PV}" - -# gcj doesn't work on some architectures -JAVA = ",java" -JAVA_arm = "" -JAVA_armeb = "" -JAVA_mipsel = "" -JAVA_sh3 = "" -# gcc4-build sets this to f95 -#FORTRAN ?= "f77" -#LANGUAGES ?= "c,c++,${JAVA}" -LANGUAGES ?= "c,c++,${JAVA}" - -EXTRA_OECONF = "${@['--enable-clocale=generic', ''][bb.data.getVar('USE_NLS', d, 1) != 'no']} \ - --with-gnu-ld \ - --enable-shared \ - --enable-target-optspace \ - --enable-languages=${LANGUAGES} \ - --enable-threads=posix \ - --enable-multilib \ - --enable-c99 \ - --enable-long-long \ - --enable-symvers=gnu \ - --enable-libstdcxx-pch \ - --program-prefix=${TARGET_PREFIX} \ - ${EXTRA_OECONF_PATHS} \ - ${EXTRA_OECONF_DEP}" - -EXTRA_OECONF_PATHS = " \ - --with-local-prefix=${prefix}/local \ - --with-gxx-include-dir=${includedir}/c++/${BINV}" - -EXTRA_OECONF_DEP = "" -EXTRA_OECONF_uclibc = "--disable-__cxa_atexit" -EXTRA_OECONF_glibc = "--enable-__cxa_atexit" -EXTRA_OECONF += "${@get_gcc_fpu_setting(bb, d)}" -CPPFLAGS = "" - -# Used by configure to define additional values for FLAGS_FOR_TARGET - -# passed to all the compilers. -ARCH_FLAGS_FOR_TARGET = "" -#NOTE: not tested on other platforms, the following is probably correct -# everywhere! -ARCH_FLAGS_FOR_TARGET_slugos = "${TARGET_CC_ARCH}" -ARCH_FLAGS_FOR_TARGET_unslung = "${TARGET_CC_ARCH}" -EXTRA_OEMAKE += "ARCH_FLAGS_FOR_TARGET='${ARCH_FLAGS_FOR_TARGET}'" - -require gcc-fpu.inc - -python __anonymous () { - import bb, re - if (re.match('linux-uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None): - bb.data.setVar('EXTRA_OECONF_DEP', '${EXTRA_OECONF_uclibc}', d) - elif (re.match('linux$', bb.data.getVar('TARGET_OS', d, 1)) != None): - bb.data.setVar('EXTRA_OECONF_DEP', '${EXTRA_OECONF_glibc}', d) -} - -do_configure () { - # Setup these vars for cross building only - # ... because foo_FOR_TARGET apparently gets misinterpreted inside the - # gcc build stuff when the build is producing a cross compiler - i.e. - # when the 'current' target is the 'host' system, and the host is not - # the target (because the build is actually making a cross compiler!) - if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then - export CC_FOR_TARGET="${CC}" - export GCC_FOR_TARGET="${CC}" - export CXX_FOR_TARGET="${CXX}" - export AS_FOR_TARGET="${HOST_PREFIX}as" - export LD_FOR_TARGET="${HOST_PREFIX}ld" - export NM_FOR_TARGET="${HOST_PREFIX}nm" - export AR_FOR_TARGET="${HOST_PREFIX}ar" - export RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib" - fi - export CC_FOR_BUILD="${BUILD_CC}" - export CXX_FOR_BUILD="${BUILD_CXX}" - export CFLAGS_FOR_BUILD="${BUILD_CFLAGS}" - export CPPFLAGS_FOR_BUILD="${BUILD_CPPFLAGS}" - export CXXFLAGS_FOR_BUILD="${BUILD_CXXFLAGS}" - export LDFLAGS_FOR_BUILD="${BUILD_LDFLAGS}" - export ARCH_FLAGS_FOR_TARGET="${ARCH_FLAGS_FOR_TARGET}" - (cd ${S} && gnu-configize) || die "failure running gnu-configize" - oe_runconf -} +include gcc3-build.inc diff --git a/meta/packages/gcc/gcc_4.1.1.bb b/meta/packages/gcc/gcc_4.1.1.bb index e2d3d25..e323533 100644 --- a/meta/packages/gcc/gcc_4.1.1.bb +++ b/meta/packages/gcc/gcc_4.1.1.bb @@ -1,4 +1,4 @@ -PR = "r6" +PR = "r9" DESCRIPTION = "The GNU cc and gcc C compilers." HOMEPAGE = "http://www.gnu.org/software/gcc/" SECTION = "devel" @@ -27,19 +27,25 @@ SRC_URI = "http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2 \ file://arm-thumb-cache.patch;patch=1 \ file://ldflags.patch;patch=1 \ file://cse.patch;patch=1 \ - file://zecke-xgcc-cpp.patch;patch=1 " + file://zecke-xgcc-cpp.patch;patch=1 \ + file://unbreak-armv4t.patch;patch=1 \ + file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \ + file://gcc-4.1.1-pr13685-1.patch;patch=1 \ + " SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 " #Set the fortran bits +# 'fortran' or '', not 'f77' like gcc3 had FORTRAN = "" HAS_GFORTRAN = "no" HAS_G2C = "no" #Set the java bits JAVA_arm = "" +JAVA = "" -LANGUAGES = "c,c++" +LANGUAGES = "c,c++${FORTRAN}${JAVA}" require gcc3-build.inc -- 2.7.4