diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-02-04 02:07:31 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-02-04 02:07:31 +0000 |
commit | 30977d507dd15b7df366b467f4012a3c75a25775 (patch) | |
tree | 0ff3043948e709a20f30e856413bb0a1aab72d7d /cc/coverage.go | |
parent | 93567935fd147a7a0086fd94594ccf113953bfd8 (diff) | |
parent | 8d8639d5f506d2058949a517c170d277203da566 (diff) | |
download | android_build_soong-30977d507dd15b7df366b467f4012a3c75a25775.tar.gz android_build_soong-30977d507dd15b7df366b467f4012a3c75a25775.tar.bz2 android_build_soong-30977d507dd15b7df366b467f4012a3c75a25775.zip |
Snap for 6179254 from 8d8639d5f506d2058949a517c170d277203da566 to qt-qpr3-release
Change-Id: Id9cdbaf3ab69ff34fa860bb9e6ae660571a27820
Diffstat (limited to 'cc/coverage.go')
-rw-r--r-- | cc/coverage.go | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/cc/coverage.go b/cc/coverage.go index 9dc7f06b..0de0c1c9 100644 --- a/cc/coverage.go +++ b/cc/coverage.go @@ -17,6 +17,8 @@ package cc import ( "strconv" + "github.com/google/blueprint" + "android/soong/android" ) @@ -41,30 +43,28 @@ func (cov *coverage) props() []interface{} { return []interface{}{&cov.Properties} } -func (cov *coverage) deps(ctx BaseModuleContext, deps Deps) Deps { - if cov.Properties.NeedCoverageBuild { - // Link libprofile-extras/libprofile-extras_ndk when coverage - // variant is required. This is a no-op unless coverage is - // actually enabled during linking, when - // '-uinit_profile_extras' is added (in flags()) to force the - // setup code in libprofile-extras be linked into the - // binary/library. - // - // We cannot narrow it further to only the 'cov' variant since - // the mutator hasn't run (and we don't have the 'cov' variant - // yet). - if !ctx.useSdk() { - deps.LateStaticLibs = append(deps.LateStaticLibs, "libprofile-extras") - } else { - deps.LateStaticLibs = append(deps.LateStaticLibs, "libprofile-extras_ndk") - } +func getProfileLibraryName(ctx ModuleContextIntf) string { + // This function should only ever be called for a cc.Module, so the + // following statement should always succeed. + if ctx.useSdk() { + return "libprofile-extras_ndk" + } else { + return "libprofile-extras" + } +} + +func (cov *coverage) deps(ctx DepsContext, deps Deps) Deps { + if cov.Properties.NeedCoverageVariant { + ctx.AddVariationDependencies([]blueprint.Variation{ + {Mutator: "link", Variation: "static"}, + }, coverageDepTag, getProfileLibraryName(ctx)) } return deps } -func (cov *coverage) flags(ctx ModuleContext, flags Flags) Flags { +func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags, PathDeps) { if !ctx.DeviceConfig().NativeCoverageEnabled() { - return flags + return flags, deps } if cov.Properties.CoverageEnabled { @@ -114,11 +114,13 @@ func (cov *coverage) flags(ctx ModuleContext, flags Flags) Flags { if cov.linkCoverage { flags.LdFlags = append(flags.LdFlags, "--coverage") - // Force linking of constructor/setup code in libprofile-extras - flags.LdFlags = append(flags.LdFlags, "-uinit_profile_extras") + coverage := ctx.GetDirectDepWithTag(getProfileLibraryName(ctx), coverageDepTag).(*Module) + deps.WholeStaticLibs = append(deps.WholeStaticLibs, coverage.OutputFile().Path()) + + flags.LdFlags = append(flags.LdFlags, "-Wl,--wrap,getenv") } - return flags + return flags, deps } func (cov *coverage) begin(ctx BaseModuleContext) { |