Even after removing the use of gold from i386, older llvm versions blow up in tbl-gen in various ways under 9.3, and in some reports 10.3. Reverting to r416639 fixes 9.3 in my tests.
Here's an example build failure. It looks like something is breaking LLVM's magic template based command line parser. llvm[2]: ======= Finished Linking Release Executable llvm-tblgen (without symbols) gmake[2]: Leaving directory '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/utils/TableGen' gmake[1]: Leaving directory '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/utils' gmake[1]: Entering directory '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/lib/IR' llvm[1]: Building Intrinsics.gen.tmp from Intrinsics.td llvm-tblgen: Unknown command line argument '-I'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3 .6.2.src/Release/bin/llvm-tblgen -help' llvm-tblgen: Unknown command line argument '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/lib /IR'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/Release/bin/llvm-tblgen -help' llvm-tblgen: Unknown command line argument '-I'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3 .6.2.src/Release/bin/llvm-tblgen -help' llvm-tblgen: Unknown command line argument '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/inc lude'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/Release/bin/llvm-tblgen -help' llvm-tblgen: Unknown command line argument '-I'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3 .6.2.src/Release/bin/llvm-tblgen -help' llvm-tblgen: Unknown command line argument '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/inc lude'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/Release/bin/llvm-tblgen -help' llvm-tblgen: Unknown command line argument '-I'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3 .6.2.src/Release/bin/llvm-tblgen -help' llvm-tblgen: Unknown command line argument '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/lib /Target'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/Release/bin/llvm-tblgen -help' llvm-tblgen: Unknown command line argument '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/inc lude/llvm/IR/Intrinsics.td'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/Release/bin /llvm-tblgen -help' llvm-tblgen: Unknown command line argument '-o'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3 .6.2.src/Release/bin/llvm-tblgen -help' llvm-tblgen: Unknown command line argument '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/lib /IR/Release/Intrinsics.gen.tmp'. Try: '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/Release /bin/llvm-tblgen -help' llvm-tblgen: Unknown command line argument '-gen-intrinsic'. Try: '/wrkdirs/usr/ports/devel/llvm36 /work/llvm-3.6.2.src/Release/bin/llvm-tblgen -help' gmake[1]: *** [Makefile:24: /wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/lib/IR/Release/Intr insics.gen.tmp] Error 1 gmake[1]: Leaving directory '/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/lib/IR' gmake: *** [/wrkdirs/usr/ports/devel/llvm36/work/llvm-3.6.2.src/Makefile.rules:883: all] Error 1 ===> Compilation failed unexpectedly. Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to the maintainer. *** [do-build] Error code 1 Stop in /usr/ports/devel/llvm36. build of devel/llvm36 ended at Mon Aug 29 21:44:42 UTC 2016 build time: 00:01:07 !!! build failure encountered !!!
Yeah I'm tracking it, but I really do not understand for how and wy llvm-tblgen is built linked, but the resulted binary is non usable...
I don't have any real idea what could have broken, but given that this is on the critical path to xorg-server, I think we need to revert the binutils changes until this can be resolved. It's worth noting that LLVM's command line parsing is template based so linker bugs (or "fixes") could produce the sort of errors we're seeing.
From the latest pig-fallout mails, it looks like it's also breaking llvm35 and llvm-cheri.
Also llvm38 with a little different error-message: [3/2402] Building Intrinsics.gen... FAILED: include/llvm/IR/Intrinsics.gen.tmp cd /usr/ports/devel/llvm38/work/.build/include/llvm/IR && /usr/ports/devel/llvm38/work/.build/bin/llvm-tblgen -gen-intrinsic -I /usr/ports/devel/llvm38/work/llvm-3.8.1.src/include/llvm/IR -I /usr/ports/devel/llvm38/work/llvm-3.8.1.src/lib/Target -I /usr/ports/devel/llvm38/work/llvm-3.8.1.src/include /usr/ports/devel/llvm38/work/llvm-3.8.1.src/include/llvm/IR/Intrinsics.td -o /usr/ports/devel/llvm38/work/.build/include/llvm/IR/Intrinsics.gen.tmp Assertion failed: (hasOptions() && "No options specified!"), function ParseCommandLineOptions, file /usr/ports/devel/llvm38/work/llvm-3.8.1.src/lib/Support/CommandLine.cpp, line 816. [4/2402] Linking CXX static library lib/libLLVMSymbolize.a ninja: build stopped: subcommand failed. only llvm34 seems to build.
further informations: All C++ programs (even a simple hellowworld) segfaults when linked using binutils 2.27 on FreeBSD 9 (and only on FreeBSD 9) I'm trying to figure in the history what happened. (something happened between 2.26 and 2.27) Any help would be greatly appreciated :)
Created attachment 174264 [details] bu.diff dim@ did a bissect and this seems to be caused by this commit: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=26e3a0c9ba4a8376fdf9f898637919d144d8b1d8 I'm testing the attached patch
The patch does seem to be sufficient to get llvm36 building again.
A commit references this bug: Author: antoine Date: Wed Aug 31 21:15:04 UTC 2016 New revision: 421193 URL: https://svnweb.freebsd.org/changeset/ports/421193 Log: Do not use .init_array/.fini_array sections on FreeBSD 9 This should fix build failures of llvm37 and a few others PR: 212249 With hat: portmgr Changes: head/devel/binutils/Makefile
This does not work. Also the patch in the link does not work patch rejected.
Sorry, my error, overlooked something, seems ok.
r212249 resolved this issue. Thanks antoine!