Afternoon, I had an issue with trying to link a program with the DataFlowSanitizer functionality, this is from the libFuzzer project, and I was seeing: clang++ -fsanitize=address -fsanitize-coverage=edge test_fuzzer.cc Fuzzer*.o Undefined symbols for architecture x86_64: "_dfsan_create_label", referenced from: fuzzer::TraceState::DFSanCmpCallback(unsigned long, unsigned long, unsigned long, unsigned long long, unsigned long long, unsigned short, unsigned short) in FuzzerTraceState.o fuzzer::Fuzzer::InitializeTraceState() in FuzzerTraceState.o "_dfsan_get_label_info", referenced from: fuzzer::TraceState::GetLabelRange(unsigned short) in FuzzerTraceState.o ..... But then looking at the docs: http://clang.llvm.org/docs/DataFlowSanitizer.html It appears that this is only supported under Linux? Is that right? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150706/d2a1e623/attachment.html>
+pcc , glider On Mon, Jul 6, 2015 at 12:59 PM, Juan Ceasar <juan.d.ceasar at gmail.com> wrote:> Afternoon, > > I had an issue with trying to link a program with the DataFlowSanitizer > functionality, this is from the libFuzzer project, and I was seeing: > > clang++ -fsanitize=address -fsanitize-coverage=edge test_fuzzer.cc > Fuzzer*.o > > Undefined symbols for architecture x86_64: > > "_dfsan_create_label", referenced from: > > fuzzer::TraceState::DFSanCmpCallback(unsigned long, unsigned long, > unsigned long, unsigned long long, unsigned long long, unsigned short, > unsigned short) in FuzzerTraceState.o > > fuzzer::Fuzzer::InitializeTraceState() in FuzzerTraceState.o > > "_dfsan_get_label_info", referenced from: > > fuzzer::TraceState::GetLabelRange(unsigned short) in > FuzzerTraceState.o > > ..... > > But then looking at the docs: > http://clang.llvm.org/docs/DataFlowSanitizer.html > <https://urldefense.proofpoint.com/v2/url?u=http-3A__clang.llvm.org_docs_DataFlowSanitizer.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=DuYBrpgYwv8YGoYjC8o5HfU49LwQXqvyVTXIABWvtTE&s=K41EpstDp6NwFwwzmrjj5-HivCd-_5Gt8Jr-Zyc7nxQ&e=> > > It appears that this is only supported under Linux? Is that right? > >Correct. AFAICT, DFSan was only tested on Linux. It is quite hard to make it work on Mac because there are too many closed source libraries there. Nothing impossible though -- it's just that nobody has worked on it. libFuzzer was also never tested on Mac, but I think it should be trivial to make it work there. I suspect that the errors you see are caused by the weak function declarations which don't (???) work on Mac. You'll need to #ifdef the weak functions on Mac somehow. Patches and Mac buildbots are welcome :) --kcc> > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150707/2646d7b4/attachment.html>
FWIW see also http://lists.cs.uiuc.edu/pipermail/cfe-dev/2015-June/043301.html As far as I understand DFSan functionality isn't required for libFuzzer to work, so it should be safe to disable DFSan support on Mac. On Wed, Jul 8, 2015 at 7:45 AM, Kostya Serebryany <kcc at google.com> wrote:> +pcc , glider > > On Mon, Jul 6, 2015 at 12:59 PM, Juan Ceasar <juan.d.ceasar at gmail.com> > wrote: >> >> Afternoon, >> >> I had an issue with trying to link a program with the DataFlowSanitizer >> functionality, this is from the libFuzzer project, and I was seeing: >> >> clang++ -fsanitize=address -fsanitize-coverage=edge test_fuzzer.cc >> Fuzzer*.o >> >> Undefined symbols for architecture x86_64: >> >> "_dfsan_create_label", referenced from: >> >> fuzzer::TraceState::DFSanCmpCallback(unsigned long, unsigned long, >> unsigned long, unsigned long long, unsigned long long, unsigned short, >> unsigned short) in FuzzerTraceState.o >> >> fuzzer::Fuzzer::InitializeTraceState() in FuzzerTraceState.o >> >> "_dfsan_get_label_info", referenced from: >> >> fuzzer::TraceState::GetLabelRange(unsigned short) in >> FuzzerTraceState.o >> >> ..... >> >> But then looking at the docs: >> http://clang.llvm.org/docs/DataFlowSanitizer.html >> >> It appears that this is only supported under Linux? Is that right? >> > > Correct. AFAICT, DFSan was only tested on Linux. > It is quite hard to make it work on Mac because there are too many closed > source libraries there. > Nothing impossible though -- it's just that nobody has worked on it. > > libFuzzer was also never tested on Mac, but I think it should be trivial to > make it work there. > I suspect that the errors you see are caused by the weak function > declarations which don't (???) work on Mac. > You'll need to #ifdef the weak functions on Mac somehow. Patches and Mac > buildbots are welcome :) > > --kcc > >> >> >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >-- Alexander Potapenko Software Engineer Google Germany GmbH Dienerstraße 12 80331 München