@@ -456,6 +456,8 @@ static char **handle_switch_m(char *arg, char **next)
arch_m64 = ARCH_LP64;
} else if (!strcmp(arg, "m32") || !strcmp(arg, "m16")) {
arch_m64 = ARCH_LP32;
+ } else if (!strcmp(arg, "m31")) {
+ arch_m64 = ARCH_LP32;
} else if (!strcmp(arg, "mx32")) {
arch_m64 = ARCH_X32;
} else if (!strcmp(arg, "msize-llp64")) {
@@ -1356,6 +1358,7 @@ static void predefined_macros(void)
case MACH_S390X:
predefine("__zarch__", 1, "1");
predefine("__s390x__", 1, "1");
+ case MACH_S390:
predefine("__s390__", 1, "1");
break;
case MACH_SPARC64:
@@ -31,8 +31,8 @@ enum machine {
MACH_PPC32, MACH_PPC64,
MACH_RISCV32, MACH_RISCV64,
MACH_SPARC32, MACH_SPARC64,
+ MACH_S390, MACH_S390X,
MACH_M68K,
- MACH_S390X,
MACH_UNKNOWN
};
@@ -64,6 +64,8 @@ enum machine {
#define MACH_NATIVE MACH_M68K
#elif defined(__s390x__) || defined(__zarch__)
#define MACH_NATIVE MACH_S390X
+#elif defined(__s390__)
+#define MACH_NATIVE MACH_S390
#else
#define MACH_NATIVE MACH_UNKNOWN
#endif
@@ -97,6 +97,7 @@ void init_target(void)
switch (arch_mach) {
case MACH_ARM:
case MACH_MIPS32:
+ case MACH_S390:
case MACH_S390X:
case MACH_SPARC32:
bits_in_longdouble = 64;
On s390x, the flag -m31 is needed to enable this mode. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- lib.c | 3 +++ machine.h | 4 +++- target.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-)