patches/gcc/4.2.4/241-arm-bigendian2.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Jan 31 17:49:27 2009 +0000 (2009-01-31)
changeset 1183 268544004e77
permissions -rw-r--r--
On 20090131.1659+0100, Vincent Sanders <vince@kyllikki.org> wrote:
[This]patch is a bit more involved. The patch addresses a gcc
regression in the 4.3 series (specifically this patch is against 4.3.2
which does *not* have a lot of other issues which affect kernel building)

GCC bug tracker has this issue as
#38453 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38453
#32044 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32044

comment 65 of #32044 has the fix being applied to gcc trunk as revision #142719

The attached patch is a backport to gcc 4.3.2 which allows this
version to be used to generate correct output for various ARM kernel
build (and indeed is teh correct answer in general).

/trunk/patches/gcc/4.3.2/360-fix-expensive-optimize.patch | 207 207 0 0 +++++++++++++++++++++
1 file changed, 207 insertions(+)
     1 Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org> wrote:
     2 
     3 I tried to use crosstool-ng to generate a toolchain for Linux on big
     4 endian arm with recent versions of gcc, glibc, etc... but had a few
     5 problems.
     6 
     7 It appears that the gcc patch (for gcc 4.2.x)
     8 for big-endian arm (240-arm-bigendian.patch) lacks the change attached
     9 to this mail as 240-arm-bigendian2.patch.
    10 
    11 --- gcc-4.2.4/gcc/config/arm/bpabi.h~	2007-09-01 17:28:30.000000000 +0200
    12 +++ gcc-4.2.4/gcc/config/arm/bpabi.h	2009-01-05 19:19:10.000000000 +0100
    13 @@ -32,9 +32,19 @@
    14  #undef FPUTYPE_DEFAULT
    15  #define FPUTYPE_DEFAULT FPUTYPE_VFP
    16  
    17 +/*
    18 + * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
    19 + * (big endian) configurations.
    20 + */
    21 +#if TARGET_BIG_ENDIAN_DEFAULT
    22 +#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
    23 +#else
    24 +#define TARGET_ENDIAN_DEFAULT 0
    25 +#endif
    26 +
    27  /* EABI targets should enable interworking by default.  */
    28  #undef TARGET_DEFAULT
    29 -#define TARGET_DEFAULT MASK_INTERWORK
    30 +#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT)
    31  
    32  /* The ARM BPABI functions return a boolean; they use no special
    33     calling convention.  */