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