From f4ccaa459144ab09829a3e39ec37123f743c10ae Mon Sep 17 00:00:00 2001
From: Raymond Toy <toy.raymond@gmail.com>
Date: Sun, 26 Jun 2022 22:07:54 +0000
Subject: [PATCH] Fix #122: gcc 11 can't build cmucl

---
 src/lisp/Config.x86_linux       | 2 +-
 src/lisp/Config.x86_linux_clang | 2 +-
 src/lisp/Linux-os.c             | 4 ++++
 src/lisp/x86-lispregs.h         | 3 ++-
 4 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/lisp/Config.x86_linux b/src/lisp/Config.x86_linux
index cacc0f513..8ed11ef5f 100644
--- a/src/lisp/Config.x86_linux
+++ b/src/lisp/Config.x86_linux
@@ -2,7 +2,7 @@
 include Config.x86_common
 
 CFLAGS += $(COPT)
-CPPFLAGS += -m32 -D__NO_CTYPE -D_GNU_SOURCE
+CPPFLAGS += -m32 -D__NO_CTYPE
 CFLAGS += -rdynamic  -march=pentium4 -mfpmath=sse -mtune=generic
 
 UNDEFSYMPATTERN = -Xlinker -u -Xlinker &
diff --git a/src/lisp/Config.x86_linux_clang b/src/lisp/Config.x86_linux_clang
index c534e868b..169bf0778 100644
--- a/src/lisp/Config.x86_linux_clang
+++ b/src/lisp/Config.x86_linux_clang
@@ -2,7 +2,7 @@
 include Config.x86_common
 
 CC = clang
-CPPFLAGS += -m32 -D__NO_CTYPE -D_GNU_SOURCE
+CPPFLAGS += -m32 -D__NO_CTYPE
 CFLAGS += $(COPT)
 
 # Allow sse2 instructions (-msse2); and tune for pentium4
diff --git a/src/lisp/Linux-os.c b/src/lisp/Linux-os.c
index daee0f418..078ae8b16 100644
--- a/src/lisp/Linux-os.c
+++ b/src/lisp/Linux-os.c
@@ -17,6 +17,8 @@
  *
  */
 
+#define _GNU_SOURCE /* for reg_* constants in uc_mcontext.gregs  */
+#include <signal.h>
 #include <stdio.h>
 #include <sys/param.h>
 #include <sys/file.h>
@@ -198,6 +200,8 @@ os_sigcontext_reg(ucontext_t *scp, int offset)
 	return (unsigned long *) &scp->uc_mcontext.gregs[REG_ESI];
     case 14:
 	return (unsigned long *) &scp->uc_mcontext.gregs[REG_EDI];
+    case 16:
+        return (unsigned long*) &scp->uc_mcontext.gregs[REG_EFL];
     }
     return NULL;
 }
diff --git a/src/lisp/x86-lispregs.h b/src/lisp/x86-lispregs.h
index aa9608f2a..ff7228f72 100644
--- a/src/lisp/x86-lispregs.h
+++ b/src/lisp/x86-lispregs.h
@@ -30,6 +30,7 @@
 #define reg_EBP REG(10)
 #define reg_ESI REG(12)
 #define reg_EDI REG(14)
+#define reg_EFL REG(16)
 
 #define reg_SP reg_ESP
 #define reg_FP reg_EBP
@@ -60,7 +61,7 @@
 #define SC_EFLAGS(sc) ((sc)->uc_mcontext->ss.eflags)
 #endif
 #elif defined(__linux__)
-#define SC_EFLAGS(sc) ((sc)->uc_mcontext.gregs[REG_EFL])
+#define SC_EFLAGS(sc) SC_REG(sc, reg_EFL)
 #elif defined(__NetBSD__)
 #define SC_EFLAGS(sc) ((sc)->uc_mcontext.__gregs[_REG_EFL])
 #elif defined(SOLARIS)
-- 
GitLab