New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 790747 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 3
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocked on:
issue 759795
issue 821840

Blocking:
issue 759794



Sign in to add a comment

Cannot compile fuzz target on Mac with use_clang_coverage=true

Project Member Reported by mmoroz@chromium.org, Nov 30 2017

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.
 

Comment 1 by mmoroz@chromium.org, Nov 30 2017

Blockedon: 764514
Blocking: 759794

Comment 2 by mmoroz@chromium.org, Dec 22 2017

Components: Tools>CodeCoverage

Comment 3 by mmoroz@chromium.org, Feb 26 2018

Blockedon: -764514 759795
Status: Fixed (was: Started)
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)

Comment 4 by mmoroz@chromium.org, Apr 23 2018

Labels: Coverage-v1-Blocker
Status: Started (was: Fixed)

Comment 5 by mmoroz@chromium.org, Apr 23 2018

c#3 was wrong, we still need it as it is a separate issue from `-limited-coverage-experimental=true`

Comment 6 by mmoroz@chromium.org, Apr 23 2018

Blockedon: 821840
Labels: -Pri-1 Pri-3
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1024191

can't be landed before test coverage is established ( issue 821840 )
Project Member

Comment 7 by bugdroid1@chromium.org, 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

Comment 8 by mmoroz@chromium.org, Apr 24 2018

Labels: -Coverage-v1-Blocker
Not a blocker anymore, but likely to be addressed after  issue 821840  is done.
Labels: -Pri-3 Pri-2
Probably Pri=2
Project Member

Comment 10 by bugdroid1@chromium.org, 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

Status: Fixed (was: Started)

Sign in to add a comment