After this change I get:
dyld: lazy symbol binding failed: Symbol not found: _nurat_canonicalization
r34828 does not have this issue, and I have run `make distclean; autoconf; CC=clang ./configure; make` beforehand.
$ make test-all TESTS="bigdecimal -n test_to_d"
CC = clang
LD = ld
LDSHARED = clang -dynamic -bundle
CFLAGS = -O3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration -pipe
XCFLAGS = -include ruby/config.h -include ruby/missing.h -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -I. -I.ext/include/x86_64-darwin11.3.0 -I./include -I.
DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace -fstack-protector -Wl,-u,_objc_msgSend
SOLIBS =
./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" bigdecimal -n test_to_d
Run options: "--ruby=./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" -n test_to_d
# Running tests:
dyld: lazy symbol binding failed: Symbol not found: _nurat_canonicalization
Referenced from: /Users/drbrain/Work/svn/ruby/trunk/.ext/x86_64-darwin11.3.0/mathn/rational.bundle
Expected in: flat namespace
dyld: Symbol not found: _nurat_canonicalization
Referenced from: /Users/drbrain/Work/svn/ruby/trunk/.ext/x86_64-darwin11.3.0/mathn/rational.bundle
Expected in: flat namespace
F
Finished tests in 0.249469s, 4.0085 tests/s, 4.0085 assertions/s.
1) Failure:
test_to_d(TestBigDecimal) [/Users/drbrain/Work/svn/ruby/trunk/test/bigdecimal/test_bigdecimal.rb:1311]:
[ruby-core:42969] (#<Process::Status: pid 23038 SIGTRAP (signal 5)>)
1 tests, 1 assertions, 1 failures, 0 errors, 0 skips
ruby -v: ruby 2.0.0dev (2012-02-28 trunk 34838) [x86_64-darwin11.3.0]
make: *** [yes-test-all] Error 1
_nurat_canonicalization appears to exist in the right places, so I am stumped:
$ nm miniruby | grep _nurat_canon
00000001000a9e00 t _nurat_canonicalization
$ nm libruby-static.a | grep _nurat_canon
0000000000000000 T _nurat_canonicalization
00000000000064a0 S _nurat_canonicalization.eh
$ nm .ext/x86_64-darwin11.3.0/mathn/rational.bundle
0000000000000f40 T _Init_rational
U _nurat_canonicalization
U dyld_stub_binder
···
On Feb 27, 2012, at 12:03 AM, nobu@ruby-lang.org wrote:
nobu 2012-02-27 17:03:24 +0900 (Mon, 27 Feb 2012)
New Revision: 34829
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34829
Log:
* ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): since methods
can be overridden, so should not make an assumption on the type
of results. [ruby-core:42969][Bug #6093]Modified files:
trunk/ChangeLog
trunk/ext/bigdecimal/bigdecimal.c
trunk/test/bigdecimal/test_bigdecimal.rb