External toolchain support broken for devel/llvm38 but not devel/llvm37

Matthew Macy mmacy at nextbsd.org
Tue Aug 30 21:50:08 UTC 2016




 ---- On Tue, 30 Aug 2016 14:08:41 -0700 Brooks Davis <brooks at freebsd.org> 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 <ngie at FreeBSD.org>
Date:   Fri Jan 2 05:40:02 2015 +0000

    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




More information about the freebsd-current mailing list