From 38f66c53601841a442ed174db2dca9045ececf42 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 22 Feb 2016 15:39:52 +0100 Subject: [PATCH] util-lib: use the architecture ids from architecture.h for personalities We have this ids, hence let's use them universally. --- src/basic/process-util.c | 51 ++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/src/basic/process-util.c b/src/basic/process-util.c index 550419d5e..a50674ea0 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -38,6 +38,7 @@ #endif #include "alloc-util.h" +#include "architecture.h" #include "escape.h" #include "fd-util.h" #include "fileio.h" @@ -685,38 +686,40 @@ bool oom_score_adjust_is_valid(int oa) { } unsigned long personality_from_string(const char *p) { + int architecture; - /* Parse a personality specifier. We introduce our own - * identifiers that indicate specific ABIs, rather than just - * hints regarding the register size, since we want to keep - * things open for multiple locally supported ABIs for the - * same register size. We try to reuse the ABI identifiers - * used by libseccomp. */ + /* Parse a personality specifier. We use our own identifiers that indicate specific ABIs, rather than just + * hints regarding the register size, since we want to keep things open for multiple locally supported ABIs for + * the same register size. */ + + architecture = architecture_from_string(p); + if (architecture < 0) + return PERSONALITY_INVALID; #if defined(__x86_64__) - if (streq(p, "x86")) + if (architecture == ARCHITECTURE_X86) return PER_LINUX32; - if (streq(p, "x86-64")) + if (architecture == ARCHITECTURE_X86_64) return PER_LINUX; #elif defined(__i386__) - if (streq(p, "x86")) + if (architecture == ARCHITECTURE_X86) return PER_LINUX; #elif defined(__s390x__) - if (streq(p, "s390")) + if (architecture == ARCHITECTURE_S390) return PER_LINUX32; - if (streq(p, "s390x")) + if (architecture == ARCHITECTURE_S390X) return PER_LINUX; #elif defined(__s390__) - if (streq(p, "s390")) + if (architecture == ARCHITECTURE_S390) return PER_LINUX; #endif @@ -724,36 +727,38 @@ unsigned long personality_from_string(const char *p) { } const char* personality_to_string(unsigned long p) { + int architecture = _ARCHITECTURE_INVALID; #if defined(__x86_64__) - if (p == PER_LINUX32) - return "x86"; - if (p == PER_LINUX) - return "x86-64"; + architecture = ARCHITECTURE_X86_64; + else if (p == PER_LINUX32) + architecture = ARCHITECTURE_X86; #elif defined(__i386__) if (p == PER_LINUX) - return "x86"; + architecture = ARCHITECTURE_X86; #elif defined(__s390x__) if (p == PER_LINUX) - return "s390x"; - - if (p == PER_LINUX32) - return "s390"; + architecture = ARCHITECTURE_S390X; + else if (p == PER_LINUX32) + architecture = ARCHITECTURE_S390; #elif defined(__s390__) if (p == PER_LINUX) - return "s390"; + architecture = ARCHITECTURE_S390; #endif - return NULL; + if (architecture < 0) + return NULL; + + return architecture_to_string(architecture); } void valgrind_summary_hack(void) { -- 2.30.2