From: Albert Chin Date: 2008-10-17T00:59:38+09:00 Subject: 1.8.7-p72 on AIX 5.3 with IBM compiler $ gtar zxf ruby-1.8.7-p72.tar.gz $ cd ruby-1.8.7-p72 $ ./configure CC=xlc_r CFLAGS="-g" --enable-shared --enable-pthread $ gmake ... xlc_r -g -DRUBY_EXPORT -I. -I. -c eval.c "eval.c", line 12093.12: 1506-343 (S) Redeclaration of thread_init differs from previous declaration on line 920 of "/usr/include/sys/thread.h". "eval.c", line 12093.12: 1506-382 (I) The type "int" of identifier thread_init differs from previous type "void(unsigned long long,unsigned long long)". gmake: *** [eval.o] Error 1 [fixed] $ gmake ... xlc_r -g -DRUBY_EXPORT -I. -I. -c parse.c "intern.h", line 28.7: 1506-166 (S) Definition of function rb_ary_new3 requires parentheses. "intern.h", line 28.19: 1506-276 (S) Syntax error: possible missing '{'? "node.h", line 21.5: 1506-045 (S) Undeclared identifier NODE_METHOD. ... [fixed] $ gmake ... xlc_r -g -DRUBY_EXPORT -L. -bE:ruby.imp -brtl main.o libruby-static.a -lpthread -ldl -lcrypt -lm -o miniruby gmake: *** [.rbconfig.time] IOT/Abort trap (core dumped) $ dbx miniruby core (/usr/ccs/bin/dbx) where _p_raise(??) at 0xd01242a4 raise.raise(??) at 0xd0359c70 abort.abort() at 0xd03b7f78 rb_jump_context(env = 0x2ff20d30, val = 2), line 97 in "eval.c" rb_iterate(it_proc = 0x2001bd28, data1 = 537241180, bl_proc = 0x2001d5f4, data2 = 804381664), line 5417 in "eval.c" enum_each_with_index(obj = 537241180), line 1508 in "enum.c" call_cfunc(func = 0x2001bca4, recv = 537241180, len = 0, argc = 0, argv = (nil)), line 5752 in "eval.c" unnamed block in rb_call0(klass = 537274880, recv = 537241180, id = 3929, oid = 3929, argc = 0, argv = (nil), body = 0x200686a8, flags = 0), line 5904 in "eval.c" unnamed block in rb_call0(klass = 537274880, recv = 537241180, id = 3929, oid = 3929, argc = 0, argv = (nil), body = 0x200686a8, flags = 0), line 5904 in "eval.c" unnamed block in rb_call0(klass = 537274880, recv = 537241180, id = 3929, oid = 3929, argc = 0, argv = (nil), body = 0x200686a8, flags = 0), line 5904 in "eval.c" rb_call0(klass = 537274880, recv = 537241180, id = 3929, oid = 3929, argc = 0, argv = (nil), body = 0x200686a8, flags = 0), line 5904 in "eval.c" rb_call(klass = 537274880, recv = 537241180, mid = 3929, argc = 0, argv = (nil), scope = 0, self = 537300680), line 6151 in "eval.c" unnamed block in rb_eval(self = 537300680, n = 0x20058870), line 3492 in "eval.c" unnamed block in rb_eval(self = 537300680, n = 0x20058870), line 3492 in "eval.c" rb_eval(self = 537300680, n = 0x20058870), line 3492 in "eval.c" unnamed block in rb_eval(self = 537300680, n = 0x20058618), line 3222 in "eval.c" unnamed block in rb_eval(self = 537300680, n = 0x20058618), line 3222 in "eval.c" unnamed block in rb_eval(self = 537300680, n = 0x20058618), line 3222 in "eval.c" rb_eval(self = 537300680, n = 0x20058618), line 3222 in "eval.c" eval_node(self = 537300680, node = 0x20058618), line 1436 in "eval.c" unnamed block in rb_load(fname = 537233720, wrap = 0), line 7032 in "eval.c" unnamed block in rb_load(fname = 537233720, wrap = 0), line 7032 in "eval.c" unnamed block in rb_load(fname = 537233720, wrap = 0), line 7032 in "eval.c" unnamed block in rb_load(fname = 537233720, wrap = 0), line 7032 in "eval.c" unnamed block in rb_load(fname = 537233720, wrap = 0), line 7032 in "eval.c" unnamed block in rb_load(fname = 537233720, wrap = 0), line 7032 in "eval.c" unnamed block in rb_load(fname = 537233720, wrap = 0), line 7032 in "eval.c" rb_load(fname = 537233720, wrap = 0), line 7032 in "eval.c" unnamed block in rb_require_safe(fname = 537233880, safe = 0), line 7389 in "eval.c" unnamed block in rb_require_safe(fname = 537233880, safe = 0), line 7389 in "eval.c" rb_require_safe(fname = 537233880, safe = 0), line 7389 in "eval.c" rb_require(fname = "./ext/purelib.rb"), line 7429 in "eval.c" unnamed block in rb_protect(proc = 0x2001e3bc, data = 537575944, state = 0x2ff22424), line 5526 in "eval.c" rb_protect(proc = 0x2001e3bc, data = 537575944, state = 0x2ff22424), line 5526 in "eval.c" unnamed block in require_libraries(), line 387 in "ruby.c" require_libraries(), line 387 in "ruby.c" unnamed block in load_file(fname = "./mkconfig.rb", script = 1), line 974 in "ruby.c" load_file(fname = "./mkconfig.rb", script = 1), line 974 in "ruby.c" proc_options(argc = 4, argv = 0x2ff229c8), line 853 in "ruby.c" ruby_process_options(argc = 10, argv = 0x2ff229b0), line 1246 in "ruby.c" unnamed block in ruby_options(argc = 10, argv = 0x2ff229b0), line 1532 in "eval.c" ruby_options(argc = 10, argv = 0x2ff229b0), line 1532 in "eval.c" unnamed block in main(argc = 10, argv = 0x2ff229b0, envp = 0x2ff229dc), line 47 in "main.c" main(argc = 10, argv = 0x2ff229b0, envp = 0x2ff229dc), line 47 in "main.c" -- albert chin (china @at@ thewrittenword .dot. com) -- snip snip --- eval.c.orig 2008-08-04 03:24:26.000000000 +0000 +++ eval.c 2008-10-16 15:52:27.000000000 +0000 @@ -12090,7 +12090,7 @@ return th; } -static int thread_init; +static int rbthread_init; #if defined(_THREAD_SAFE) static void @@ -12164,7 +12164,7 @@ { struct itimerval tval; - if (!thread_init) return; + if (!rbthread_init) return; tval.it_interval.tv_sec = 0; tval.it_interval.tv_usec = 10000; tval.it_value = tval.it_interval; @@ -12176,7 +12176,7 @@ { struct itimerval tval; - if (!thread_init) return; + if (!rbthread_init) return; tval.it_interval.tv_sec = 0; tval.it_interval.tv_usec = 0; tval.it_value = tval.it_interval; @@ -12203,8 +12203,8 @@ "can't start a new thread (frozen ThreadGroup)"); } - if (!thread_init) { - thread_init = 1; + if (!rbthread_init) { + rbthread_init = 1; #if defined(HAVE_SETITIMER) || defined(_THREAD_SAFE) #if defined(POSIX_SIGNAL) posix_signal(SIGVTALRM, catch_timer); --- intern.h.orig 2008-07-07 03:29:28.000000000 +0000 +++ intern.h 2008-10-16 15:52:33.000000000 +0000 @@ -25,7 +25,7 @@ VALUE rb_check_array_type _((VALUE)); VALUE rb_ary_new _((void)); VALUE rb_ary_new2 _((long)); -VALUE rb_ary_new3 __((long,...)); +VALUE rb_ary_new3 _((long,...)); VALUE rb_ary_new4 _((long, const VALUE *)); VALUE rb_ary_freeze _((VALUE)); VALUE rb_ary_aref _((int, VALUE*, VALUE)); @@ -141,11 +141,11 @@ VALUE rb_exc_new _((VALUE, const char*, long)); VALUE rb_exc_new2 _((VALUE, const char*)); VALUE rb_exc_new3 _((VALUE, VALUE)); -NORETURN(void rb_loaderror __((const char*, ...))); -NORETURN(void rb_name_error __((ID, const char*, ...))); +NORETURN(void rb_loaderror _((const char*, ...))); +NORETURN(void rb_name_error _((ID, const char*, ...))); NORETURN(void rb_invalid_str _((const char*, const char*))); -void rb_compile_error __((const char*, ...)); -void rb_compile_error_append __((const char*, ...)); +void rb_compile_error _((const char*, ...)); +void rb_compile_error_append _((const char*, ...)); NORETURN(void rb_load_fail _((const char*))); NORETURN(void rb_error_frozen _((const char*))); void rb_check_frozen _((VALUE)); @@ -236,7 +236,7 @@ VALUE rb_thread_local_aset _((VALUE, ID, VALUE)); void rb_thread_atfork _((void)); VALUE rb_exec_recursive _((VALUE(*)(VALUE, VALUE, int),VALUE,VALUE)); -VALUE rb_funcall_rescue __((VALUE, ID, int, ...)); +VALUE rb_funcall_rescue _((VALUE, ID, int, ...)); /* file.c */ VALUE rb_file_s_expand_path _((int, VALUE *)); VALUE rb_file_expand_path _((VALUE, VALUE)); @@ -249,7 +249,7 @@ char *rb_path_end _((const char *)); VALUE rb_file_directory_p _((VALUE,VALUE)); /* gc.c */ -NORETURN(void rb_memerror __((void))); +NORETURN(void rb_memerror _((void))); int ruby_stack_check _((void)); int ruby_stack_length _((VALUE**)); int rb_during_gc _((void)); @@ -463,8 +463,8 @@ void rb_str_setter _((VALUE, ID, VALUE*)); VALUE rb_str_intern _((VALUE)); /* struct.c */ -VALUE rb_struct_new __((VALUE, ...)); -VALUE rb_struct_define __((const char*, ...)); +VALUE rb_struct_new _((VALUE, ...)); +VALUE rb_struct_define _((const char*, ...)); VALUE rb_struct_alloc _((VALUE, VALUE)); VALUE rb_struct_aref _((VALUE, VALUE)); VALUE rb_struct_aset _((VALUE, VALUE, VALUE));