The commit of... Author: rguenth Date: Tue Mar 30 13:10:16 2010 New Revision: 157822
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=157822 Log: 2010-03-30 Seongbae Park <seongbae.p...@gmail.com> Jack Howarth <howa...@bromo.med.uc.edu> * tree-profile.c (tree_init_ic_make_global_vars): Make static variables TLS. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-profile.c ...resulted in a number of profile related testsuite regressions on darwin. These are all of the form... [MacPro:~] howarth% /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 Reverting r157822 eliminates these failures. These are surprising since darwin should now provide all of the additional emutls symbols via a versioned libgcc_ext shared library. On x86_64-apple-darwin10, current gcc trunk produces... [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 The undefined ___emutls_v.__gcov_indirect_call_counters and ___emutls_v.__gcov_indirect_call_callee symbols occur for the following permutations... 1) r157820 with r157822 applied (where libgcc is built with only -DHAVE_CC_TLS). 2) r157822 (where libgcc is built with both -DHAVE_CC_TLS and -DUSE_EMUTLS) 3) r157822 with the following patch applied to invert the logic of that commit so that neither -DHAVE_CC_TLS or -DUSE_EMUTLS are used in building libgcc) Index: libgcc/Makefile.in =================================================================== --- libgcc/Makefile.in (revision 157840) +++ libgcc/Makefile.in (working copy) @@ -226,7 +226,7 @@ # will usually contain -g, so for the moment CFLAGS goes first. We must # include CFLAGS - that's where multilib options live. INTERNAL_CFLAGS = $(CFLAGS) $(LIBGCC2_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \ - $(INCLUDES) @set_have_cc_tls@ @set_use_emutls@ + $(INCLUDES) @set_have_cc_tls@ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) Index: libgcc/configure.ac =================================================================== --- libgcc/configure.ac (revision 157840) +++ libgcc/configure.ac (working copy) @@ -232,20 +232,13 @@ # gcc, which can't be used to build executable due to that libgcc # is yet to be built here. GCC_CHECK_CC_TLS +GCC_CHECK_EMUTLS set_have_cc_tls= -if test "$enable_tls $gcc_cv_have_cc_tls" = "yes yes"; then +if test "$enable_tls $gcc_cv_have_cc_tls $gcc_cv_use_emutls" = "yes yes no"; then set_have_cc_tls="-DHAVE_CC_TLS" fi AC_SUBST(set_have_cc_tls) -# See if we have emulated thread-local storage. -GCC_CHECK_EMUTLS -set_use_emutls= -if test "$enable_tls $gcc_cv_use_emutls" = "yes yes"; then - set_use_emutls="-DUSE_EMUTLS" -fi -AC_SUBST(set_use_emutls) - # Conditionalize the makefile for this target machine. tmake_file_= for f in ${tmake_file} -- Summary: ___emutls_v.__gcov_indirect_call_[counters|callee] undefined on *-*-darwin* Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: howarth at nitro dot med dot uc dot edu GCC build triplet: *-*-darwin* GCC host triplet: *-*-darwin* GCC target triplet: *-*-darwin* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43602