aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2019-10-29 20:20:25 +0100
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2019-10-30 09:50:12 +0100
commit34f4fefd6b9730bb6661dafff67da64cf73f1082 (patch)
tree03af2c464fde7254d584247693482d80b70d510d
parentad71777d2cd8d7a04f6fae06620307df3cf3b0b7 (diff)
downloadsparse-34f4fefd6b9730bb6661dafff67da64cf73f1082.tar.gz
arch: add support for s390 (ILP32)
On s390x, the flag -m31 is needed to enable this mode. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--lib.c3
-rw-r--r--machine.h4
-rw-r--r--target.c1
3 files changed, 7 insertions, 1 deletions
diff --git a/lib.c b/lib.c
index 2a517b44..58c12c77 100644
--- a/lib.c
+++ b/lib.c
@@ -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:
diff --git a/machine.h b/machine.h
index f7567efe..e24822a7 100644
--- a/machine.h
+++ b/machine.h
@@ -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
diff --git a/target.c b/target.c
index c2ab5549..7829e8f9 100644
--- a/target.c
+++ b/target.c
@@ -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;