Message ID | 201202111514.40618.ebotcazou@adacore.com |
---|---|
State | New |
Headers | show |
On Sat, Feb 11, 2012 at 03:14:40PM +0100, Eric Botcazou wrote: > Hi, > > this completes the half-implemented linking scheme of libitm and makes it mimic > that of libgomp entirely. We need the -pthread thing on Solaris 8. > > Tested on SPARC/Solaris 8 & 9 and i586/Linux, OK for the mainline? This change causes massive failures at -m32/-m64 on x86_64-apple-darwin11 in the libitm testsuite... FAIL: libitm.c/cancel.c (test for excess errors) WARNING: libitm.c/cancel.c compilation failed to produce executable FAIL: libitm.c/clone-1.c (test for excess errors) WARNING: libitm.c/clone-1.c compilation failed to produce executable FAIL: libitm.c/dropref-2.c (test for excess errors) WARNING: libitm.c/dropref-2.c compilation failed to produce executable FAIL: libitm.c/dropref.c (test for excess errors) WARNING: libitm.c/dropref.c compilation failed to produce executable FAIL: libitm.c/memcpy-1.c (test for excess errors) WARNING: libitm.c/memcpy-1.c compilation failed to produce executable FAIL: libitm.c/memset-1.c (test for excess errors) WARNING: libitm.c/memset-1.c compilation failed to produce executable FAIL: libitm.c/notx.c (test for excess errors) WARNING: libitm.c/notx.c compilation failed to produce executable FAIL: libitm.c/reentrant.c (test for excess errors) WARNING: libitm.c/reentrant.c compilation failed to produce executable FAIL: libitm.c/simple-1.c (test for excess errors) WARNING: libitm.c/simple-1.c compilation failed to produce executable FAIL: libitm.c/simple-2.c (test for excess errors) WARNING: libitm.c/simple-2.c compilation failed to produce executable FAIL: libitm.c/stackundo.c (test for excess errors) WARNING: libitm.c/stackundo.c compilation failed to produce executable FAIL: libitm.c/txrelease.c (test for excess errors) WARNING: libitm.c/txrelease.c compilation failed to produce executable Running /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120211/libitm/testsuite/libitm.c++/c++.exp ... FAIL: libitm.c++/dropref.C (test for excess errors) WARNING: libitm.c++/dropref.C compilation failed to produce executable FAIL: libitm.c++/eh-1.C (test for excess errors) WARNING: libitm.c++/eh-1.C compilation failed to produce executable # of expected passes 1 # of unexpected failures 14 # of unsupported tests 1 These appear in the form... Executing on host: /sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/xgcc -B/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/ /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120211/libitm/testsuite/libitm.c/cancel.c -B/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.3.0/./libitm/ -I/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.3.0/./libitm -I/sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20120211/libitm/testsuite/.. -shared-libgcc -fmessage-length=0 -fgnu-tm -O2 -L/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.3.0/./libitm/.libs -lm -m64 -o ./cancel.exe (timeout = 300) Undefined symbols for architecture x86_64: "__ITM_registerTMCloneTable", referenced from: ___doTMRegistrations in crttms.o "__ITM_abortTransaction", referenced from: _cancel1 in ccSkMYPk.o transaction clone for cancel1 in ccSkMYPk.o _main in ccSkMYPk.o "__ITM_beginTransaction", referenced from: _main in ccSkMYPk.o "__ITM_WU4", referenced from: _main in ccSkMYPk.o "__ITM_commitTransaction", referenced from: _main in ccSkMYPk.o "__ITM_inTransaction", referenced from: _main in ccSkMYPk.o "__ITM_deregisterTMCloneTable", referenced from: ___doTMdeRegistrations in crttme.o ld: symbol(s) not found for architecture x86_64 collect2: error: ld returned 1 exit status compiler exited with status 1 output is: Undefined symbols for architecture x86_64: "__ITM_registerTMCloneTable", referenced from: ___doTMRegistrations in crttms.o "__ITM_abortTransaction", referenced from: _cancel1 in ccSkMYPk.o transaction clone for cancel1 in ccSkMYPk.o _main in ccSkMYPk.o "__ITM_beginTransaction", referenced from: _main in ccSkMYPk.o "__ITM_WU4", referenced from: _main in ccSkMYPk.o "__ITM_commitTransaction", referenced from: _main in ccSkMYPk.o "__ITM_inTransaction", referenced from: _main in ccSkMYPk.o "__ITM_deregisterTMCloneTable", referenced from: ___doTMdeRegistrations in crttme.o ld: symbol(s) not found for architecture x86_64 collect2: error: ld returned 1 exit status FAIL: libitm.c/cancel.c (test for excess errors) > > > 2012-02-11 Eric Botcazou <ebotcazou@adacore.com> > > * gcc.c (LINK_COMMAND_SPEC): Deal with -fgnu-tm. > (GTM_SELF_SPECS): Define if not already defined. > (driver_self_specs): Add GTM_SELF_SPECS. > * config/darwin.h (GTM_SELF_SPECS): Define. > * config/i386/cygwin.h (GTM_SELF_SPECS): Likewise. > * config/i386/mingw32.h (GTM_SELF_SPECS): Likewise. > > > 2012-02-11 Eric Botcazou <ebotcazou@adacore.com> > > * configure.ac (link_itm): Fix comment. > * configure: Regenerate. > * testsuite/lib/libitm.exp: Do not pass -litm for the link. > > > -- > Eric Botcazou > Index: gcc/gcc.c > =================================================================== > --- gcc/gcc.c (revision 183864) > +++ gcc/gcc.c (working copy) > @@ -675,6 +675,7 @@ proper position among the other output f > %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}}\ > %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\ > %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\ > + %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ > %(mflib) " STACK_SPLIT_SPEC "\ > %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\ > %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ > @@ -839,9 +840,14 @@ static const char *const multilib_defaul > #define GOMP_SELF_SPECS "%{fopenmp|ftree-parallelize-loops=*: -pthread}" > #endif > > +/* Likewise for -fgnu-tm. */ > +#ifndef GTM_SELF_SPECS > +#define GTM_SELF_SPECS "%{fgnu-tm: -pthread}" > +#endif > + > static const char *const driver_self_specs[] = { > "%{fdump-final-insns:-fdump-final-insns=.} %<fdump-final-insns", > - DRIVER_SELF_SPECS, CONFIGURE_SPECS, GOMP_SELF_SPECS > + DRIVER_SELF_SPECS, CONFIGURE_SPECS, GOMP_SELF_SPECS, GTM_SELF_SPECS > }; > > #ifndef OPTION_DEFAULT_SPECS > Index: gcc/config/i386/cygwin.h > =================================================================== > --- gcc/config/i386/cygwin.h (revision 183864) > +++ gcc/config/i386/cygwin.h (working copy) > @@ -126,6 +126,8 @@ along with GCC; see the file COPYING3. > and the -pthread flag is not recognized. */ > #undef GOMP_SELF_SPECS > #define GOMP_SELF_SPECS "" > +#undef GTM_SELF_SPECS > +#define GTM_SELF_SPECS "" > > /* This matches SHLIB_SONAME and SHLIB_SOVERSION in t-cygwin. */ > #if DWARF2_UNWIND_INFO > Index: gcc/config/i386/mingw32.h > =================================================================== > --- gcc/config/i386/mingw32.h (revision 183864) > +++ gcc/config/i386/mingw32.h (working copy) > @@ -187,6 +187,8 @@ do { \ > #undef GOMP_SELF_SPECS > #define GOMP_SELF_SPECS "%{fopenmp|ftree-parallelize-loops=*: " \ > "-mthreads -pthread}" > +#undef GTM_SELF_SPECS > +#define GTM_SELF_SPECS "%{fgnu-tm:-mthreads -pthread}" > > /* mingw32 atexit function is safe to use in shared libraries. Use it > to register C++ static destructors. */ > Index: gcc/config/darwin.h > =================================================================== > --- gcc/config/darwin.h (revision 183864) > +++ gcc/config/darwin.h (working copy) > @@ -915,6 +915,8 @@ void add_framework_path (char *); > > #undef GOMP_SELF_SPECS > #define GOMP_SELF_SPECS "" > +#undef GTM_SELF_SPECS > +#define GTM_SELF_SPECS "" > > /* Darwin disables section anchors by default. > They should be enabled per arch where support exists in that arch. */ > Index: libitm/configure.ac > =================================================================== > --- libitm/configure.ac (revision 183864) > +++ libitm/configure.ac (working copy) > @@ -268,7 +268,7 @@ else > fi > > # Set up the set of libraries that we need to link against for libitm. > -# Note that the GOMP_SELF_SPEC in gcc.c will force -pthread for -fopenmp, > +# Note that the GTM_SELF_SPECS in gcc.c will force -pthread for -fgnu-tm, > # which will force linkage against -lpthread (or equivalent for the system). > # That's not 100% ideal, but about the best we can do easily. > if test $enable_shared = yes; then > Index: libitm/testsuite/lib/libitm.exp > =================================================================== > --- libitm/testsuite/lib/libitm.exp (revision 183864) > +++ libitm/testsuite/lib/libitm.exp (working copy) > @@ -140,7 +140,6 @@ proc libitm_init { args } { > lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs" > } > lappend ALWAYS_CFLAGS "additional_flags=-I${srcdir}/.." > - lappend ALWAYS_CFLAGS "ldflags=-litm" > > # We use atomic operations in the testcases to validate results. > if { ([istarget i?86-*-*] || [istarget x86_64-*-*])
> This change causes massive failures at -m32/-m64 on x86_64-apple-darwin11 > in the libitm testsuite... How did you test it?
On Sat, Feb 11, 2012 at 06:54:05PM +0100, Eric Botcazou wrote: > > This change causes massive failures at -m32/-m64 on x86_64-apple-darwin11 > > in the libitm testsuite... > > How did you test it? > > -- > Eric Botcazou Eric, FYI, if I restore -litm to the linkage of the failing tests, they compile and run fine. I don't understand why we think -litm can be dropped from linking the tests in the libitm testsuite. Jack
> FYI, if I restore -litm to the linkage of the failing tests, they > compile and run fine. I don't understand why we think -litm can be dropped > from linking the tests in the libitm testsuite. Because -fgnu-tm will automatically add it on the link line, like for -fopenmp.
Hi Eric, On 11 Feb 2012, at 14:14, Eric Botcazou wrote: > Hi, > > this completes the half-implemented linking scheme of libitm and > makes it mimic > that of libgomp entirely. We need the -pthread thing on Solaris 8. > > Tested on SPARC/Solaris 8 & 9 and i586/Linux, OK for the mainline? > > > 2012-02-11 Eric Botcazou <ebotcazou@adacore.com> > > * gcc.c (LINK_COMMAND_SPEC): Deal with -fgnu-tm. > (GTM_SELF_SPECS): Define if not already defined. > (driver_self_specs): Add GTM_SELF_SPECS. > * config/darwin.h (GTM_SELF_SPECS): Define. > * config/i386/cygwin.h (GTM_SELF_SPECS): Likewise. > * config/i386/mingw32.h (GTM_SELF_SPECS): Likewise. > > > 2012-02-11 Eric Botcazou <ebotcazou@adacore.com> > > * configure.ac (link_itm): Fix comment. > * configure: Regenerate. > * testsuite/lib/libitm.exp: Do not pass -litm for the link. > > > -- > Eric Botcazou > <p.diff> very little time - about to go out.. ... but I suspect LINK_COMMAND_SPEC_A in config/darwin.h ... which will need the: + %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ however, that's a very quick look. Iain
On 02/11/2012 06:14 AM, Eric Botcazou wrote: > 2012-02-11 Eric Botcazou <ebotcazou@adacore.com> > > * gcc.c (LINK_COMMAND_SPEC): Deal with -fgnu-tm. > (GTM_SELF_SPECS): Define if not already defined. > (driver_self_specs): Add GTM_SELF_SPECS. > * config/darwin.h (GTM_SELF_SPECS): Define. > * config/i386/cygwin.h (GTM_SELF_SPECS): Likewise. > * config/i386/mingw32.h (GTM_SELF_SPECS): Likewise. > > > 2012-02-11 Eric Botcazou <ebotcazou@adacore.com> > > * configure.ac (link_itm): Fix comment. > * configure: Regenerate. > * testsuite/lib/libitm.exp: Do not pass -litm for the link. Ok with the darwin followup-patch. r~
On Sat, 11 Feb 2012, Eric Botcazou wrote: > Hi, > > this completes the half-implemented linking scheme of libitm and makes it mimic > that of libgomp entirely. We need the -pthread thing on Solaris 8. It broke all targets that don't implement threads and as such don't support -pthread. And you need to gate *all* tm-related tests on something like check_effective_target_pthread. I see regress-155 for cris-elf. Can't you just limit adding -pthread to Solaris 8 or something? brgds, H-P
> It broke all targets that don't implement threads and as such > don't support -pthread. And you need to gate *all* tm-related > tests on something like check_effective_target_pthread. The question is, how is libitm supposed to work on these systems? The configure.ac file contains: # Check to see if -pthread or -lpthread is needed. Prefer the former. # In case the pthread.h system header is not found, this test will fail. XPCFLAGS="" CFLAGS="$CFLAGS -pthread" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [#include <pthread.h> void *g(void *d) { return NULL; }], [pthread_t t; pthread_create(&t,NULL,g,NULL);])], [XPCFLAGS=" -Wc,-pthread"], [CFLAGS="$save_CFLAGS" LIBS="-lpthread $LIBS" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [#include <pthread.h> void *g(void *d) { return NULL; }], [pthread_t t; pthread_create(&t,NULL,g,NULL);])], [], [AC_MSG_ERROR([Pthreads are required to build libitm])])]) > Can't you just limit adding -pthread to Solaris 8 or something? I didn't invent anything here, this is exactly how -fopenmp/libgomp works. Just define GTM_SELF_SPECS to "" like Darwin and Windows.
On Tue, 14 Feb 2012, Eric Botcazou wrote: > > It broke all targets that don't implement threads and as such > > don't support -pthread. And you need to gate *all* tm-related > > tests on something like check_effective_target_pthread. > > The question is, how is libitm supposed to work on these systems? I didn't think about that before since whatever was there compiled and the tests passed, but right, that's a clue. > The > configure.ac file contains: Which is incidental, because configure.tgt already declares non-support and I get: checking for libitm support... no Hm, so it seems an oversight in the framework that tm is enabled for such systems? > Just define GTM_SELF_SPECS to "" like Darwin and Windows. That seems to imply that *every* such system should define GTM_SELF_SPECS (and should have been part of your recent changes). But on a second look it seems best to follow the lead of -fopenmp which implies instead that all tm tests should be gated on a new check_effective_target_fgnu-tm. Your ball. brgds, H-P
On 02/11/2012 03:14 PM, Eric Botcazou wrote: > Hi, > > this completes the half-implemented linking scheme of libitm and makes it mimic > that of libgomp entirely. We need the -pthread thing on Solaris 8. > > Tested on SPARC/Solaris 8 & 9 and i586/Linux, OK for the mainline? > > > 2012-02-11 Eric Botcazou <ebotcazou@adacore.com> > > * gcc.c (LINK_COMMAND_SPEC): Deal with -fgnu-tm. > (GTM_SELF_SPECS): Define if not already defined. > (driver_self_specs): Add GTM_SELF_SPECS. > * config/darwin.h (GTM_SELF_SPECS): Define. > * config/i386/cygwin.h (GTM_SELF_SPECS): Likewise. > * config/i386/mingw32.h (GTM_SELF_SPECS): Likewise. > > > 2012-02-11 Eric Botcazou <ebotcazou@adacore.com> > > * configure.ac (link_itm): Fix comment. > * configure: Regenerate. > * testsuite/lib/libitm.exp: Do not pass -litm for the link. Hi, I see several new fails on s390x with that patch (r184174): > FAIL: gcc.dg/lto/trans-mem-1 c_lto_trans-mem-1_0.o-c_lto_trans-mem-1_1.o link, -flto -fgnu-tm > UNRESOLVED: gcc.dg/lto/trans-mem-1 c_lto_trans-mem-1_0.o-c_lto_trans-mem-1_1.o execute -flto -fgnu-tm > FAIL: gcc.dg/lto/trans-mem-2 c_lto_trans-mem-2_0.o-c_lto_trans-mem-2_1.o link, -flto -fgnu-tm > UNRESOLVED: gcc.dg/lto/trans-mem-2 c_lto_trans-mem-2_0.o-c_lto_trans-mem-2_1.o execute -flto -fgnu-tm > FAIL: gcc.dg/lto/trans-mem-4 c_lto_trans-mem-4_0.o-c_lto_trans-mem-4_1.o link, -flto -fgnu-tm > UNRESOLVED: gcc.dg/lto/trans-mem-4 c_lto_trans-mem-4_0.o-c_lto_trans-mem-4_1.o execute -flto -fgnu-tm Executing on host: /home/andreas/patched/gcc-head-build/gcc/xgcc -B/home/andreas/patched/gcc-head-build/gcc/ c_lto_trans-mem-2_0.o c_lto_trans-mem-2_1.o -flto -fgnu-tm -o gcc-dg-lto-trans-mem-2-01.exe (timeout = 300) xgcc: error: libitm.spec: No such file or directory^M compiler exited with status 1 Bye, -Andreas-
On 14 Feb 2012, at 16:08, Andreas Krebbel wrote: > On 02/11/2012 03:14 PM, Eric Botcazou wrote: >> Hi, >> >> this completes the half-implemented linking scheme of libitm and >> makes it mimic >> that of libgomp entirely. We need the -pthread thing on Solaris 8. >> >> Tested on SPARC/Solaris 8 & 9 and i586/Linux, OK for the mainline? >> >> >> 2012-02-11 Eric Botcazou <ebotcazou@adacore.com> >> >> * gcc.c (LINK_COMMAND_SPEC): Deal with -fgnu-tm. >> (GTM_SELF_SPECS): Define if not already defined. >> (driver_self_specs): Add GTM_SELF_SPECS. >> * config/darwin.h (GTM_SELF_SPECS): Define. >> * config/i386/cygwin.h (GTM_SELF_SPECS): Likewise. >> * config/i386/mingw32.h (GTM_SELF_SPECS): Likewise. >> >> >> 2012-02-11 Eric Botcazou <ebotcazou@adacore.com> >> >> * configure.ac (link_itm): Fix comment. >> * configure: Regenerate. >> * testsuite/lib/libitm.exp: Do not pass -litm for the link. > > Hi, > > I see several new fails on s390x with that patch (r184174): > >> FAIL: gcc.dg/lto/trans-mem-1 c_lto_trans-mem-1_0.o-c_lto_trans- >> mem-1_1.o link, -flto > -fgnu-tm >> UNRESOLVED: gcc.dg/lto/trans-mem-1 c_lto_trans-mem-1_0.o- >> c_lto_trans-mem-1_1.o execute > -flto -fgnu-tm >> FAIL: gcc.dg/lto/trans-mem-2 c_lto_trans-mem-2_0.o-c_lto_trans- >> mem-2_1.o link, -flto > -fgnu-tm >> UNRESOLVED: gcc.dg/lto/trans-mem-2 c_lto_trans-mem-2_0.o- >> c_lto_trans-mem-2_1.o execute > -flto -fgnu-tm >> FAIL: gcc.dg/lto/trans-mem-4 c_lto_trans-mem-4_0.o-c_lto_trans- >> mem-4_1.o link, -flto > -fgnu-tm >> UNRESOLVED: gcc.dg/lto/trans-mem-4 c_lto_trans-mem-4_0.o- >> c_lto_trans-mem-4_1.o execute > -flto -fgnu-tm > > > Executing on host: /home/andreas/patched/gcc-head-build/gcc/xgcc > -B/home/andreas/patched/gcc-head-build/gcc/ c_lto_trans-mem-2_0.o > c_lto_trans-mem-2_1.o > -flto -fgnu-tm -o gcc-dg-lto-trans-mem-2-01.exe (timeout = > 300) > xgcc: error: libitm.spec: No such file or directory^M ... any .exp causing use of the libitm spec will need to arrange for - B /path/to/libitm/build to be appended to the options?
> I see several new fails on s390x with that patch (r184174):
People should realize that -fgnu-tm doesn't really work if libitm hasn't been
ported to the architecture, for example s390/s390x. My understanding is that
Hans-Peter's patch should have taken care of this now.
On 02/14/2012 11:58 PM, Eric Botcazou wrote: >> I see several new fails on s390x with that patch (r184174): > > People should realize that -fgnu-tm doesn't really work if libitm hasn't been > ported to the architecture, for example s390/s390x. My understanding is that > Hans-Peter's patch should have taken care of this now. > Sure I'm very well aware that -fgnu-tm cannot work on s390 since we do not have libitm support yet. So I think the option should simply *not* be used by the testsuite. However, it still fails with r184339. The dg-require check does not seem to work properly. Since it only affects the lto tm testcases perhaps the lib/lto.exp magic dealing with the _0 and _1 files doesn't handle it properly?! Bye, -Andreas-
Index: gcc/gcc.c =================================================================== --- gcc/gcc.c (revision 183864) +++ gcc/gcc.c (working copy) @@ -675,6 +675,7 @@ proper position among the other output f %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}}\ %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\ %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\ + %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ %(mflib) " STACK_SPLIT_SPEC "\ %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\ %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ @@ -839,9 +840,14 @@ static const char *const multilib_defaul #define GOMP_SELF_SPECS "%{fopenmp|ftree-parallelize-loops=*: -pthread}" #endif +/* Likewise for -fgnu-tm. */ +#ifndef GTM_SELF_SPECS +#define GTM_SELF_SPECS "%{fgnu-tm: -pthread}" +#endif + static const char *const driver_self_specs[] = { "%{fdump-final-insns:-fdump-final-insns=.} %<fdump-final-insns", - DRIVER_SELF_SPECS, CONFIGURE_SPECS, GOMP_SELF_SPECS + DRIVER_SELF_SPECS, CONFIGURE_SPECS, GOMP_SELF_SPECS, GTM_SELF_SPECS }; #ifndef OPTION_DEFAULT_SPECS Index: gcc/config/i386/cygwin.h =================================================================== --- gcc/config/i386/cygwin.h (revision 183864) +++ gcc/config/i386/cygwin.h (working copy) @@ -126,6 +126,8 @@ along with GCC; see the file COPYING3. and the -pthread flag is not recognized. */ #undef GOMP_SELF_SPECS #define GOMP_SELF_SPECS "" +#undef GTM_SELF_SPECS +#define GTM_SELF_SPECS "" /* This matches SHLIB_SONAME and SHLIB_SOVERSION in t-cygwin. */ #if DWARF2_UNWIND_INFO Index: gcc/config/i386/mingw32.h =================================================================== --- gcc/config/i386/mingw32.h (revision 183864) +++ gcc/config/i386/mingw32.h (working copy) @@ -187,6 +187,8 @@ do { \ #undef GOMP_SELF_SPECS #define GOMP_SELF_SPECS "%{fopenmp|ftree-parallelize-loops=*: " \ "-mthreads -pthread}" +#undef GTM_SELF_SPECS +#define GTM_SELF_SPECS "%{fgnu-tm:-mthreads -pthread}" /* mingw32 atexit function is safe to use in shared libraries. Use it to register C++ static destructors. */ Index: gcc/config/darwin.h =================================================================== --- gcc/config/darwin.h (revision 183864) +++ gcc/config/darwin.h (working copy) @@ -915,6 +915,8 @@ void add_framework_path (char *); #undef GOMP_SELF_SPECS #define GOMP_SELF_SPECS "" +#undef GTM_SELF_SPECS +#define GTM_SELF_SPECS "" /* Darwin disables section anchors by default. They should be enabled per arch where support exists in that arch. */ Index: libitm/configure.ac =================================================================== --- libitm/configure.ac (revision 183864) +++ libitm/configure.ac (working copy) @@ -268,7 +268,7 @@ else fi # Set up the set of libraries that we need to link against for libitm. -# Note that the GOMP_SELF_SPEC in gcc.c will force -pthread for -fopenmp, +# Note that the GTM_SELF_SPECS in gcc.c will force -pthread for -fgnu-tm, # which will force linkage against -lpthread (or equivalent for the system). # That's not 100% ideal, but about the best we can do easily. if test $enable_shared = yes; then Index: libitm/testsuite/lib/libitm.exp =================================================================== --- libitm/testsuite/lib/libitm.exp (revision 183864) +++ libitm/testsuite/lib/libitm.exp (working copy) @@ -140,7 +140,6 @@ proc libitm_init { args } { lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs" } lappend ALWAYS_CFLAGS "additional_flags=-I${srcdir}/.." - lappend ALWAYS_CFLAGS "ldflags=-litm" # We use atomic operations in the testcases to validate results. if { ([istarget i?86-*-*] || [istarget x86_64-*-*])