Added multilib support to SAT. Now floatingpoint support should work and we should...
[fw/cortex-toolchain] / patches / patch-gcc-config-arm-t-arm-elf.diff
diff --git a/patches/patch-gcc-config-arm-t-arm-elf.diff b/patches/patch-gcc-config-arm-t-arm-elf.diff
new file mode 100644 (file)
index 0000000..6186518
--- /dev/null
@@ -0,0 +1,74 @@
+--- gcc/config/arm/t-arm-elf.orig      2011-02-03 10:41:08.000000000 +1100
++++ gcc/config/arm/t-arm-elf   2011-02-03 10:44:22.000000000 +1100
+@@ -31,10 +31,55 @@
+       _arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf \
+       _clzsi2 _clzdi2 
+-MULTILIB_OPTIONS     = marm/mthumb
+-MULTILIB_DIRNAMES    = arm thumb
+-MULTILIB_EXCEPTIONS  = 
++# We build 4 multilibs:
++#  ./            (default)
++#  thumb/        -mthumb
++#  thumb2/       -mthumb -march=armv7
++#  armv4t/      -mthumb -march=armv4t
++
++MULTILIB_OPTIONS     = mthumb
++MULTILIB_DIRNAMES    = thumb
++MULTILIB_EXCEPTIONS  =
+ MULTILIB_MATCHES     =
++MULTILIB_EXTRA_OPTS  += msoft-float
++
++MULTILIB_OPTIONS      += march=armv7/march=armv4t
++MULTILIB_DIRNAMES     += v7 v4t
++MULTILIB_EXCEPTIONS   += march=armv7*
++MULTILIB_MATCHES      += march?armv7=march?armv7-a
++MULTILIB_MATCHES      += march?armv7=march?armv7-r
++MULTILIB_MATCHES      += march?armv7=march?armv7-m
++MULTILIB_MATCHES      += march?armv7=march?armv7e-m
++MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a9
++MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
++MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a5
++MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
++MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4f
++MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m4
++MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
++
++MULTILIB_EXCEPTIONS   += march=armv4t
++MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi-s
++#MULTILIB_MATCHES      +=
++
++# FIXME: We need a sane way of doing this.
++# This isn't really a multilib, it's a hack to add an extra option
++# to the v7-m multilib.
++MULTILIB_OPTIONS      += mfix-cortex-m3-ldrd
++MULTILIB_DIRNAMES     += broken_ldrd
++
++MULTILIB_EXCEPTIONS   += mfix-cortex-m3-ldrd
++MULTILIB_EXCEPTIONS   += mthumb/mfix-cortex-m3-ldrd
++MULTILIB_EXCEPTIONS   += *march=armv4t*mfix-cortex-m3-ldrd
++
++MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7
++
++# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
++# omitted from MULTILIB_OSDIRNAMES
++MULTILIB_OSDIRNAMES    = mthumb=!thumb
++MULTILIB_OSDIRNAMES   += mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2
++MULTILIB_OSDIRNAMES   += mthumb/march.armv4t=!armv4t
++
+ #MULTILIB_OPTIONS      += march=armv7
+ #MULTILIB_DIRNAMES     += thumb2
+@@ -49,9 +94,9 @@
+ # Not quite true.  We can support hard-vfp calling in Thumb2, but how do we
+ # express that here?  Also, we really need architecture v5e or later
+ # (mcrr etc).
+-MULTILIB_OPTIONS       += mfloat-abi=hard
+-MULTILIB_DIRNAMES      += fpu
+-MULTILIB_EXCEPTIONS    += *mthumb/*mfloat-abi=hard*
++#MULTILIB_OPTIONS       += mfloat-abi=hard
++#MULTILIB_DIRNAMES      += fpu
++#MULTILIB_EXCEPTIONS    += *mthumb/*mfloat-abi=hard*
+ # MULTILIB_OPTIONS    += mcpu=ep9312
+ # MULTILIB_DIRNAMES   += ep9312