aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-07-06 15:59:40 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-07-06 15:59:40 +0000
commitfc5746681e31307d55c3a4718883b9f8b4f0f67b (patch)
tree90528ba9beaf073df848a410f8f79e4d4d677401
parent2754e843b6e38ec9f91070e202abff41e88d4c6f (diff)
downloadruby-fc5746681e31307d55c3a4718883b9f8b4f0f67b.tar.gz
* 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
-rw-r--r--ChangeLog5
-rw-r--r--thread_pthread.c8
2 files changed, 13 insertions, 0 deletions
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 <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): prior STACK_END_ADDRESS if
+ found. [ruby-core:17624]
+
Sun Jul 6 23:48:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* 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) {