Skip apex dep check when sanitizer diag is enabled
To avoid adding ubsan to the apex allowed_dep list, this commit adds a
check on depedency tags to see if apex check should be skipped.
The check is only used on sharedLib dependencies when diag mode are enabled
for sanitizers.
Bug: 158010610
Test: make build for aosp-sargo and aosp_cf_x86_phone-userdebug
Change-Id: I3d7dbb70d8c80ffae1854819cf8cf9e6b0b15c00
diff --git a/cc/cc.go b/cc/cc.go
index ac6a258..b815268 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -609,6 +609,9 @@
makeSuffix string
+ // Whether or not this dependency should skip the apex dependency check
+ skipApexAllowedDependenciesCheck bool
+
// Whether or not this dependency has to be followed for the apex variants
excludeInApex bool
}
diff --git a/cc/sanitize.go b/cc/sanitize.go
index d7df5dc..0e2d01a 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -204,6 +204,13 @@
Properties SanitizeProperties
}
+// Mark this tag with a check to see if apex dependency check should be skipped
+func (t libraryDependencyTag) SkipApexAllowedDependenciesCheck() bool {
+ return t.skipApexAllowedDependenciesCheck
+}
+
+var _ android.SkipApexAllowedDependenciesCheck = (*libraryDependencyTag)(nil)
+
func init() {
android.RegisterMakeVarsProvider(pctx, cfiMakeVarsProvider)
android.RegisterMakeVarsProvider(pctx, hwasanMakeVarsProvider)
@@ -1038,9 +1045,18 @@
runtimeLibrary = lib
}
}
-
+ // Skip apex dependency check for sharedLibraryDependency
+ // when sanitizer diags are enabled. Skipping the check will allow
+ // building with diag libraries without having to list the
+ // dependency in Apex's allowed_deps file.
+ diagEnabled := len(diagSanitizers) > 0
// dynamic executable and shared libs get shared runtime libs
- depTag := libraryDependencyTag{Kind: sharedLibraryDependency, Order: earlyLibraryDependency}
+ depTag := libraryDependencyTag{
+ Kind: sharedLibraryDependency,
+ Order: earlyLibraryDependency,
+
+ skipApexAllowedDependenciesCheck: diagEnabled,
+ }
variations := append(mctx.Target().Variations(),
blueprint.Variation{Mutator: "link", Variation: "shared"})
if c.Device() {