Yet another personality() change. Some older kernels (original
report was on 2.6.4) apparently strip unknown personality
flags on exec(), leading to an eternal execve() loop at
startup. So only do the re-exec dance on 2.6.11 and newer.
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);
* 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);
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.6.38"
+"0.9.6.39"