From fc5746681e31307d55c3a4718883b9f8b4f0f67b Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 6 Jul 2008 15:59:40 +0000 Subject: [PATCH] * thread_pthread.c (ruby_init_stack): prior STACK_END_ADDRESS if found. [ruby-core:17624] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ thread_pthread.c | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/ChangeLog b/ChangeLog index c1586d5b85..d8135259b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Jul 7 00:59:37 2008 Nobuyoshi Nakada + + * thread_pthread.c (ruby_init_stack): prior STACK_END_ADDRESS if + found. [ruby-core:17624] + Sun Jul 6 23:48:06 2008 Nobuyoshi Nakada * ext/socket/socket.c (bsock_send, s_recvfrom, ruby_connect, s_accept), diff --git a/thread_pthread.c b/thread_pthread.c index 55e7238d2d..72a4dae8cb 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -179,6 +179,10 @@ static struct { #endif } native_main_thread; +#ifdef STACK_END_ADDRESS +extern void *STACK_END_ADDRESS; +#endif + #undef ruby_init_stack void ruby_init_stack(VALUE *addr @@ -188,12 +192,16 @@ ruby_init_stack(VALUE *addr ) { native_main_thread.id = pthread_self(); +#ifdef STACK_END_ADDRESS + native_main_thread.stack_start = STACK_END_ADDRESS; +#else if (!native_main_thread.stack_start || STACK_UPPER(&addr, native_main_thread.stack_start > addr, native_main_thread.stack_start < addr)) { native_main_thread.stack_start = addr; } +#endif #ifdef __ia64 if (!native_main_thread.register_stack_start || (VALUE*)bsp < native_main_thread.register_stack_start) {