X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Flinux-os.c;h=d0aa95a478f21036006707708b1db12758783b9e;hb=e4542bc034db18cf98f005b2dac53a6d7d5c7260;hp=85221c5ea63286149f2a6f62bc1c8f69ff6867ea;hpb=71c1aff9923ecec1b55fdc48a3a2f149e9e7da68;p=sbcl.git diff --git a/src/runtime/linux-os.c b/src/runtime/linux-os.c index 85221c5..d0aa95a 100644 --- a/src/runtime/linux-os.c +++ b/src/runtime/linux-os.c @@ -124,12 +124,15 @@ os_init(char *argv[], char *envp[]) struct utsname name; int major_version; int minor_version; + int patch_version; char *p; uname(&name); p=name.release; major_version = atoi(p); p=strchr(p,'.')+1; minor_version = atoi(p); + p=strchr(p,'.')+1; + patch_version = atoi(p); if (major_version<2) { lose("linux kernel version too old: major version=%d (can't run in version < 2.0.0)", major_version); @@ -161,7 +164,11 @@ Please use a more recent kernel or a version of SBCL without threading support.\ * don't do this trick on other platforms. */ #ifdef LISP_FEATURE_X86 - if ((major_version == 2 && minor_version >= 6) + if ((major_version == 2 + /* Some old kernels will apparently lose unsupported personality flags + * on exec() */ + && ((minor_version == 6 && patch_version >= 11) + || (minor_version > 6))) || major_version >= 3) { int pers = personality(0xffffffffUL);