package/gcc: disable libitm for sparc <v9
PATCH 1/1 package/gcc: disable libitm for sparc <v9
libitm (transactional memory) needs SPARC V9+ ISA, otherwise when enabling C++ the toolchain fails to build:
/tmp/cclQ6hrD.s: Assembler messages:/tmp/cclQ6hrD.s:1261: Error: Architecture mismatch on "rd". /tmp/cclQ6hrD.s:1261: (Requires v9|v9a|v9b; requested architecture is v8.)
Makefile:517: recipe for target 'beginend.lo' failed make[5]: *** [beginend.lo] Error 1
So disable it for our current (v8, leon3) support.
--- package/gcc/gcc.mk | 5 +++++ 1 file changed, 5 insertions(+)
package/gcc/gcc.mk +5 -0
@@ -110,6 +110,11 @@ else HOST_GCC_COMMON_CONF_OPTS += --enable-target-optspace endif +# libitm needs sparc V9+ +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +HOST_GCC_COMMON_CONF_OPTS += --disable-libitm +endif + # gcc 4.6.x quadmath requires wchar ifneq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y) HOST_GCC_COMMON_CONF_OPTS += --disable-libquadmath
Signature · 1 line
2.0.5
PATCH 1/1 package/gcc: disable libitm for sparc <v9
Dear Gustavo Zacarias,
Quoted 10 lines · Gustavo Zacarias
libitm (transactional memory) needs SPARC V9+ ISA, otherwise when enabling C++ the toolchain fails to build:
/tmp/cclQ6hrD.s: Assembler messages:/tmp/cclQ6hrD.s:1261: Error: Architecture mismatch on "rd"./tmp/cclQ6hrD.s:1261: (Requires v9|v9a|v9b; requested architecture is v8.)
Makefile:517: recipe for target 'beginend.lo' failed make[5]: *** [beginend.lo] Error 1
Quoted 3 lines
So disable it for our current (v8, leon3) support.
Signed-off-by Gustavo Zacarias <[email protected]>
Applied, thanks. Is it only SPARCv8 that doesn't have libitm support, or could other architectures be affected? If other architectures are affected, we may want to introduce a BR2_ARCH_HAS_LIBITM or some other similar thing.
Another weird thing: we're not enabling libitm, so why is gcc enabling it by itself, if it knows that the architecture cannot support it?
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 package/gcc: disable libitm for sparc <v9
Quoted 7 lines · Thomas Petazzoni
Applied, thanks. Is it only SPARCv8 that doesn't have libitm support, or could other architectures be affected? If other architectures are affected, we may want to introduce a
BR2_ARCH_HAS_LIBITMor some other similar thing.Another weird thing: we're not enabling libitm, so why is gcc enabling it by itself, if it knows that the architecture cannot support it?
There are other architectures that could be affected, most notably old processors/cores.
I don't think we need to do anything more special about it, most of the time gcc will detect and enable it if the architecture supports it, which basically boils down to your second question, it's failing to realize sparc v8 can't handle it.
It probably has to do with the sparc tuple being used for sparc64 as well (64 bit kernel 32 bit userland) and sparc v8 being terribly old and hardly used outside of LEON (V9 dates from 1993!).
Regards.