From 7bab52625d143c93a988b53d8682aae5f3273942 Mon Sep 17 00:00:00 2001
From: Raymond Toy <toy.raymond@gmail.com>
Date: Sat, 21 May 2016 13:27:41 -0700
Subject: [PATCH] Add :RELOCATABLE-STACKS to *features*

Add this as a runtime feature so that it shows up in *features* and
so that the C runtime has FEATURE_RELOCATABLE_STACKS defined.

src/code/sparc-svr4-vm.lisp:
src/code/x86-vm.lisp:
o Make :relocatable-stacks a runtime feature.

src/lisp/validate.h
o Need to include internals.h here so constants are set up according
  to internals.h

src/lisp/x86-validate-darwin.h:
o Use FEATURE_RELOCATABLE_STACKS instead of RELOCATABLE_STACK_START.
---
 src/code/sparc-svr4-vm.lisp    | 4 ++++
 src/code/x86-vm.lisp           | 3 +++
 src/lisp/validate.h            | 2 ++
 src/lisp/x86-validate-darwin.h | 6 +++---
 4 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/code/sparc-svr4-vm.lisp b/src/code/sparc-svr4-vm.lisp
index 1368fb260..c894a6acd 100644
--- a/src/code/sparc-svr4-vm.lisp
+++ b/src/code/sparc-svr4-vm.lisp
@@ -25,6 +25,10 @@
 
 #+complex-fp-vops
 (sys:register-lisp-feature :complex-fp-vops)
+
+#+(and sparc solaris)
+(sys:register-lisp-runtime-feature :relocatable-stacks)
+
 
 ;;;; The sigcontext structure.
 
diff --git a/src/code/x86-vm.lisp b/src/code/x86-vm.lisp
index a7e307d78..987d1a345 100644
--- a/src/code/x86-vm.lisp
+++ b/src/code/x86-vm.lisp
@@ -42,6 +42,9 @@
   (setf *features* (delete :x87 *features*))
   (sys:register-lisp-feature :sse2))
 
+#+(or darwin linux)
+(sys:register-lisp-runtime-feature :relocatable-stacks)
+
 
 ;;;; The sigcontext structure.
 
diff --git a/src/lisp/validate.h b/src/lisp/validate.h
index 7f1c0e0c7..6ad287611 100644
--- a/src/lisp/validate.h
+++ b/src/lisp/validate.h
@@ -8,6 +8,8 @@
 #ifndef _VALIDATE_H_
 #define _VALIDATE_H_
 
+#include "internals.h"
+
 #ifdef parisc
 #include "hppa-validate.h"
 #endif
diff --git a/src/lisp/x86-validate-darwin.h b/src/lisp/x86-validate-darwin.h
index d6b956d21..f4c094d48 100644
--- a/src/lisp/x86-validate-darwin.h
+++ b/src/lisp/x86-validate-darwin.h
@@ -18,12 +18,12 @@
 #define STATIC_SPACE_START	(SpaceStart_TargetStatic)
 #define STATIC_SPACE_SIZE	(0x0ffff000)	/* 256MB - 1 page */
 
-#ifndef RELOCATABLE_STACK_START
+#ifndef FEATURE_RELOCATABLE_STACKS
 #define BINDING_STACK_START	(0x38000000)
 #endif
 #define BINDING_STACK_SIZE	(0x07fff000)	/* 128MB - 1 page */
 
-#ifndef RELOCATABLE_STACK_START
+#ifndef FEATURE_RELOCATABLE_STACKS
 #define CONTROL_STACK_START	(0x40000000)
 #endif
 
@@ -33,7 +33,7 @@
  */
 #define CONTROL_STACK_SIZE	(0x07fdf000)	/* 128MB - SIGSTKSZ - 1 page */
 
-#ifndef RELOCATABLE_STACK_START
+#ifndef FEATURE_RELOCATABLE_STACKS
 #define SIGNAL_STACK_START	(0x47fe0000)    /* One page past the end of the control stack */
 #endif
 #define SIGNAL_STACK_SIZE	SIGSTKSZ
-- 
GitLab