Bugs item #1243, was opened at 2004-12-21 19:23
You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=1243&group_id=426

Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Art Lazanoff (lazanoff)
Assigned to: Nobody (None)
Summary: ruby 1.8.1 installation problems on ia64/altix

Initial Comment:
ruby defaults to using gcc c89 syntax. Use of -pedantic reveals ruby is using 'long long' and 'inline'. Compiling with gcc -std=gnu99 solves a stack management problem in the code since gnu99 treats 'long long' as 64-bit. 

In gc.c the following 
" /* ruby crashes on IA64 if compiled with optimizer on */
/* when if STACK_LEVEL_MAX is greater than this magic number */
/* I know this is a kludge. I suspect optimizer bug */
"
seems to be unnecessary when -std=gnu99 is used.

There are several warnings still with -std=gnu99 that should also be addressed:

gcc -std=gnu99 -pedantic -D__ia64__ -I. -I. -c process.c
process.c: In function `proc_detach':
process.c:522: warning: type of `obj' defaults to `int'
process.c: In function `proc_getpgid':
process.c:1139: warning: implicit declaration of function `getpgid'
process.c: In function `p_sys_setresuid':
process.c:1319: warning: implicit declaration of function `setresuid'
process.c: In function `p_sys_setresgid':
process.c:1562: warning: implicit declaration of function `setresgid'
process.c: In function `proc_setmaxgroups':
process.c:1724: warning: type of `val' defaults to `int'

gcc -std=gnu99 -pedantic -D__ia64__ -I. -I. -c re.c
re.c: In function `rb_memsearch':
re.c:121: warning: pointer targets in passing arg 1 of `rb_memcicmp' differ in signedness
re.c:121: warning: pointer targets in passing arg 2 of `rb_memcicmp' differ in signedness
re.c:129: warning: pointer targets in passing arg 1 of `rb_memcicmp' differ in signedness
re.c:129: warning: pointer targets in passing arg 2 of `rb_memcicmp' differ in signedness

This version passes make test and also runs the following test case to much deeper levels (after increasing the default stacksize):

def helloLevel level
puts "hello world! "+level.to_s
helloLevel(level+1) 
end
...
hello world! 314336
hello world! 314337
hello world! 314338
../helloLevel.rb:3:in `puts': stack level too deep (SystemStackError)
from ../helloLevel.rb:3:in `helloLevel'
from ../helloLevel.rb:4:in `helloLevel'
from ../helloLevel.rb:4:in `helloLevel'
from ../helloLevel.rb:4:in `helloLevel'
from ../helloLevel.rb:4:in `helloLevel'
from ../helloLevel.rb:4:in `helloLevel'
from ../helloLevel.rb:4:in `helloLevel'
from ../helloLevel.rb:4:in `helloLevel'
... 314329 levels...
from ../helloLevel.rb:4:in `helloLevel'
from ../helloLevel.rb:4:in `helloLevel'
from ../helloLevel.rb:4:in `helloLevel'
from ../helloLevel.rb:7
hello world!

Platform is ia-64/altix.
./configure couldn't identify the platform:

checking build system type... ia64-unknown-linux
checking host system type... ia64-unknown-linux
checking target system type... ia64-unknown-linux

----------------------------------------------------------------------

You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=1243&group_id=426