[llvm-dev] moving libfuzzer to compiler-rt?

George Karpenkov via llvm-dev llvm-dev at lists.llvm.org
Mon Jul 24 11:08:49 PDT 2017


Adding Jim Grosbach to the thread to OK moving Apple’s contributions.

As of now, we have gotten OK from all non-Apple and non-Google contributors.

George

> On Jul 12, 2017, at 3:26 PM, Kostya Serebryany <kcc at google.com> wrote:
> 
> 
> 
> On Wed, Jul 12, 2017 at 3:07 PM, Johan Engelen via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>>wrote:
> I'd like to add another perspective: LDC (LLVM D Compiler) can use libFuzzer and AddressSanitizer from compiler-rt, and it'd be great if building them would not require a fresh-built clang. I believe the only reason libFuzzer needs a fresh-built clang is because of the dependence on the sanitizer interface?
> 
> Not really. libFuzzer depends on the coverage instrumentation applied to the target code.
> I.e we can build libFuzzer with any compiler (even some old GCC) but we have to use a recent clang to build the target code (including libFuzzer's own tests). 
>  
> compiler-rt can already be built without using clang, libFuzzer is a little more tricky: libFuzzer depends on <sanitizer/coverage_interface.h>, 
> 
> 
> Not any more, removed in r307858.
> It loosely depends on sanitizer/lsan_interface.h though 
>  
> note the angle brackets, meaning that you have to install compiler-rt's include files to have libFuzzer be in version-sync with the sanitizers.
> My hope is that moving libFuzzer to compiler-rt will make it possible to build it together with the sanitizers, so that it is a little easier to build it for non-clang use cases.
> 
> Kind regards,
>   Johan
> 
> 
> On Tue, May 2, 2017 at 9:26 PM, George Karpenkov via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
> Hi All,
> 
> Currently libfuzzer depends on (often freshly built) clang, yet the dependency is not explicitly specified
> in cmake.
> That leads to various issues: for instance, it’s not possible to check out LLVM repo and run libfuzzer
> tests: one would often need to compile fresh clang first, and then create a separate build directory,
> where libfuzzer could be tested.
> For the buildbot this problem is approached by grabbing a freshly built binary from another buildbot
> and using that for testing.
> 
> Needless to say, that could be quite annoying.
> Additionally, my recent changes start using libfuzzer from Clang driver: and finding the actual archive file
> requires some hardcoding of directory paths, as one would need to go up the tree from the Clang binary
> (in swift, for example, the situation is even worse, as the path to Clang is a symlink, and getting an archive file
> from the LLVM tree would require going quite a few levels up).
> 
> From my understanding, all these problems can be solved entirely
> by moving libfuzzer to compiler-rt, where (other) sanitizers already reside.
> 
> Any thoughts on the suggestion?
> 
> It would be still possible to compile just libfuzzer with no dependencies, by simply making a partial checkout from SVN,
> and only the repo path would change.
> 
> George
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
> 
> 
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170724/06a6de7e/attachment.html>


More information about the llvm-dev mailing list