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 /debian/patches/arm-multilib-defaults.diff | |
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
Diffstat (limited to 'debian/patches/arm-multilib-defaults.diff')
-rw-r--r-- | debian/patches/arm-multilib-defaults.diff | 75 |
1 files changed, 75 insertions, 0 deletions
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 |