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

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