Merge changes from topic "sanitizer-runtime-stubs"
* changes:
Add version dependencies to sanitizer runtime dependencies
Fix prebuilt library stubs
Track allowed transitive deps in any updatable module.
diff --git a/cc/fuzz.go b/cc/fuzz.go
index 5295418..0453847 100644
--- a/cc/fuzz.go
+++ b/cc/fuzz.go
@@ -38,6 +38,9 @@
// Specify whether this fuzz target was submitted by a researcher. Defaults
// to false.
Researcher_submitted *bool `json:"researcher_submitted,omitempty"`
+ // Specify who should be acknowledged for CVEs in the Android Security
+ // Bulletin.
+ Acknowledgement []string `json:"acknowledgement,omitempty"`
}
func (f *FuzzConfig) String() string {
diff --git a/java/java_test.go b/java/java_test.go
index 9e63577..f16639a 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -1487,6 +1487,12 @@
libs: ["foo"],
sdk_version: "system_29",
}
+ java_library {
+ name: "baz-module-30",
+ srcs: ["c.java"],
+ libs: ["foo"],
+ sdk_version: "module_30",
+ }
`)
// check the existence of the internal modules
@@ -1533,6 +1539,13 @@
"prebuilts/sdk/29/system/foo.jar")
}
+ bazModule30Javac := ctx.ModuleForTests("baz-module-30", "android_common").Rule("javac")
+ // tests if "baz-module-30" is actually linked to the module 30 stubs lib
+ if !strings.Contains(bazModule30Javac.Args["classpath"], "prebuilts/sdk/30/module-lib/foo.jar") {
+ t.Errorf("baz-module-30 javac classpath %v does not contain %q", bazModule30Javac.Args["classpath"],
+ "prebuilts/sdk/30/module-lib/foo.jar")
+ }
+
// test if baz has exported SDK lib names foo and bar to qux
qux := ctx.ModuleForTests("qux", "android_common")
if quxLib, ok := qux.Module().(*Library); ok {
diff --git a/java/sdk.go b/java/sdk.go
index f599265..971791f 100644
--- a/java/sdk.go
+++ b/java/sdk.go
@@ -222,7 +222,7 @@
return ctx.Config().AlwaysUsePrebuiltSdks()
} else if s.version.isNumbered() {
// validation check
- if s.kind != sdkPublic && s.kind != sdkSystem && s.kind != sdkTest {
+ if s.kind != sdkPublic && s.kind != sdkSystem && s.kind != sdkTest && s.kind != sdkModule {
panic(fmt.Errorf("prebuilt SDK is not not available for sdkKind=%q", s.kind))
return false
}
diff --git a/java/testing.go b/java/testing.go
index a472413..461fd3f 100644
--- a/java/testing.go
+++ b/java/testing.go
@@ -55,6 +55,8 @@
"prebuilts/sdk/30/public/framework.aidl": nil,
"prebuilts/sdk/30/system/android.jar": nil,
"prebuilts/sdk/30/system/foo.jar": nil,
+ "prebuilts/sdk/30/module-lib/android.jar": nil,
+ "prebuilts/sdk/30/module-lib/foo.jar": nil,
"prebuilts/sdk/30/public/core-for-system-modules.jar": nil,
"prebuilts/sdk/current/core/android.jar": nil,
"prebuilts/sdk/current/public/android.jar": nil,
diff --git a/rust/binary.go b/rust/binary.go
index e95cb3a..2758ae0 100644
--- a/rust/binary.go
+++ b/rust/binary.go
@@ -145,6 +145,9 @@
}
}
-func (binary *binaryDecorator) staticStd(ctx *depsContext) bool {
- return binary.baseCompiler.staticStd(ctx) || Bool(binary.Properties.Prefer_rlib)
+func (binary *binaryDecorator) stdLinkage(ctx *depsContext) RustLinkage {
+ if Bool(binary.Properties.Prefer_rlib) {
+ return RlibLinkage
+ }
+ return binary.baseCompiler.stdLinkage(ctx)
}
diff --git a/rust/compiler.go b/rust/compiler.go
index aeb904b..102f9dc 100644
--- a/rust/compiler.go
+++ b/rust/compiler.go
@@ -24,6 +24,14 @@
"android/soong/rust/config"
)
+type RustLinkage int
+
+const (
+ DefaultLinkage RustLinkage = iota
+ RlibLinkage
+ DylibLinkage
+)
+
func (compiler *baseCompiler) edition() string {
return proptools.StringDefault(compiler.Properties.Edition, config.DefaultEdition)
}
@@ -146,12 +154,12 @@
panic("baseCompiler does not implement coverageOutputZipPath()")
}
-func (compiler *baseCompiler) staticStd(ctx *depsContext) bool {
+func (compiler *baseCompiler) stdLinkage(ctx *depsContext) RustLinkage {
// For devices, we always link stdlibs in as dylibs by default.
if ctx.Device() {
- return false
+ return DylibLinkage
} else {
- return true
+ return RlibLinkage
}
}
diff --git a/rust/library.go b/rust/library.go
index 2792c5b..7a77706 100644
--- a/rust/library.go
+++ b/rust/library.go
@@ -158,9 +158,12 @@
return library.MutatedProperties.VariantIsStatic
}
-func (library *libraryDecorator) staticStd(ctx *depsContext) bool {
- // libraries should only request the staticStd when building a static FFI or when variant is staticStd
- return library.static() || library.MutatedProperties.VariantIsStaticStd
+func (library *libraryDecorator) stdLinkage(ctx *depsContext) RustLinkage {
+ // libraries should only request the RlibLinkage when building a static FFI or when variant is StaticStd
+ if library.static() || library.MutatedProperties.VariantIsStaticStd {
+ return RlibLinkage
+ }
+ return DefaultLinkage
}
func (library *libraryDecorator) source() bool {
diff --git a/rust/rust.go b/rust/rust.go
index 1f8b904..68e5a5b 100644
--- a/rust/rust.go
+++ b/rust/rust.go
@@ -294,7 +294,7 @@
Disabled() bool
SetDisabled()
- staticStd(ctx *depsContext) bool
+ stdLinkage(ctx *depsContext) RustLinkage
}
type exportedFlagsProducer interface {
@@ -1002,8 +1002,9 @@
commonDepVariations = append(commonDepVariations,
blueprint.Variation{Mutator: "image", Variation: android.CoreVariation})
}
+
stdLinkage := "dylib-std"
- if mod.compiler.staticStd(ctx) {
+ if mod.compiler.stdLinkage(ctx) == RlibLinkage {
stdLinkage = "rlib-std"
}
@@ -1035,7 +1036,7 @@
}
}
if deps.Stdlibs != nil {
- if mod.compiler.staticStd(ctx) {
+ if mod.compiler.stdLinkage(ctx) == RlibLinkage {
actx.AddVariationDependencies(
append(commonDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: "rlib"}),
rlibDepTag, deps.Stdlibs...)
diff --git a/rust/test.go b/rust/test.go
index 0679448..bc7f53c 100644
--- a/rust/test.go
+++ b/rust/test.go
@@ -134,6 +134,6 @@
return module.Init()
}
-func (test *testDecorator) staticStd(ctx *depsContext) bool {
- return true
+func (test *testDecorator) stdLinkage(ctx *depsContext) RustLinkage {
+ return RlibLinkage
}