gcc: Tweak arm multilib endian patch for baremetal

Submitted by Khem Raj on April 3, 2015, 4:55 a.m. | Patch ID: 91231

Details

Message ID DBE02995-FD6A-409B-944C-D14DB4A56925@gmail.com
State New
Headers show

Commit Message

Khem Raj April 3, 2015, 4:55 a.m.
> On Mar 26, 2015, at 4:55 PM, Richard Purdie <richard.purdie@linuxfoundation.org> wrote:
> 
> In a baremetal build, TARGET_ENDIAN_OPTION isn't set leading to build
> failures. Add in ifdefs to avoid this.
> 

We should define it in 

gcc/config/arm/linux-eabi.h

something like

> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> 
> diff --git a/meta/recipes-devtools/gcc/gcc-4.9/0015-arm-Use-TARGET_ENDIAN_OPTION-for-determining-MULTILI.patch b/meta/recipes-devtools/gcc/gcc-4.9/0015-arm-Use-TARGET_ENDIAN_OPTION-for-determining-MULTILI.patch
> index ba0a227..37c46fc 100644
> --- a/meta/recipes-devtools/gcc/gcc-4.9/0015-arm-Use-TARGET_ENDIAN_OPTION-for-determining-MULTILI.patch
> +++ b/meta/recipes-devtools/gcc/gcc-4.9/0015-arm-Use-TARGET_ENDIAN_OPTION-for-determining-MULTILI.patch
> @@ -11,26 +11,34 @@ Upstream-Status: Pending
>  gcc/config/arm/linux-elf.h |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> -Index: gcc-4.9-20140316/gcc/config/arm/coff.h
> +Index: gcc-4.9.2/gcc/config/arm/coff.h
> ===================================================================
> ---- gcc-4.9-20140316.orig/gcc/config/arm/coff.h
> -+++ gcc-4.9-20140316/gcc/config/arm/coff.h
> -@@ -33,7 +33,7 @@
> +--- gcc-4.9.2.orig/gcc/config/arm/coff.h
> ++++ gcc-4.9.2/gcc/config/arm/coff.h
> +@@ -32,8 +32,11 @@
> + #define TARGET_DEFAULT (MASK_APCS_FRAME)
> 
>  #ifndef MULTILIB_DEFAULTS
> ++#ifndef TARGET_ENDIAN_OPTION
> ++#define TARGET_ENDIAN_OPTION "mlittle-endian"
> ++#endif
>  #define MULTILIB_DEFAULTS \
> -  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork" }
> +  { "marm", TARGET_ENDIAN_OPTION, "mfloat-abi=soft", "mno-thumb-interwork" }
>  #endif
>  
>  /* This is COFF, but prefer stabs.  */
> -Index: gcc-4.9-20140316/gcc/config/arm/elf.h
> +Index: gcc-4.9.2/gcc/config/arm/elf.h
> ===================================================================
> ---- gcc-4.9-20140316.orig/gcc/config/arm/elf.h
> -+++ gcc-4.9-20140316/gcc/config/arm/elf.h
> -@@ -112,7 +112,7 @@
> +--- gcc-4.9.2.orig/gcc/config/arm/elf.h
> ++++ gcc-4.9.2/gcc/config/arm/elf.h
> +@@ -116,8 +116,11 @@
> + #endif
> 
>  #ifndef MULTILIB_DEFAULTS
> ++#ifndef TARGET_ENDIAN_OPTION
> ++#define TARGET_ENDIAN_OPTION "mlittle-endian"
> ++#endif
>  #define MULTILIB_DEFAULTS \
> -  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork", "fno-leading-underscore" }
> +  { "marm", TARGET_ENDIAN_OPTION, "mfloat-abi=soft", "mno-thumb-interwork", "fno-leading-underscore" }
> 
>

Patch hide | download patch | download mbox

diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
index 048a062..05f01ca 100644
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -51,8 +51,12 @@ 
    config.gcc for big endian configurations.  */
 #undef  TARGET_LINKER_EMULATION
 #if TARGET_BIG_ENDIAN_DEFAULT
+#define TARGET_ENDIAN_DEFAULT    MASK_BIG_END
+#define TARGET_ENDIAN_OPTION     "mbig-endian"
 #define TARGET_LINKER_EMULATION "armelfb_linux_eabi"
 #else
+#define TARGET_ENDIAN_DEFAULT    0
+#define TARGET_ENDIAN_OPTION     "mlittle-endian"
 #define TARGET_LINKER_EMULATION "armelf_linux_eabi"
 #endif