From e901f77acc9b49c030adf5d4a1c5aeb501912497 Mon Sep 17 00:00:00 2001 From: Raymond Toy <toy.raymond@gmail.com> Date: Fri, 20 Jan 2012 20:32:24 -0800 Subject: [PATCH] Get rid of os_stack_grows_down and friends and hardwire the decision within guard_zones since the stack overflow checking was only ported to x86 and sparc. --- src/lisp/os-common.c | 33 ++++++--------------------------- 1 file changed, 6 insertions(+), 27 deletions(-) mode change 100644 => 100755 src/lisp/os-common.c diff --git a/src/lisp/os-common.c b/src/lisp/os-common.c old mode 100644 new mode 100755 index e6684b2da..9ea6f4603 --- a/src/lisp/os-common.c +++ b/src/lisp/os-common.c @@ -368,23 +368,6 @@ lazy_resolve_linkage(unsigned long retaddr) #endif /* LINKAGE_TABLE */ } -static int -os_stack_grows_down_1(int *local_var_address) -{ - int dummy; - - return &dummy < local_var_address; -} - -/* Value is true if the processor stack grows down. */ - -int -os_stack_grows_down(void) -{ - int dummy; - - return os_stack_grows_down_1(&dummy); -} #ifdef RED_ZONE_HIT @@ -425,17 +408,13 @@ static void guard_zones(char **yellow_start, char **red_start) { #if (defined(i386) || defined(__x86_64)) - if (os_stack_grows_down()) { - char *end = (char *) CONTROL_STACK_START; - - *red_start = end; - *yellow_start = *red_start + RED_ZONE_SIZE; - } else { - char *end = (char *) CONTROL_STACK_START + control_stack_size; + /* + * All x86's have a control stack (aka C stack) that grows down. + */ + char *end = (char *) CONTROL_STACK_START; - *red_start = end - RED_ZONE_SIZE; - *yellow_start = *red_start - YELLOW_ZONE_SIZE; - } + *red_start = end; + *yellow_start = *red_start + RED_ZONE_SIZE; #else /* * On Solaris/sparc, the C stack grows down, but the Lisp control -- GitLab