diff --git a/cc/cc.go b/cc/cc.go index 1e313c0b7..9722cf088 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -40,7 +40,6 @@ func init() { ctx.BottomUp("ndk_api", ndkApiMutator).Parallel() ctx.BottomUp("test_per_src", testPerSrcMutator).Parallel() ctx.BottomUp("begin", beginMutator).Parallel() - ctx.BottomUp("coverage", coverageLinkingMutator).Parallel() }) android.PostDepsMutators(func(ctx android.RegisterMutatorsContext) { @@ -55,6 +54,7 @@ func init() { ctx.TopDown("sanitize_runtime_deps", sanitizerRuntimeDepsMutator()) + ctx.BottomUp("coverage", coverageLinkingMutator).Parallel() ctx.TopDown("vndk_deps", sabiDepsMutator) ctx.TopDown("lto_deps", ltoDepsMutator) @@ -809,15 +809,12 @@ func (c *Module) deps(ctx DepsContext) Deps { if c.compiler != nil { deps = c.compiler.compilerDeps(ctx, deps) } - // clang_rt.profile runtime libraries necessary for PGO and coverage - // depend on symbols from libgcc. Add the runtime library dependency - // before libgcc gets added in linkerDeps(). + // Add the PGO dependency (the clang_rt.profile runtime library), which + // sometimes depends on symbols from libgcc, before libgcc gets added + // in linkerDeps(). if c.pgo != nil { deps = c.pgo.deps(ctx, deps) } - if c.coverage != nil { - deps = c.coverage.deps(ctx, deps) - } if c.linker != nil { deps = c.linker.linkerDeps(ctx, deps) } @@ -827,6 +824,9 @@ func (c *Module) deps(ctx DepsContext) Deps { if c.sanitize != nil { deps = c.sanitize.deps(ctx, deps) } + if c.coverage != nil { + deps = c.coverage.deps(ctx, deps) + } if c.sabi != nil { deps = c.sabi.deps(ctx, deps) } diff --git a/cc/config/toolchain.go b/cc/config/toolchain.go index 19d282892..ca863a7d7 100644 --- a/cc/config/toolchain.go +++ b/cc/config/toolchain.go @@ -85,8 +85,6 @@ type Toolchain interface { AvailableLibraries() []string Bionic() bool - - profileRuntimeLibrary() string } type toolchainBase struct { @@ -171,10 +169,6 @@ func (toolchainBase) Bionic() bool { return true } -func (t toolchainBase) profileRuntimeLibrary() string { - return "" -} - func (t toolchainBase) ToolPath() string { return "" } @@ -246,12 +240,6 @@ func ThreadSanitizerRuntimeLibrary(t Toolchain) string { } func ProfileRuntimeLibrary(t Toolchain) string { - lib := t.profileRuntimeLibrary() - if lib != "" { - // Return the directly exported profile library - return lib - } - // Return the Android-specific library return SanitizerRuntimeLibrary(t, "profile") } diff --git a/cc/config/x86_linux_bionic_host.go b/cc/config/x86_linux_bionic_host.go index 290793e6f..a9fb1f661 100644 --- a/cc/config/x86_linux_bionic_host.go +++ b/cc/config/x86_linux_bionic_host.go @@ -151,10 +151,6 @@ func (t *toolchainLinuxBionic) Bionic() bool { return true } -func (t *toolchainLinuxBionic) profileRuntimeLibrary() string { - return "libclang_rt.profile-x86_64" -} - var toolchainLinuxBionicSingleton Toolchain = &toolchainLinuxBionic{} func linuxBionicToolchainFactory(arch android.Arch) Toolchain { diff --git a/cc/config/x86_linux_host.go b/cc/config/x86_linux_host.go index 653f819e0..354500eb0 100644 --- a/cc/config/x86_linux_host.go +++ b/cc/config/x86_linux_host.go @@ -270,14 +270,6 @@ func (t *toolchainLinuxX8664) YasmFlags() string { return "${config.LinuxX8664YasmFlags}" } -func (t *toolchainLinuxX86) profileRuntimeLibrary() string { - return "libclang_rt.profile-i386" -} - -func (t *toolchainLinuxX8664) profileRuntimeLibrary() string { - return "libclang_rt.profile-x86_64" -} - func (t *toolchainLinux) AvailableLibraries() []string { return linuxAvailableLibraries } diff --git a/cc/coverage.go b/cc/coverage.go index 671353c9d..391b11812 100644 --- a/cc/coverage.go +++ b/cc/coverage.go @@ -16,7 +16,6 @@ package cc import ( "android/soong/android" - "android/soong/cc/config" ) type CoverageProperties struct { @@ -39,10 +38,6 @@ 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 } @@ -104,8 +99,9 @@ func coverageLinkingMutator(mctx android.BottomUpMutatorContext) { if !mctx.DeviceConfig().NativeCoverageEnabled() { // Coverage is disabled globally - } else if mctx.Darwin() || mctx.Windows() { - // Coverage not supported for Darwin and Windows + } else if mctx.Host() { + // TODO(dwillemsen): because of -nodefaultlibs, we must depend on libclang_rt.profile-*.a + // Just turn off for now. } else if c.coverage.Properties.Native_coverage != nil { enabled = *c.coverage.Properties.Native_coverage } else {