From: Ruediger Meier Date: Thu, 29 May 2014 00:53:18 +0000 (+0200) Subject: setarch: add generic support for setarch $(uname -m) ... X-Git-Tag: v2.25-rc1~78 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ae2c3b5bee7036da76b247f563172b72eaf69cb0;p=thirdparty%2Futil-linux.git setarch: add generic support for setarch $(uname -m) ... Signed-off-by: Ruediger Meier Signed-off-by: Karel Zak --- diff --git a/sys-utils/setarch.c b/sys-utils/setarch.c index 8e2b6e531a..4cce877be5 100644 --- a/sys-utils/setarch.c +++ b/sys-utils/setarch.c @@ -202,9 +202,25 @@ set_arch(const char *pers, unsigned long options, int list) {PER_LINUX, "alphaev6", "alpha"}, {PER_LINUX, "alphaev67", "alpha"}, #endif + {-1, NULL, NULL}, /* place holder, eventually filled up at runtime */ {-1, NULL, NULL} }; + /* Add the trivial transition {PER_LINUX, machine, machine} if no such + target_arch is hardcoded yet. */ + uname(&un); + for (i = 0; transitions[i].perval >= 0; i++) + if(!strcmp(un.machine, transitions[i].target_arch)) + break; + if (transitions[i].perval < 0) { + unsigned long wrdsz = CHAR_BIT * sizeof(void*); + if (wrdsz == 32 || wrdsz == 64) { + transitions[i].perval = wrdsz == 32 ? PER_LINUX32 : PER_LINUX; + transitions[i].target_arch = un.machine; + transitions[i].result_arch = un.machine; + } + } + if (list) { for(i = 0; transitions[i].target_arch != NULL; i++) printf("%s\n", transitions[i].target_arch);