On Solaris 10, with GCC 4.2 and GCC 4.4, any application I compile *always* has the _mcount symbol, which if I understand correctly should only be present if my application is being built with profiling. I've verified that I don't see this behavior on Linux, only on Solaris, and I've double checked that gcc/g++ aren't aliased in my shell. I am also linking no libraries explicitly. If I run ldd on the resulting executable, and then run nm on all of the listed shared libraries (libc and such) none of them contain the symbol _mcount, although one does contain the symbol _mcount_newent. Any idea why this would be happening? I have a post-build script that verifies that _mcount is not present when the profile setting is off, to ensure that my build system is working correctly. I could remove it, but I don't want to do so unless this symbol is really supposed to be present. mytest.cpp: int main () { return 0; } $ g++ -O2 mytest.cpp $ nm a.out | grep _mcount [65] | 134547444| 1|FUNC |GLOB |0 |11 |_mcount $ ldd a.out libstdc++.so.6 => /opt/app/g++lib6/lib/libstdc++.so.6 libm.so.2 => /lib/libm.so.2 libgcc_s.so.1 => /opt/app/nonc++/lib/libgcc_s.so.1 libc.so.1 => /lib/libc.so.1 $ nm /opt/app/g++lib6/lib/libstdc++.so.6 | grep _mcount $ nm /lib/libm.so.2 | grep _mcount $ nm /opt/app/nonc++/lib/libgcc_s.so.1 | grep _mcount $ nm /lib/libc.so.1 | grep _mcount [392] | 285460| 70|FUNC |LOCL |2 |11 |_mcount_newent