diff options
author | doko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca> | 2012-04-30 16:48:51 +0000 |
---|---|---|
committer | doko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca> | 2012-04-30 16:48:51 +0000 |
commit | e5251c580902ba12c65fd9db2b4509b700e8c722 (patch) | |
tree | ea229f65f2852566d96edfbce1e701e9d09da656 | |
parent | e76e729a9da74d9382871bc14d8bbaf3330411b5 (diff) | |
download | gcc-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/changelog | 6 | ||||
-rw-r--r-- | debian/patches/arm-multilib-defaults.diff | 75 | ||||
-rw-r--r-- | debian/patches/arm-multilib-soft.diff | 27 | ||||
-rw-r--r-- | debian/patches/arm-multilib-softfp.diff (renamed from debian/patches/arm-multilib.diff) | 10 | ||||
-rw-r--r-- | debian/rules.patch | 6 |
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) |