[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