[ET Trac] [Einstein Toolkit] #946: Undefined symbol ___emutls_get_address

Einstein Toolkit trac-noreply at einsteintoolkit.org
Tue Jun 5 03:11:06 CDT 2012


#946: Undefined symbol ___emutls_get_address
------------------------+---------------------------------------------------
 Reporter:  hinder      |       Owner:  eschnett
     Type:  defect      |      Status:  new     
 Priority:  major       |   Milestone:          
Component:  SimFactory  |     Version:          
 Keywords:              |  
------------------------+---------------------------------------------------
 When I try to compile on Mac OS using the SimFactory optionlist macos-
 fink-gcc.cfg
 (https://svn.cct.lsu.edu/repos/numrel/simfactory2/trunk/mdb/optionlists
 /macos-fink-gcc.cfg), I get the following error at link time:

 {{{
 ld: warning: alignment lost in merging tentative definition
 _tmunubaserest_
 ld: warning: alignment lost in merging tentative definition
 _admmacrosrest_
 ld: warning: alignment lost in merging tentative definition
 _staticconformalrest_
 Undefined symbols:
   "___emutls_get_address", referenced from:
       __ZN4dist25collect_total_num_threadsEv.omp_fn.0 in
 libthorn_CarpetLib.a(dist.cc.o)
       dist::collect_total_num_threads()      in
 libthorn_CarpetLib.a(dist.cc.o)
       Carpet::SetupGH(tFleshConfig*, int, _cGH*) in
 libthorn_Carpet.a(SetupGH.cc.o)
 ld: symbol(s) not found
 collect2: ld returned 1 exit status
 make[1]: *** [/Users/ian/Cactus/Kerrness/exe/cactus_sim] Error 1
 make: *** [sim] Error 2
 }}}

 I don't know if the "alignment lost" warnings are related to the fatal
 error.  This seems to be some issue related to OpenMP.  The problem
 appeared fairly recently, as I have been able to compile older versions of
 the ET with no problem, and this option list has not been changed.

 I am reporting this against SimFactory because the problem does not happen
 with other option lists in the machine database, but I suspect that the
 issue arose due to a change in Carpet (maybe related to affinity?).

 From some Google searching, this symbol is part of GCC's thread-local
 storage emulation for Mac OS.  Some people have had this problem when
 mixing object files compiled by different versions of GCC.  I am using GCC
 4.4.4 from Fink:

 {{{
 > g++-4 --version
 g++-4 (GCC) 4.4.4
 }}}

 This page, http://stackoverflow.com/questions/7885246/what-is-the-emutls-
 get-address-symbol, says

 {{{
 Using thread local storage (e.g. OpenMP ThreadPrivate variables) on Darwin
 requires manually linking to TLS emutls, via either -lgcc_s.so.1 or
 -lgcc_eh
 }}}

 There is also a suggestion to upgrade the version of GCC, which I am
 trying now.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/946>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list