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
This commit is contained in:
@@ -221,10 +221,7 @@ var includeDirProperties = []includeDirsProperty{
|
||||
// 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 @@ type nativeLibInfoProperties struct {
|
||||
// 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 @@ func (p *nativeLibInfoProperties) PopulateFromVariant(ctx android.SdkMemberConte
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user