From 2bcdf5edd73897b953e2422eadf389773f81c00c Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Tue, 4 Oct 2022 23:52:48 +0000 Subject: [coverage] On coverage+hwasan build, disable hwasan global instrumentation Bug: http://b/248022906 Bug: http://b/247941801 HWAsan global instrumentation on __llvm_profile_filename causes duplicate symbol errors when linked together with libraries where hwasan is disabled. Disable hwasan global instrumentation since those type of errors are rare. In the future, we may fix this in llvm to skip hwasan global instrumentation on symbols added for coverage. Test: m CLANG_COVERAGE=true NATIVE_COVERAGE_PATHS=* \ SANITIZE_TARGET=hwaddress Test: Add `hwaddress: true` to libc_defaults; m CLANG_COVERAGE=true Change-Id: I8506cfd567d212262a2a54b9881a8f64cdbf7a76 --- cc/coverage.go | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'cc/coverage.go') diff --git a/cc/coverage.go b/cc/coverage.go index d0902eab8..a7356f879 100644 --- a/cc/coverage.go +++ b/cc/coverage.go @@ -108,6 +108,12 @@ func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags if EnableContinuousCoverage(ctx) { flags.Local.CommonFlags = append(flags.Local.CommonFlags, "-mllvm", "-runtime-counter-relocation") } + + // http://b/248022906, http://b/247941801 enabling coverage and hwasan-globals + // instrumentation together causes duplicate-symbol errors for __llvm_profile_filename. + if c, ok := ctx.Module().(*Module); ok && c.sanitize.isSanitizerEnabled(Hwasan) { + flags.Local.CommonFlags = append(flags.Local.CommonFlags, "-mllvm", "-hwasan-globals=0") + } } } -- cgit v1.2.3-59-g8ed1b