Cannot compile fuzz target on Mac with use_clang_coverage=true |
||||||||
Issue description
The linker is not happy:
$ ninja -C out/coverage/ -j20 zlib_uncompress_fuzzer
ninja: Entering directory `out/coverage/'
[1/1] LINK ./zlib_uncompress_fuzzer
FAILED: zlib_uncompress_fuzzer zlib_uncompress_fuzzer.dSYM zlib_uncompress_fuzzer.dSYM/Contents/Info.plist zlib_uncompress_fuzzer.dSYM/Contents/Resources/DWARF/zlib_uncompress_fuzzer
export DEVELOPER_DIR=/Users/mmoroz/projects/chromium/src/build/mac_files/Xcode.app; TOOL_VERSION=1504131674 ../../build/toolchain/mac/linker_driver.py ../../third_party/llvm-build/Release+Asserts/bin/clang++ -Wcrl,dsym,. -stdlib=libc++ -arch x86_64 -segprot PROTECTED_MEMORY rw r -Werror -Wl,-dead_strip -isysroot ../../build/mac_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.9.0 -fprofile-instr-generate -fsanitize-coverage=trace-pc-guard -Wl,-ObjC -Wl,-U,_LLVMFuzzerCustomMutator -Wl,-U,_LLVMFuzzerInitialize -Wl,-U,_sanitizer_options_link_helper -fsanitize-coverage=trace-pc-guard -o "./zlib_uncompress_fuzzer" -Wl,-filelist,"./zlib_uncompress_fuzzer.rsp"
ld: file not found: /Users/mmoroz/projects/chromium/src/third_party/llvm-build/Release+Asserts/lib/clang/6.0.0/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Traceback (most recent call last):
File "../../build/toolchain/mac/linker_driver.py", line 229, in <module>
Main(sys.argv)
File "../../build/toolchain/mac/linker_driver.py", line 79, in Main
subprocess.check_call(compiler_driver_args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['../../third_party/llvm-build/Release+Asserts/bin/clang++', '-stdlib=libc++', '-arch', 'x86_64', '-segprot', 'PROTECTED_MEMORY', 'rw', 'r', '-Werror', '-Wl,-dead_strip', '-isysroot', '../../build/mac_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk', '-mmacosx-version-min=10.9.0', '-fprofile-instr-generate', '-fsanitize-coverage=trace-pc-guard', '-Wl,-ObjC', '-Wl,-U,_LLVMFuzzerCustomMutator', '-Wl,-U,_LLVMFuzzerInitialize', '-Wl,-U,_sanitizer_options_link_helper', '-fsanitize-coverage=trace-pc-guard', '-o', './zlib_uncompress_fuzzer', '-Wl,-filelist,./zlib_uncompress_fuzzer.rsp']' returned non-zero exit status 1
ninja: build stopped: subcommand failed.
I think the reason is that we use "-fsanitize-coverage=trace-pc-guard" (we need that for fuzz targets), but don't use any other sanitizer. In that case, clang wants to use ubsan runtime, which is not included in Mac toolchain.
Sounds like one more reason to finally switch to -fsanitize=fuzzer.
,
Dec 22 2017
,
Feb 26 2018
Not an issue anymore since we enabled -limited-coverage-experimental=true in issue 759795 ( https://cs.chromium.org/chromium/src/build/config/coverage/BUILD.gn?sq=package:chromium&l=19)
,
Apr 23 2018
,
Apr 23 2018
c#3 was wrong, we still need it as it is a separate issue from `-limited-coverage-experimental=true`
,
Apr 23 2018
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1024191 can't be landed before test coverage is established ( issue 821840 )
,
Apr 24 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/915eb5af3f17be4c453faac318b715e18210d61f commit 915eb5af3f17be4c453faac318b715e18210d61f Author: Max Moroz <mmoroz@chromium.org> Date: Tue Apr 24 16:10:35 2018 Add an assertion against building fuzz targets with code coverage on Mac. Bug: 790747 , 759794 Change-Id: Ic95c5217c6781ed5a8628200397a128f418d1a0d Reviewed-on: https://chromium-review.googlesource.com/1024444 Reviewed-by: Abhishek Arya <inferno@chromium.org> Reviewed-by: Yuke Liao <liaoyuke@chromium.org> Commit-Queue: Max Moroz <mmoroz@chromium.org> Cr-Commit-Position: refs/heads/master@{#553148} [modify] https://crrev.com/915eb5af3f17be4c453faac318b715e18210d61f/testing/libfuzzer/fuzzer_test.gni
,
Apr 24 2018
Not a blocker anymore, but likely to be addressed after issue 821840 is done.
,
May 16 2018
Probably Pri=2
,
Jan 3
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ec701c8d902e7a459f0dc99a8dcad216320553fd commit ec701c8d902e7a459f0dc99a8dcad216320553fd Author: Max Moroz <mmoroz@chromium.org> Date: Thu Jan 03 21:18:52 2019 Enable building fuzz targets with code coverage instrumentation on macOS. Bug: 790747 Change-Id: I4bbae28a27174ce1d2e53ad356aba7726d16c228 Reviewed-on: https://chromium-review.googlesource.com/c/1394597 Reviewed-by: Max Moroz <mmoroz@chromium.org> Reviewed-by: Abhishek Arya <inferno@chromium.org> Commit-Queue: Max Moroz <mmoroz@chromium.org> Cr-Commit-Position: refs/heads/master@{#619755} [modify] https://crrev.com/ec701c8d902e7a459f0dc99a8dcad216320553fd/testing/libfuzzer/fuzzer_test.gni
,
Jan 3
|
||||||||
►
Sign in to add a comment |
||||||||
Comment 1 by mmoroz@chromium.org
, Nov 30 2017Blocking: 759794