From: Graham Agnew Date: 2009-03-20T00:11:00+09:00 Subject: Re: Compiling 1.9.1p0 on AIX 5.3 using xlc So, I've gotten over this hurdle by modifying the enc.mk file to use the following value for dldflags: > dldflags = -eInit_$(basename $(notdir $@)) The -e option to th compiler sets the entry point of the shared library in AIX. This is needed because in dln.c, the load() function is expected to return a pointer to this function. But as I trace through this, the encdb.so still wasn't loading due to unresolved symbols. I've further modified enc.mk to link in encoding.o to resolve these missing symbols. So now encdb.so loads. Now I'm getting a problem with miniruby getting into an infinite loop. For some reason it's spinning on line 384 in st.c. unpack_entries(table = (nil), 0x110296f70, 0x0), line 384 in "st.c" dmyencoding.enc_register_at(index = 150994943, name = "\360", encoding = 0x0fffffffffffdb30), line 204 in "encoding.c" dmyencoding.enc_register(name = "", encoding = 0x09001000a067c4d0), line 219 in "encoding.c" dmyencoding.rb_encdb_declare(name = ""), line 255 in "encoding.c" Init_encdb(), line 1 in "encdb.h" unnamed block in dln_load(file = "c\343"), line 1348 in "dln.c" dln_load(file = "c\343"), line 1348 in "dln.c" load_ext(path = 4295785724), line 532 in "load.c" rb_vm_call_cfunc(recv = 1152921504606838400, func = 0x00000001101cc5d0, arg = 4295439756, blockptr = (nil), filename = 1152921504606838400), line 1371 in "vm.c" unnamed block in rb_require_safe(fname = 4564958760, safe = 0), line 567 in "load.c" rb_require_safe(fname = 4564958760, safe = 0), line 567 in "load.c" dmyencoding.require_enc(enclib = 0), line 452 in "encoding.c" rb_protect(proc = 0x000000011002c648, data = 4564958760, state = (nil)), line 647 in "eval.c" dmyencoding.load_encoding(name = (invalid char ptr (0xbadc0ffee0ddf00d))), line 474 in "encoding.c" dmyencoding.rb_enc_find_index(name = "^I"), line 514 in "encoding.c" process_options(arg = 12), line 1280 in "ruby.c" rb_vm_call_cfunc(recv = 4564961360, func = 0x000000011002e9c8, arg = 0, blockptr = 0x0000000100196288, filename = 1152921504606842768), line 1371 in "vm.c" ruby_process_options(argc = 1767859311, argv = 0x74002e646f5f736f), line 1805 in "ruby.c" unnamed block in ruby_options(argc = 12, argv = 0x0ffffffffffff470), line 88 in "eval.c" ruby_options(argc = 12, argv = 0x0ffffffffffff470), line 88 in "eval.c" unnamed block in main(argc = 12, argv = 0x0ffffffffffff470), line 34 in "main.c" main(argc = 12, argv = 0x0ffffffffffff470), line 34 in "main.c" Anyone with any clues here? I've also tried linking with encdb.so with dmyencoding.o since dmyenoding.c just does a #define and then a #include of encoding.c, but it doesn't make any difference. I'm now completely stuck. -- Posted via http://www.ruby-forum.com/.