diff options
| author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-06 15:59:40 +0000 |
|---|---|---|
| committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-06 15:59:40 +0000 |
| commit | 25d83ac72e97fdbae21cd775fdff90ace3ac0026 (patch) | |
| tree | 90528ba9beaf073df848a410f8f79e4d4d677401 /thread_pthread.c | |
| parent | 828b092b98893db3ecdccb9f46ab5cb0b9ed0f1e (diff) | |
| download | ruby-25d83ac72e97fdbae21cd775fdff90ace3ac0026.tar.gz ruby-25d83ac72e97fdbae21cd775fdff90ace3ac0026.tar.xz ruby-25d83ac72e97fdbae21cd775fdff90ace3ac0026.zip | |
* thread_pthread.c (ruby_init_stack): prior STACK_END_ADDRESS if
found. [ruby-core:17624]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread_pthread.c')
| -rw-r--r-- | thread_pthread.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/thread_pthread.c b/thread_pthread.c index 55e7238d2..72a4dae8c 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) { |
