Support coverage instrumentation for Linux host
Bug: http://b/77792074 - Add the libclang_rt.profile runtime libraries directly to the compile command (for both host and target) instead of relying on the Clang driver. - Move the coverage mutator to PreDepsMutators so the mutation has already happened when runtime libraries are added during dependence computation. - Factor out cc/config/toolchain to identify libclang_rt.profile modules for the x86 and x86_64 host. Test: make NATIVE_COVERAGE=true produces coverage-enabled host binaries. Change-Id: I1ebc8cffdf11622bfc18199a57674672888b3a5f
This commit is contained in:
@@ -16,6 +16,7 @@ package cc
|
||||
|
||||
import (
|
||||
"android/soong/android"
|
||||
"android/soong/cc/config"
|
||||
)
|
||||
|
||||
type CoverageProperties struct {
|
||||
@@ -38,6 +39,10 @@ func (cov *coverage) props() []interface{} {
|
||||
func (cov *coverage) begin(ctx BaseModuleContext) {}
|
||||
|
||||
func (cov *coverage) deps(ctx BaseModuleContext, deps Deps) Deps {
|
||||
if cov.Properties.CoverageEnabled {
|
||||
runtimeLibrary := config.ProfileRuntimeLibrary(ctx.toolchain())
|
||||
deps.LateStaticLibs = append(deps.LateStaticLibs, runtimeLibrary)
|
||||
}
|
||||
return deps
|
||||
}
|
||||
|
||||
@@ -99,9 +104,8 @@ func coverageLinkingMutator(mctx android.BottomUpMutatorContext) {
|
||||
|
||||
if !mctx.DeviceConfig().NativeCoverageEnabled() {
|
||||
// Coverage is disabled globally
|
||||
} else if mctx.Host() {
|
||||
// TODO(dwillemsen): because of -nodefaultlibs, we must depend on libclang_rt.profile-*.a
|
||||
// Just turn off for now.
|
||||
} else if mctx.Darwin() || mctx.Windows() {
|
||||
// Coverage not supported for Darwin and Windows
|
||||
} else if c.coverage.Properties.Native_coverage != nil {
|
||||
enabled = *c.coverage.Properties.Native_coverage
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user