This patch needs a corresponding set of tests in test/Driver. Do the asan, msan, tsan, ubsan, ... test suites pass on freebsd with this change?
================ Comment at: lib/Driver/Tools.cpp:5896 @@ +5895,3 @@ + (Args.hasArg(options::OPT_pie) || Sanitize.hasZeroBaseShadow()); + const bool needsDefaultLibs = + !Args.hasArg(options::OPT_nostdlib) && ---------------- Local variable names should start with an uppercase letter. ================ Comment at: lib/Driver/Tools.cpp:5889 @@ -5841,3 +5888,3 @@ const char *LinkingOutput) const { - const toolchains::FreeBSD& ToolChain = + const toolchains::FreeBSD& ToolChain = static_cast<const toolchains::FreeBSD&>(getToolChain()); ---------------- Put the & on the right, please, since you're touching this line anyway =) ================ Comment at: lib/Driver/Tools.cpp:5899-5904 @@ +5898,8 @@ + !Args.hasArg(options::OPT_nodefaultlibs); + const bool needsCXXSanRt = + !Args.hasArg(options::OPT_shared) && + (Sanitize.needsAsanRt() || + Sanitize.needsTsanRt() || + Sanitize.needsMsanRt() || + Sanitize.needsLsanRt()); + const bool needsUbsanRt = Sanitize.needsUbsanRt(); ---------------- I think you only need a C++ stdlib if you're using certain parts of ubsan (asan, tsan, msan, and lsan shouldn't require it IIUC). ================ Comment at: lib/Driver/Tools.cpp:1963 @@ +1962,3 @@ + const StringRef Sanitizer) { + // Sanitizer runtime is located in the Linux library directory and + // has name "libclang_rt.<Sanitizer>-<ArchName>.a". ---------------- You mean, "in the freebsd directory"? ================ Comment at: lib/Driver/Tools.cpp:6029 @@ +6028,3 @@ + bool ex = false; + ex = (Sanitize.needsAsanRt() && + !addSanitizerRTLinkFlagFreeBSD(ToolChain, Args, CmdArgs, "asan")) || ex; ---------------- ex |= ... ? ================ Comment at: lib/Driver/Tools.cpp:6027-6028 @@ +6026,4 @@ + } + // export-dynamic option flag. + bool ex = false; + ex = (Sanitize.needsAsanRt() && ---------------- Please give this a more informative name rather than using a comment to describe what it is. ================ Comment at: lib/Driver/Tools.cpp:6058-6062 @@ +6057,7 @@ + + if (needsUbsanRt && D.CCCIsCXX()) { + // Only include the bits of the runtime which need a C++ ABI library if + // we're linking in C++ mode. + addSanitizerRTLinkFlagFreeBSD(ToolChain, Args, CmdArgs, "ubsan_cxx"); + } + ---------------- I would expect this either needs `-whole-archive` or needs to come at the end of the linker arguments? (None of the symbols in this archive will be needed at this point.) http://llvm-reviews.chandlerc.com/D2644 _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits