Richard, I apologize for the mix up in testing the race condition patch for value profiling of the indirect calls on darwin. We may need to regress that out for gcc 4.5, but first I would like to try to get a PR opened to define the scope of the problem that it causes. In particular, it is very strange that darwin appears to be the only target exhibiting failures in profiling after the race condition patch was committed. On darwin this patch causes unresolved symbols...
/sw/src/fink.build/gcc45-4.4.999-20100330/darwin_objdir/gcc/xgcc -B/sw/src/fink.build/gcc45-4.4.999-20100330/darwin_objdir/gcc/ /sw/src/fink.build/gcc45-4.4.999-20100330/gcc-4.5-20100330/gcc/testsuite/gcc.dg/matrix/transpose-1.c -fprofile-generate -O3 -lm -o /sw/src/fink.build/gcc45-4.4.999-20100330/darwin_objdir/gcc/testsuite/gcc/transpose-1.x01 Undefined symbols: "___emutls_v.__gcov_indirect_call_counters", referenced from: _mem_init in cc591Wfh.o _main in cc591Wfh.o global constructors keyed to 65535_0_transpose_1.c in cc591Wfh.o "___emutls_v.__gcov_indirect_call_callee", referenced from: _mem_init in cc591Wfh.o _mem_init in cc591Wfh.o _main in cc591Wfh.o _main in cc591Wfh.o global constructors keyed to 65535_0_transpose_1.c in cc591Wfh.o global constructors keyed to 65535_0_transpose_1.c in cc591Wfh.o ld: symbol(s) not found collect2: ld returned 1 exit status Is darwin the only target that really uses emulated tls? I had assumed from... case ${host} in i[34567]86-*-linux* | x86_64-*-linux* | \ i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | \ i[34567]86-*-gnu*) tmake_file="${tmake_file} t-tls" ;; esac in libgcc/config.host that only those targets are actually using native tls in FSF gcc. Or are there actually different levels of emulated tls? Who has the most expertise on the emulated tls code and could provide some insight on this issue? There is some concern that the emulated tls code might not be functioning entirely as expected on darwin (despite the absence of testsuite failures without the race condition patch). Thanks in advance for any suggestions. Jack ps We certainly have the emutls symbols in gcc trunk in general. Current trunk shows... [MacPro:darwin_objdir/x86_64-apple-darwin10.3.0/libgcc] howarth% nm libgcc_s.1.dylib | grep emutls 00013e70 T ___emutls_get_address 00014070 T ___emutls_register_common 00013e20 t _emutls_destroy 00013de0 t _emutls_init 00015100 b _emutls_key 000150a0 d _emutls_mutex 000150fc b _emutls_size [MacPro:darwin_objdir/x86_64-apple-darwin10.3.0/libgcc] howarth% nm libgcc_ext.10.5.dylib | grep emutls 00013e70 T ___emutls_get_address 00014070 T ___emutls_register_common