This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug other/42333] complex division failure on darwin10 with -lm
- From: "howarth at nitro dot med dot uc dot edu" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 9 Dec 2009 23:06:06 -0000
- Subject: [Bug other/42333] complex division failure on darwin10 with -lm
- References: <bug-42333-578@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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