--- /dev/null
+--- 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;
--- /dev/null
+Submitted By: Alexander E. Patrakov\r
+Date: 2006-12-11\r
+Initial Package Version: 4.1.1\r
+Upstream Status: backport\r
+Origin: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28621\r
+Description: Fix crash of programs compiled with -Os -ffast-math\r
+(affects procps on the LiveCD)\r
+--- gcc-4.1.1/gcc/config/i386/i386.c\r
++++ gcc-4.1.1/gcc/config/i386/i386.c\r
+@@ -1502,12 +1502,10 @@\r
+ }\r
+ \r
+ /* Validate -mpreferred-stack-boundary= value, or provide default.\r
+- The default of 128 bits is for Pentium III's SSE __m128, but we\r
+- don't want additional code to keep the stack aligned when\r
+- optimizing for code size. */\r
+- ix86_preferred_stack_boundary = (optimize_size\r
+- ? TARGET_64BIT ? 128 : 32\r
+- : 128);\r
++ The default of 128 bits is for Pentium III's SSE __m128, We can't\r
++ change it because of optimize_size. Otherwise, we can't mix object\r
++ files compiled with -Os and -On. */\r
++ ix86_preferred_stack_boundary = 128;\r
+ if (ix86_preferred_stack_boundary_string)\r
+ {\r
+ i = atoi (ix86_preferred_stack_boundary_string);\r
--- /dev/null
+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"
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++"
-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
-PR = "r6"
+PR = "r9"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
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