From 4c7c70c7c23c86836bb96e793e76c79f44784c07 Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz Date: Thu, 2 Mar 2017 01:50:36 +0100 Subject: [PATCH 1/3] basic/architecture: Properly set LIB_ARCH_TUPLE for x32 On x86_64, there are two possible ABIs and hence values for LIB_ARCH_TUPLE. The convential 64-bit type and the 32-bit variant, called x32. The latter can be detected by checking whether __ILP32__ is defined. --- src/basic/architecture.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/basic/architecture.h b/src/basic/architecture.h index 46883719d16..d07bc411e58 100644 --- a/src/basic/architecture.h +++ b/src/basic/architecture.h @@ -79,7 +79,11 @@ int uname_architecture(void); #if defined(__x86_64__) # define native_architecture() ARCHITECTURE_X86_64 -# define LIB_ARCH_TUPLE "x86_64-linux-gnu" +# if defined(__ILP32__) +# define LIB_ARCH_TUPLE "x86_64-linux-gnux32" +# else +# define LIB_ARCH_TUPLE "x86_64-linux-gnu" +# endif # define SECONDARY_ARCHITECTURE ARCHITECTURE_X86 #elif defined(__i386__) # define native_architecture() ARCHITECTURE_X86 From 202145c07a031f729982d4cacf05411b9819e78a Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz Date: Thu, 2 Mar 2017 01:51:11 +0100 Subject: [PATCH 2/3] basic/architecture: Properly set LIB_ARCH_TUPLE for powerpcspe On powerpc, there are two possible ABIs and hence values for LIB_ARCH_TUPLE. The convential type with an FPU and the embedded variant, called powerpcspe, which does not have a convential FPU but a special Signal Processing Engine (SPE). The latter can be detected by checking whether __NO_FPRS__ is defined. --- src/basic/architecture.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/basic/architecture.h b/src/basic/architecture.h index d07bc411e58..f0de76f3fa5 100644 --- a/src/basic/architecture.h +++ b/src/basic/architecture.h @@ -101,7 +101,11 @@ int uname_architecture(void); #elif defined(__powerpc__) # if __BYTE_ORDER == __BIG_ENDIAN # define native_architecture() ARCHITECTURE_PPC -# define LIB_ARCH_TUPLE "powerpc-linux-gnu" +# if defined(__NO_FPRS__) +# define LIB_ARCH_TUPLE "powerpc-linux-gnuspe" +# else +# define LIB_ARCH_TUPLE "powerpc-linux-gnu" +# endif # else # define native_architecture() ARCHITECTURE_PPC_LE # error "Missing LIB_ARCH_TUPLE for PPCLE" From 9da2a0ac4e09dc36da5570bec80fd7d78ac4da8e Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz Date: Thu, 2 Mar 2017 01:51:53 +0100 Subject: [PATCH 3/3] basic/architecture: Add sub-architecture types for SuperH On SuperH, there are multiple sub-architectures defined with different values for LIB_ARCH_TUPLE. The different sub- architectures can be detected by checking whether __SH1__, __SH2__, __SH3__, __SH4__, and so on are defined. --- src/basic/architecture.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/basic/architecture.h b/src/basic/architecture.h index f0de76f3fa5..db7e03f02a4 100644 --- a/src/basic/architecture.h +++ b/src/basic/architecture.h @@ -197,7 +197,23 @@ int uname_architecture(void); # error "Missing LIB_ARCH_TUPLE for SH64" #elif defined(__sh__) # define native_architecture() ARCHITECTURE_SH -# define LIB_ARCH_TUPLE "sh4-linux-gnu" +# if defined(__SH1__) +# define LIB_ARCH_TUPLE "sh1-linux-gnu" +# elif defined(__SH2__) +# define LIB_ARCH_TUPLE "sh2-linux-gnu" +# elif defined(__SH2A__) +# define LIB_ARCH_TUPLE "sh2a-linux-gnu" +# elif defined(__SH2E__) +# define LIB_ARCH_TUPLE "sh2e-linux-gnu" +# elif defined(__SH3__) +# define LIB_ARCH_TUPLE "sh3-linux-gnu" +# elif defined(__SH3E__) +# define LIB_ARCH_TUPLE "sh3e-linux-gnu" +# elif defined(__SH4__) && !defined(__SH4A__) +# define LIB_ARCH_TUPLE "sh4-linux-gnu" +# elif defined(__SH4A__) +# define LIB_ARCH_TUPLE "sh4a-linux-gnu" +# endif #elif defined(__m68k__) # define native_architecture() ARCHITECTURE_M68K # define LIB_ARCH_TUPLE "m68k-linux-gnu"