Hi there,
I wonder if anybody might be able to help me.
I'm trying to build tbb43_20150424 for Linux using gcc4.9.1, and the following errors occur:
/tmp/ccxNhOc9.s: Assembler messages:
/tmp/ccxNhOc9.s:615: Error: no such instruction: `xtest'
/tmp/ccxNhOc9.s:643: Error: no such instruction: `xabort $255'
/tmp/ccxNhOc9.s:652: Error: no such instruction: `xabort $255'
/tmp/ccxNhOc9.s:658: Error: no such instruction: `xend'
/tmp/ccxNhOc9.s:825: Error: no such instruction: `xbegin .L56'
/tmp/ccxNhOc9.s:988: Error: no such instruction: `xbegin .L71'
/tmp/ccxNhOc9.s:1216: Error: no such instruction: `xabort $255'
make[1]: *** [x86_rtm_rw_mutex.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/user_data/.tmp/linux_intel64_gcc_cc4.9.1_libc2.12_kernel2.6.32_debug'
make: *** [tbb] Error 2
After flailing around for a bit, I found that I could build successfully by commenting out the following lines in the build/linux.gcc.inc file:
# gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them
ifneq (,$(shell gcc -dumpversion | egrep "^4\.[8-9]"))
RTM_KEY = -mrtm
#endif
My processor is Intel Xeon X5680 3.33GHz, which I believe pre-dates the tsx extensions.
Kind regards,
John Kelly.
Link Copied
Hello John, thanks for the report
Is this some custom build of 4.9 or system default? it looks the the compiler/assembler was built without -mrtm support, it is not HW problem. We will look for "a nicer way" but for now it looks that just commenting these lines is the best workaround.
--Vladimir
Thanks for your reply Vladimir,
I believe that we do have a custom 4.9 build. Perhaps enabling -mrtm support in our gcc will be the way forward.
Cheers,
John.
For more complete information about compiler optimizations, see our Optimization Notice.