Propagate all sanitizer flags in SDK snapshots.
liblog snapshot needs to sanitizer.address=false to avoid cycle in asan
builds. Adding that separately in library_sdk_member.go would start to
feel like whack-a-mole, so the snapshot generation is instead extended
to handle nested property structs.
This uses the BpPropertySet.AddProperty extension in
https://r.android.com/1423510, and common value optimisation now
recurses into non-anonymous structs, instead of comparing them as a
whole.
Test: m nothing
Test: `m SANITIZE_TARGET=address nothing` with prebuilts/runtime
present in the manifest and a fresh snapshot made with this
Bug: 151303681
Change-Id: I472554117a488e6c800045cb2ed59377778571a4
diff --git a/cc/library_sdk_member.go b/cc/library_sdk_member.go
index 2f15544..a1de84b 100644
--- a/cc/library_sdk_member.go
+++ b/cc/library_sdk_member.go
@@ -221,10 +221,7 @@
// Add properties that may, or may not, be arch specific.
func addPossiblyArchSpecificProperties(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, libInfo *nativeLibInfoProperties, outputProperties android.BpPropertySet) {
- if libInfo.SanitizeNever {
- sanitizeSet := outputProperties.AddPropertySet("sanitize")
- sanitizeSet.AddProperty("never", true)
- }
+ outputProperties.AddProperty("sanitize", &libInfo.Sanitize)
// Copy the generated library to the snapshot and add a reference to it in the .bp module.
if libInfo.outputFile != nil {
@@ -373,8 +370,10 @@
// not vary by arch so cannot be android specific.
StubsVersion string `sdk:"ignored-on-host"`
- // Value of SanitizeProperties.Sanitize.Never. Needs to be propagated for CRT objects.
- SanitizeNever bool `android:"arch_variant"`
+ // Value of SanitizeProperties.Sanitize. Several - but not all - of these
+ // affect the expanded variants. All are propagated to avoid entangling the
+ // sanitizer logic with the snapshot generation.
+ Sanitize SanitizeUserProps `android:"arch_variant"`
// outputFile is not exported as it is always arch specific.
outputFile android.Path
@@ -423,8 +422,8 @@
p.StubsVersion = ccModule.StubsVersion()
}
- if ccModule.sanitize != nil && proptools.Bool(ccModule.sanitize.Properties.Sanitize.Never) {
- p.SanitizeNever = true
+ if ccModule.sanitize != nil {
+ p.Sanitize = ccModule.sanitize.Properties.Sanitize
}
}