Fix: deps to sanitizer runtime libs are with correct 'image' variant

This change fixes a bug that sanitizer runtime libs for non-core variant
(e.g. recovery, vendor, etc.) are not installed. It happened because the
dependency to the sanitizer runtime lib was without 'image' variant,
which in most case caused only the core variant - which is the first in
the image variants - of the lib to be installed.

Fixing the issue by correctly selecting image variant depending on the
location of the lib having dependency to the runtime lib.

Bug: 123525879
Test: SANITIZE_TARGET=hwaddress m out/target/product/blueline/boot.img
Test: SANITIZE_TARGET=address m out/target/product/blueline/boot.img
libclang_rt.*.so is under
out/target/product/blueline/root/recovery/system/lib64

Change-Id: Iea7d718d4971e36521f0a3f712a454de944cd7ac
This commit is contained in:
Jiyong Park
2019-01-29 11:15:04 +09:00
parent 3a30e13683
commit 3b1746a212
2 changed files with 15 additions and 9 deletions

View File

@@ -1175,15 +1175,9 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) {
depTag = headerExportDepTag
}
if buildStubs {
imageVariation := "core"
if c.useVndk() {
imageVariation = "vendor"
} else if c.inRecovery() {
imageVariation = "recovery"
}
actx.AddFarVariationDependencies([]blueprint.Variation{
{Mutator: "arch", Variation: ctx.Target().String()},
{Mutator: "image", Variation: imageVariation},
{Mutator: "image", Variation: c.imageVariation()},
}, depTag, lib)
} else {
actx.AddVariationDependencies(nil, depTag, lib)
@@ -1845,6 +1839,16 @@ func (c *Module) IsInstallableToApex() bool {
return false
}
func (c *Module) imageVariation() string {
variation := "core"
if c.useVndk() {
variation = "vendor"
} else if c.inRecovery() {
variation = "recovery"
}
return variation
}
//
// Defaults
//

View File

@@ -787,7 +787,7 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) {
}
if mctx.Device() && runtimeLibrary != "" {
if inList(runtimeLibrary, llndkLibraries) && !c.static() {
if inList(runtimeLibrary, llndkLibraries) && !c.static() && c.useVndk() {
runtimeLibrary = runtimeLibrary + llndkLibrarySuffix
}
@@ -802,12 +802,14 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) {
// static executable gets static runtime libs
mctx.AddFarVariationDependencies([]blueprint.Variation{
{Mutator: "link", Variation: "static"},
{Mutator: "image", Variation: c.imageVariation()},
{Mutator: "arch", Variation: mctx.Target().String()},
}, staticDepTag, runtimeLibrary)
} else if !c.static() {
// dynamic executable and shared libs get shared runtime libs
mctx.AddFarVariationDependencies([]blueprint.Variation{
{Mutator: "link", Variation: "shared"},
{Mutator: "image", Variation: c.imageVariation()},
{Mutator: "arch", Variation: mctx.Target().String()},
}, earlySharedDepTag, runtimeLibrary)
}