Fixes for glibc 2.17. linux-os.c is just a missing header (for personality()). In x86-64-linux-os.c, __USE_GNU is a glibc-internal name that features.h defines; _GNU_SOURCE is what it should actually be using to get GNU extensions. diff -x config.log -x config.status -ru tmp/sbcl-1.1.2/src/runtime/linux-os.c work/sbcl-1.1.2/src/runtime/linux-os.c --- tmp/sbcl-1.1.2/src/runtime/linux-os.c 2012-12-01 11:32:38.000000000 +0000 +++ work/sbcl-1.1.2/src/runtime/linux-os.c 2012-12-31 01:20:37.619000000 +0000 @@ -46,6 +46,7 @@ #include <sys/stat.h> #include <unistd.h> #include <linux/version.h> +#include <sys/personality.h> #include "validate.h" #include "thread.h" diff -x config.log -x config.status -ru tmp/sbcl-1.1.2/src/runtime/x86-64-linux-os.c work/sbcl-1.1.2/src/runtime/x86-64-linux-os.c --- tmp/sbcl-1.1.2/src/runtime/x86-64-linux-os.c 2012-12-01 11:32:38.000000000 +0000 +++ work/sbcl-1.1.2/src/runtime/x86-64-linux-os.c 2012-12-31 01:20:25.450000000 +0000 @@ -14,6 +14,9 @@ * files for more information. */ +/* This is to get REG_RAX etc. from sys/ucontext.h. */ +#define _GNU_SOURCE + #include <stdio.h> #include <stddef.h> #include <sys/param.h> @@ -21,11 +24,7 @@ #include <sys/types.h> #include <unistd.h> #include <errno.h> - -#define __USE_GNU #include <sys/ucontext.h> -#undef __USE_GNU - #include "./signal.h" #include "os.h"