[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