summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>2012-04-30 16:48:51 +0000
committerdoko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>2012-04-30 16:48:51 +0000
commite5251c580902ba12c65fd9db2b4509b700e8c722 (patch)
treeea229f65f2852566d96edfbce1e701e9d09da656
parente76e729a9da74d9382871bc14d8bbaf3330411b5 (diff)
downloadgcc-47-e5251c580902ba12c65fd9db2b4509b700e8c722.tar.gz
* Fix setting MULTILIB_DEFAULTS for ARM multilib builds.
git-svn-id: svn://svn.debian.org/svn/gcccvs/branches/sid/gcc-4.7@6005 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
-rw-r--r--debian/changelog6
-rw-r--r--debian/patches/arm-multilib-defaults.diff75
-rw-r--r--debian/patches/arm-multilib-soft.diff27
-rw-r--r--debian/patches/arm-multilib-softfp.diff (renamed from debian/patches/arm-multilib.diff)10
-rw-r--r--debian/rules.patch6
5 files changed, 118 insertions, 6 deletions
diff --git a/debian/changelog b/debian/changelog
index 8908d32..a5ab657 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+gcc-4.7 (4.7.0-7) UNRELEASED; urgency=low
+
+ * Fix setting MULTILIB_DEFAULTS for ARM multilib builds.
+
+ -- Matthias Klose <doko@debian.org> Mon, 30 Apr 2012 18:15:51 +0200
+
gcc-4.7 (4.7.0-6) unstable; urgency=low
* Update to SVN 20120430 (r186964) from the gcc-4_7-branch.
diff --git a/debian/patches/arm-multilib-defaults.diff b/debian/patches/arm-multilib-defaults.diff
new file mode 100644
index 0000000..991d93b
--- /dev/null
+++ b/debian/patches/arm-multilib-defaults.diff
@@ -0,0 +1,75 @@
+# DP: Set MULTILIB_DEFAULTS for ARM multilib builds
+
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -3053,6 +3053,9 @@
+ "" \
+ | soft | hard | softfp)
+ # OK
++ if test x{$with_float} != x; then
++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=ARM_FLOAT_ABI_`echo $with_float | tr a-z A-Z`"
++ fi
+ ;;
+ *)
+ echo "Unknown floating point type used in --with-float=$with_float" 1>&2
+@@ -3097,6 +3100,9 @@
+ "" \
+ | arm | thumb )
+ #OK
++ if test "$with_mode" = thumb; then
++ tm_defines="${tm_defines} TARGET_CONFIGURED_THUMB_MODE=1"
++ fi
+ ;;
+ *)
+ echo "Unknown mode used in --with-mode=$with_mode"
+--- a/src/gcc/config/arm/linux-eabi.h
++++ b/src/gcc/config/arm/linux-eabi.h
+@@ -34,7 +34,11 @@
+ /* We default to a soft-float ABI so that binaries can run on all
+ target hardware. */
+ #undef TARGET_DEFAULT_FLOAT_ABI
++#ifdef TARGET_CONFIGURED_FLOAT_ABI
++#define TARGET_DEFAULT_FLOAT_ABI TARGET_CONFIGURED_FLOAT_ABI
++#else
+ #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
++#endif
+
+ /* We default to the "aapcs-linux" ABI so that enums are int-sized by
+ default. */
+@@ -68,6 +72,36 @@
+ "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
+ %{!mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "}"
+
++/* Set the multilib defaults according the configuration, needed to
++ let gcc -print-multi-dir do the right thing. */
++
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define MULTILIB_DEFAULT_ENDIAN "mbig-endian"
++#else
++#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian"
++#endif
++
++#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_SOFT
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft"
++#elif TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_SOFTFP
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=softfp"
++#else
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=hard"
++#endif
++
++#ifndef TARGET_CONFIGURED_THUMB_MODE
++#define MULTILIB_DEFAULT_MODE "marm"
++#elif TARGET_CONFIGURED_THUMB_MODE == 1
++#define MULTILIB_DEFAULT_MODE "mthumb"
++#else
++#define MULTILIB_DEFAULT_MODE "marm"
++#endif
++
++#undef MULTILIB_DEFAULTS
++#define MULTILIB_DEFAULTS \
++ { MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \
++ MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" }
++
+ /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
+ use the GNU/Linux version, not the generic BPABI version. */
+ #undef LINK_SPEC
diff --git a/debian/patches/arm-multilib-soft.diff b/debian/patches/arm-multilib-soft.diff
new file mode 100644
index 0000000..c7b473b
--- /dev/null
+++ b/debian/patches/arm-multilib-soft.diff
@@ -0,0 +1,27 @@
+# DP: ARM hard/soft float multilib support
+
+Index: b/src/gcc/config/arm/t-linux-eabi
+===================================================================
+--- a/src/gcc/config/arm/t-linux-eabi 2011-01-03 20:52:22.000000000 +0000
++++ b/src/gcc/config/arm/t-linux-eabi 2011-08-21 21:08:47.583351817 +0000
+@@ -24,6 +24,20 @@
+ MULTILIB_OPTIONS =
+ MULTILIB_DIRNAMES =
+
++ifeq ($(with_float),hard)
++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard
++MULTILIB_DIRNAMES = sf hf
++MULTILIB_EXCEPTIONS =
++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp
++MULTILIB_OSDIRNAMES = ../libsf:arm-linux-gnueabi ../lib:arm-linux-gnueabihf
++else
++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard
++MULTILIB_DIRNAMES = sf hf
++MULTILIB_EXCEPTIONS =
++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp
++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi ../libhf:arm-linux-gnueabihf
++endif
++
+ #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+ #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
diff --git a/debian/patches/arm-multilib.diff b/debian/patches/arm-multilib-softfp.diff
index 8608ef8..89ed142 100644
--- a/debian/patches/arm-multilib.diff
+++ b/debian/patches/arm-multilib-softfp.diff
@@ -1,4 +1,4 @@
-# DP: ARM hard/soft float multilib
+# DP: ARM hard/softfp float multilib support
Index: b/src/gcc/config/arm/t-linux-eabi
===================================================================
@@ -10,16 +10,16 @@ Index: b/src/gcc/config/arm/t-linux-eabi
+ifeq ($(with_float),hard)
+MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard
-+MULTILIB_DIRNAMES = sf .
++MULTILIB_DIRNAMES = sf hf
+MULTILIB_EXCEPTIONS =
+MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft
-+MULTILIB_OSDIRNAMES = arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf
++MULTILIB_OSDIRNAMES = ../libsf:arm-linux-gnueabi ../lib:arm-linux-gnueabihf
+else
+MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard
-+MULTILIB_DIRNAMES = . hf
++MULTILIB_DIRNAMES = sf hf
+MULTILIB_EXCEPTIONS =
+MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft
-+MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf
++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi ../libhf:arm-linux-gnueabihf
+endif
+
#MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
diff --git a/debian/rules.patch b/debian/rules.patch
index ab95b7d..a0db928 100644
--- a/debian/rules.patch
+++ b/debian/rules.patch
@@ -209,7 +209,11 @@ debian_patches += arm-dynamic-linker
ifeq ($(with_softfloat),yes)
debian_patches += arm-multilib-soft-float
else ifeq ($(multilib),yes)
- debian_patches += arm-multilib
+ ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise))
+ debian_patches += arm-multilib-softfp
+ else
+ debian_patches += arm-multilib-soft
+ endif
endif
ifeq ($(DEB_CROSS),yes)