Re: External toolchain support broken for devel/llvm38 but not devel/llvm37
On Tue, Aug 30, 2016 at 02:50:03PM -0700, Matthew Macy wrote: > > > > On Tue, 30 Aug 2016 14:08:41 -0700 Brooks Davis > wrote > > On Mon, Aug 29, 2016 at 08:12:08PM -0700, Matthew Macy wrote: > > > It looks like there is something broken with the devel/llvm38 port or > external toolchain support has regressed: > > > > > > > > > This works: > > > make XCC=/usr/local/bin/clang37 XCXX=/usr/local/bin/clang++37 > XCPP=/usr/local/bin/clang-cpp37 buildworld -j12 -s > > > > > > This fails: > > > make XCC=/usr/local/bin/clang38 XCXX=/usr/local/bin/clang++38 > XCPP=/usr/local/bin/clang-cpp38 buildworld -j12 -s > > > > > > with: > > > > > > > /home/mmacy/devel/build/mnt/storage/mmacy/devel/drm-next-merge/tmp/usr/bin/ld: > > /usr/local/llvm38/bin/../lib/clang/3.8.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a: > No such file: No such file or directory > > > clang-3.8: error: linker command failed with exit code 1 (use -v to see > invocation) > > > > I've fixed the install problem. I'm rather confused about why clang > > would try to link with sanitizer libraries when building source. That's > > certainly not default behavior. > > Thanks for the extremely prompt response to both issues. I haven't figured > out why svn has problems but the libc/tests failure can be traced back to the > following commit: > > commit 3d2a537705eca33db3c523f4f92290d382aa7ab1 > Author: ngie > Date: Fri Jan 2 05:40:02 2015 + > > Don't install h_raw if dealing with clang 3.5.0+ to unbreak the tests2 > Jenkins > job > > The h_raw application doesn't do proper bounds checking without the option > being supplied via the build, which means that it doesn't throw signals > and > fail as expected > > PR: 196430 > X-MFC with: r276479 > > diff --git a/contrib/netbsd-tests/lib/libc/ssp/t_ssp.sh > b/contrib/netbsd-tests/lib/libc/ssp/t_ssp.sh > index 04adc67..362178f 100755 > --- a/contrib/netbsd-tests/lib/libc/ssp/t_ssp.sh > +++ b/contrib/netbsd-tests/lib/libc/ssp/t_ssp.sh > @@ -360,6 +360,9 @@ raw_head() > raw_body() > { > prog="$(atf_get_srcdir)/h_raw" > + # Begin FreeBSD > + [ -x $prog ] || atf_skip "$prog is missing; skipping testcase" > + # End FreeBSD > > h_pass "$prog 9" > # Begin FreeBSD > diff --git a/lib/libc/tests/ssp/Makefile b/lib/libc/tests/ssp/Makefile > index 1649cc2..7bc8660 100644 > --- a/lib/libc/tests/ssp/Makefile > +++ b/lib/libc/tests/ssp/Makefile > @@ -9,10 +9,7 @@ WARNS?=2 > > CFLAGS.h_raw+= -fstack-protector-all -Wstack-protector > .if ${COMPILER_TYPE} == "clang" > -# Disable -fsanitize=bounds until runtime support is done for clang 3.5.0. > -.if ${COMPILER_VERSION} < 30500 > CFLAGS.h_raw+= -fsanitize=bounds > -.endif Thanks for hunting this down. There's no strong reason to assume that a given clang has sanitizers available. In the current build system, you need a clang tree to build the sanitizers, but the build process is separate. If we're going to enable sanitizers in tests, we need to do so conditionally so we don't break the tests on non-x86 systems and so compiler installs don't need to provide them. -- Brooks signature.asc Description: PGP signature
Re: External toolchain support broken for devel/llvm38 but not devel/llvm37
On Tue, 30 Aug 2016 14:08:41 -0700 Brooks Davis wrote > On Mon, Aug 29, 2016 at 08:12:08PM -0700, Matthew Macy wrote: > > It looks like there is something broken with the devel/llvm38 port or > > external toolchain support has regressed: > > > > > > This works: > > make XCC=/usr/local/bin/clang37 XCXX=/usr/local/bin/clang++37 > > XCPP=/usr/local/bin/clang-cpp37 buildworld -j12 -s > > > > This fails: > > make XCC=/usr/local/bin/clang38 XCXX=/usr/local/bin/clang++38 > > XCPP=/usr/local/bin/clang-cpp38 buildworld -j12 -s > > > > with: > > > > /home/mmacy/devel/build/mnt/storage/mmacy/devel/drm-next-merge/tmp/usr/bin/ld: > > > > /usr/local/llvm38/bin/../lib/clang/3.8.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a: > > No such file: No such file or directory > > clang-3.8: error: linker command failed with exit code 1 (use -v to see > > invocation) > > I've fixed the install problem. I'm rather confused about why clang > would try to link with sanitizer libraries when building source. That's > certainly not default behavior. Thanks for the extremely prompt response to both issues. I haven't figured out why svn has problems but the libc/tests failure can be traced back to the following commit: commit 3d2a537705eca33db3c523f4f92290d382aa7ab1 Author: ngie Date: Fri Jan 2 05:40:02 2015 + Don't install h_raw if dealing with clang 3.5.0+ to unbreak the tests2 Jenkins job The h_raw application doesn't do proper bounds checking without the option being supplied via the build, which means that it doesn't throw signals and fail as expected PR: 196430 X-MFC with: r276479 diff --git a/contrib/netbsd-tests/lib/libc/ssp/t_ssp.sh b/contrib/netbsd-tests/lib/libc/ssp/t_ssp.sh index 04adc67..362178f 100755 --- a/contrib/netbsd-tests/lib/libc/ssp/t_ssp.sh +++ b/contrib/netbsd-tests/lib/libc/ssp/t_ssp.sh @@ -360,6 +360,9 @@ raw_head() raw_body() { prog="$(atf_get_srcdir)/h_raw" + # Begin FreeBSD + [ -x $prog ] || atf_skip "$prog is missing; skipping testcase" + # End FreeBSD h_pass "$prog 9" # Begin FreeBSD diff --git a/lib/libc/tests/ssp/Makefile b/lib/libc/tests/ssp/Makefile index 1649cc2..7bc8660 100644 --- a/lib/libc/tests/ssp/Makefile +++ b/lib/libc/tests/ssp/Makefile @@ -9,10 +9,7 @@ WARNS?=2 CFLAGS.h_raw+= -fstack-protector-all -Wstack-protector .if ${COMPILER_TYPE} == "clang" -# Disable -fsanitize=bounds until runtime support is done for clang 3.5.0. -.if ${COMPILER_VERSION} < 30500 CFLAGS.h_raw+= -fsanitize=bounds -.endif .elif ${COMPILER_TYPE} == "gcc" CFLAGS.h_raw+= --param ssp-buffer-size=1 DPADD+=${LIBSSP} @@ -29,7 +26,11 @@ PROGS+= h_getcwd PROGS+=h_memcpy PROGS+=h_memmove PROGS+=h_memset +# This testcase doesn't run properly when not compiled with -fsantize=bounds +# with clang, which is currently contingent on a compiler_rt update +.if ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} < 30500 PROGS+=h_raw +.endif PROGS+=h_read PROGS+=h_readlink PROGS+=h_snprintf ___ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: External toolchain support broken for devel/llvm38 but not devel/llvm37
On Mon, Aug 29, 2016 at 08:12:08PM -0700, Matthew Macy wrote: > It looks like there is something broken with the devel/llvm38 port or > external toolchain support has regressed: > > > This works: > make XCC=/usr/local/bin/clang37 XCXX=/usr/local/bin/clang++37 > XCPP=/usr/local/bin/clang-cpp37 buildworld -j12 -s > > This fails: > make XCC=/usr/local/bin/clang38 XCXX=/usr/local/bin/clang++38 > XCPP=/usr/local/bin/clang-cpp38 buildworld -j12 -s > > with: > > /home/mmacy/devel/build/mnt/storage/mmacy/devel/drm-next-merge/tmp/usr/bin/ld: > > /usr/local/llvm38/bin/../lib/clang/3.8.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a: > No such file: No such file or directory > clang-3.8: error: linker command failed with exit code 1 (use -v to see > invocation) I've fixed the install problem. I'm rather confused about why clang would try to link with sanitizer libraries when building source. That's certainly not default behavior. -- Brooks signature.asc Description: PGP signature
Re: External toolchain support broken for devel/llvm38 but not devel/llvm37
On Monday, August 29, 2016, Volodymyr Kostyrko wrote: > Matthew Macy wrote: > >> It looks like there is something broken with the devel/llvm38 port or >> external toolchain support has regressed: >> >> >> This works: >> make XCC=/usr/local/bin/clang37 XCXX=/usr/local/bin/clang++37 >> XCPP=/usr/local/bin/clang-cpp37 buildworld -j12 -s >> >> This fails: >> make XCC=/usr/local/bin/clang38 XCXX=/usr/local/bin/clang++38 >> XCPP=/usr/local/bin/clang-cpp38 buildworld -j12 -s >> >> with: >> >> /home/mmacy/devel/build/mnt/storage/mmacy/devel/drm-next-merge/tmp/usr/bin/ld: >> /usr/local/llvm38/bin/../lib/clang/3.8.1/lib/freebsd/libclan >> g_rt.ubsan_standalone-x86_64.a: No such file: No such file or directory >> clang-3.8: error: linker command failed with exit code 1 (use -v to see >> invocation) >> > > I second this - I also faced it. I think this is not a problem with a > ports but rather with a build as correspondent files can be found in > /usr/obj under /usr/obj/usr/src/tmp/usr/lib/clang/3.8.0/lib/freebsd/. > Looks like this files are compiled during build but taken from compilers's > directory. Linking 'em to the target directory makes build succeed. The point of using the external toolchain for me is to bypass building clang in src. ~31 of the ~47 minutes in buildworld are spent compiling pieces of llvm/clang. I'd much rather fix the ports than make buildworld require additional work. For the moment I've disconnected the two pieces that fail: svn and libc/tests. They don't really belong in base any more than git and piglit do. > > -- > Sphinx of black quartz judge my vow. > ___ > freebsd-current@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org" > ___ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: External toolchain support broken for devel/llvm38 but not devel/llvm37
On 30 Aug 2016, at 05:12, Matthew Macy wrote: > > It looks like there is something broken with the devel/llvm38 port or > external toolchain support has regressed: > > > This works: > make XCC=/usr/local/bin/clang37 XCXX=/usr/local/bin/clang++37 > XCPP=/usr/local/bin/clang-cpp37 buildworld -j12 -s > > This fails: > make XCC=/usr/local/bin/clang38 XCXX=/usr/local/bin/clang++38 > XCPP=/usr/local/bin/clang-cpp38 buildworld -j12 -s > > with: > > /home/mmacy/devel/build/mnt/storage/mmacy/devel/drm-next-merge/tmp/usr/bin/ld: > > /usr/local/llvm38/bin/../lib/clang/3.8.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a: > No such file: No such file or directory > clang-3.8: error: linker command failed with exit code 1 (use -v to see > invocation) Looks like the llvm38 port didn't build the libclang_rt libraries. These are needed for the sanitizers, and so on. The llvm37 port does have these: % ls -l llvm37/lib/clang/3.7.1/lib/freebsd total 4188 -rw-r--r-- 1 root wheel 2083354 2016-07-12 05:08:14 libclang_rt.asan-i386.a -rwxr-xr-x 1 root wheel 705264 2016-07-12 05:09:27 libclang_rt.asan-i386.so* -rw-r--r-- 1 root wheel 1620 2016-07-12 05:08:06 libclang_rt.asan-preinit-i386.a -rw-r--r-- 1 root wheel35914 2016-07-12 05:08:12 libclang_rt.asan_cxx-i386.a -rw-r--r-- 1 root wheel 120524 2016-07-12 05:08:18 libclang_rt.builtins-i386.a -rw-r--r-- 1 root wheel33904 2016-07-12 05:08:19 libclang_rt.profile-i386.a -rw-r--r-- 1 root wheel 417872 2016-07-12 05:08:19 libclang_rt.safestack-i386.a -rw-r--r-- 1 root wheel 659270 2016-07-12 05:08:02 libclang_rt.ubsan_standalone-i386.a -rw-r--r-- 1 root wheel21234 2016-07-12 05:08:02 libclang_rt.ubsan_standalone_cxx-i386.a -Dimitry signature.asc Description: Message signed with OpenPGP using GPGMail
Re: External toolchain support broken for devel/llvm38 but not devel/llvm37
Matthew Macy wrote: It looks like there is something broken with the devel/llvm38 port or external toolchain support has regressed: This works: make XCC=/usr/local/bin/clang37 XCXX=/usr/local/bin/clang++37 XCPP=/usr/local/bin/clang-cpp37 buildworld -j12 -s This fails: make XCC=/usr/local/bin/clang38 XCXX=/usr/local/bin/clang++38 XCPP=/usr/local/bin/clang-cpp38 buildworld -j12 -s with: /home/mmacy/devel/build/mnt/storage/mmacy/devel/drm-next-merge/tmp/usr/bin/ld: /usr/local/llvm38/bin/../lib/clang/3.8.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a: No such file: No such file or directory clang-3.8: error: linker command failed with exit code 1 (use -v to see invocation) I second this - I also faced it. I think this is not a problem with a ports but rather with a build as correspondent files can be found in /usr/obj under /usr/obj/usr/src/tmp/usr/lib/clang/3.8.0/lib/freebsd/. Looks like this files are compiled during build but taken from compilers's directory. Linking 'em to the target directory makes build succeed. -- Sphinx of black quartz judge my vow. ___ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
External toolchain support broken for devel/llvm38 but not devel/llvm37
It looks like there is something broken with the devel/llvm38 port or external toolchain support has regressed: This works: make XCC=/usr/local/bin/clang37 XCXX=/usr/local/bin/clang++37 XCPP=/usr/local/bin/clang-cpp37 buildworld -j12 -s This fails: make XCC=/usr/local/bin/clang38 XCXX=/usr/local/bin/clang++38 XCPP=/usr/local/bin/clang-cpp38 buildworld -j12 -s with: /home/mmacy/devel/build/mnt/storage/mmacy/devel/drm-next-merge/tmp/usr/bin/ld: /usr/local/llvm38/bin/../lib/clang/3.8.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a: No such file: No such file or directory clang-3.8: error: linker command failed with exit code 1 (use -v to see invocation) mmacy@armageddon [~/devel/freebsd-ports-graphics/devel/llvm38|20:07|19] ls /usr/local/llvm38/lib/clang/3.8.1/ include mmacy@armageddon [~/devel/freebsd-ports-graphics/devel/llvm38|20:08|20] ls /usr/local/llvm37/lib/clang/3.7.1 asan_blacklist.txt include lib ___ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"