This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug other/42333] complex division failure on darwin10 with -lm



------- Comment #29 from howarth at nitro dot med dot uc dot edu  2009-12-09 23:06 -------
Ah, I understand now....

gcc-4 -O2 builtin-math-7-reduced.c
./a.out
otool -L ./a.out
./a.out:
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version
246.0.0)
        /sw/lib/gcc4.5/lib/libgcc_s.1.dylib (compatibility version 1.0.0,
current version 1.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 125.0.0)

gcc-4 -O2 -mmacosx-version-min=10.5 builtin-math-7-reduced.c
./a.out
Abort
otool -L ./a.out
./a.out:
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version
246.0.0)
        /sw/lib/gcc4.5/lib/libgcc_s.1.dylib (compatibility version 1.0.0,
current version 1.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 125.0.0)

So while at first glance, the same __divdc3 symbol from
/usr/lib/libgcc_s.1.dylib should be resolved as from
/usr/lib/libSystem.B.dylib...

nm /usr/lib/libgcc_s.1.dylib | grep ___divdc3
0019fa1e S $ld$hide$os10.4$___divdc3
0019fa1f S $ld$hide$os10.5$___divdc3
001640d0 T ___divdc3
nm /usr/lib/libSystem.B.dylib | grep ___divdc3
0019fa1e S $ld$hide$os10.4$___divdc3
0019fa1f S $ld$hide$os10.5$___divdc3
001640d0 T ___divdc3

without explicitly passing  -mmacosx-version-min=10.5 to gcc, the __dividc3 is
ignored in  /usr/lib/libgcc_s.1.dylib and gotten from
/sw/lib/gcc4.5/lib/libgcc_s.1.dylib instead. When
we pass -lm, the linkage of /usr/lib/libSystem.B.dylib provides ___dividc3.

gcc-4 -O2 builtin-math-7-reduced.c -lm
./a.out
Abort
otool -L ./a.out
./a.out:
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 125.0.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version
246.0.0)
        /sw/lib/gcc4.5/lib/libgcc_s.1.dylib (compatibility version 1.0.0,
current version 1.0.0)

This clears up my confusion about why usr/lib/libgcc_s.1.dylib wasn't providing
___dividc3
even though it appeared earlier in the linkage.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42333


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]