<div dir="ltr">I'm trying to use LibFuzzer on my Mac - following the directions here: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_docs_LibFuzzer.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=CnzuN65ENJ1H9py9XLiRvC_UQz6u3oG6GUNn7_wosSM&m=WYIyQua-BuAHpTRjheye0esK5bf9KP6foAB-FaxKyAI&s=7F4bEEMn0MWI10dbEYC2n5NrhHb2aqO-LwNTkJ-X_rQ&e=">http://llvm.org/docs/LibFuzzer.html</a>.<div><br></div><div>But when I try to link my program and the Fuzzer object code, I get errors.</div><div><br></div><div>They appear to be symbols from compiler-rt that are missing.</div><div>Do I need a better (i.e, more recent) compiler-rt than the one that Apple ships?</div><div><br></div><div><br></div><div><div><div>Notes: </div><div>"totclang" --> freshly built clang.</div></div><div><div><br></div><div>$ export FUZZER=$LLVM/llvm/lib/Fuzzer</div></div><div><br></div><div>$ cd ~/fuzz</div><div><div>$ cat regex_fuzz.cpp</div><div>#include <regex></div><div><br></div><div>extern "C" void LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {</div><div>  if (size > 0) {</div><div>  <span class="" style="white-space:pre">      </span>std::regex re(std::string((const char *)data, size));</div><div>  <span class="" style="white-space:pre">   </span>}</div><div>}</div></div><div><br></div><div><div>$ totclang -c -g -O2 -std=c++11 -I $FUZZER $FUZZER/*.cpp</div><div>$ totclang -g -fsanitize=address  -fsanitize-coverage=edge,indirect-calls,8bit-counters -c -std=c++11 regex_fuzz.cpp </div><div>$ totclang -g -fsanitize=address Fuzzer*.o regex_fuzz.o -Wl <br></div></div><div><div><br></div><div>Undefined symbols for architecture x86_64:</div><div>  "_dfsan_create_label", referenced from:</div><div>      fuzzer::TraceState::DFSanCmpCallback(unsigned long, unsigned long, unsigned long, unsigned long long, unsigned long long, unsigned short, unsigned short) in FuzzerTraceState.o</div><div>      fuzzer::Fuzzer::InitializeTraceState() in FuzzerTraceState.o</div><div>  "_dfsan_get_label_info", referenced from:</div><div>      fuzzer::TraceState::GetLabelRange(unsigned short) in FuzzerTraceState.o</div><div>  "_dfsan_read_label", referenced from:</div><div>      _dfsan_weak_hook_memcmp in FuzzerTraceState.o</div><div>  "_dfsan_set_label", referenced from:</div><div>      fuzzer::Fuzzer::InitializeTraceState() in FuzzerTraceState.o</div><div>ld: symbol(s) not found for architecture x86_64</div><div>clang-3.7: error: linker command failed with exit code 1 (use -v to see invocation)</div></div><div><br></div></div><div>-- Marshall</div><div><br></div></div>