From 603fb6a031a14f9d25c4664fd5ae9543a8e6a8bf Mon Sep 17 00:00:00 2001
From: Raymond Toy <toy.raymond@gmail.com>
Date: Tue, 10 May 2016 19:13:32 -0700
Subject: [PATCH] Add RELOCATABLE_STACK_START to control stack spaces for
 linux.

When RELOCATABLE_STACK_START is defined, the control stack, binding
stack, and sigalt stack are located wherever mmap finds room for them.
---
 src/lisp/Config.x86_linux     | 2 +-
 src/lisp/x86-validate-linux.h | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lisp/Config.x86_linux b/src/lisp/Config.x86_linux
index 457a24a34..92c5b8946 100644
--- a/src/lisp/Config.x86_linux
+++ b/src/lisp/Config.x86_linux
@@ -1,7 +1,7 @@
 # -*- Mode: makefile -*-
 include Config.x86_common
 
-CPPFLAGS += -m32 -D__NO_CTYPE -D_GNU_SOURCE
+CPPFLAGS += -m32 -D__NO_CTYPE -D_GNU_SOURCE -DRELOCATABLE_STACK_START
 CFLAGS += -rdynamic  -march=pentium4 -mfpmath=sse -mtune=generic
 
 UNDEFSYMPATTERN = -Xlinker -u -Xlinker &
diff --git a/src/lisp/x86-validate-linux.h b/src/lisp/x86-validate-linux.h
index 7c278fbfd..3d9f3cd22 100644
--- a/src/lisp/x86-validate-linux.h
+++ b/src/lisp/x86-validate-linux.h
@@ -45,17 +45,17 @@
 #define STATIC_SPACE_START	(SpaceStart_TargetStatic)
 #define STATIC_SPACE_SIZE	(0x0ffff000)	/* 256MB - 1 page */
 
-#if 0
+#ifdef RELOCATABLE_STACK_START
 #define BINDING_STACK_START	(0x20000000)
 #endif
 #define BINDING_STACK_SIZE	(0x07fff000)	/* 128MB - 1 page */
 
-#if 0
+#ifdef RELOCATABLE_STACK_START
 #define CONTROL_STACK_START	0x38000000
 #endif
 #define CONTROL_STACK_SIZE	(0x07fff000 - 8192)
 
-#if 0
+#ifdef RELOCATABLE_STACK_START
 #define SIGNAL_STACK_START	CONTROL_STACK_END
 #endif
 #define SIGNAL_STACK_SIZE	SIGSTKSZ
-- 
GitLab