summaryrefslogtreecommitdiff
path: root/rust/library_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'rust/library_test.go')
-rw-r--r--rust/library_test.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/rust/library_test.go b/rust/library_test.go
index 35a420cd5..adbf4feff 100644
--- a/rust/library_test.go
+++ b/rust/library_test.go
@@ -441,3 +441,60 @@ func TestRustFFIExportedIncludes(t *testing.T) {
libfooStatic := ctx.ModuleForTests("libfoo", "linux_glibc_x86_64_static").Rule("cc")
android.AssertStringDoesContain(t, "cFlags for lib module", libfooStatic.Args["cFlags"], " -Irust_includes ")
}
+
+func TestRustVersionScript(t *testing.T) {
+ ctx := testRust(t, `
+ rust_library {
+ name: "librs",
+ srcs: ["bar.rs"],
+ crate_name: "rs",
+ extra_exported_symbols: "librs.map.txt",
+ }
+ rust_ffi {
+ name: "libffi",
+ srcs: ["foo.rs"],
+ crate_name: "ffi",
+ version_script: "libffi.map.txt",
+ }
+ `)
+
+ //linkFlags
+ librs := ctx.ModuleForTests("librs", "android_arm64_armv8-a_dylib").Rule("rustc")
+ libffi := ctx.ModuleForTests("libffi", "android_arm64_armv8-a_shared").Rule("rustc")
+
+ if !strings.Contains(librs.Args["linkFlags"], "-Wl,--version-script=librs.map.txt") {
+ t.Errorf("missing expected -Wl,--version-script= linker flag for libextended shared lib, linkFlags: %#v",
+ librs.Args["linkFlags"])
+ }
+ if strings.Contains(librs.Args["linkFlags"], "-Wl,--android-version-script=librs.map.txt") {
+ t.Errorf("unexpected -Wl,--android-version-script= linker flag for libextended shared lib, linkFlags: %#v",
+ librs.Args["linkFlags"])
+ }
+
+ if !strings.Contains(libffi.Args["linkFlags"], "-Wl,--android-version-script=libffi.map.txt") {
+ t.Errorf("missing -Wl,--android-version-script= linker flag for libreplaced shared lib, linkFlags: %#v",
+ libffi.Args["linkFlags"])
+ }
+ if strings.Contains(libffi.Args["linkFlags"], "-Wl,--version-script=libffi.map.txt") {
+ t.Errorf("unexpected -Wl,--version-script= linker flag for libextended shared lib, linkFlags: %#v",
+ libffi.Args["linkFlags"])
+ }
+}
+
+func TestRustVersionScriptPropertyErrors(t *testing.T) {
+ testRustError(t, "version_script: can only be set for rust_ffi modules", `
+ rust_library {
+ name: "librs",
+ srcs: ["bar.rs"],
+ crate_name: "rs",
+ version_script: "libbar.map.txt",
+ }`)
+ testRustError(t, "version_script and extra_exported_symbols", `
+ rust_ffi {
+ name: "librs",
+ srcs: ["bar.rs"],
+ crate_name: "rs",
+ version_script: "libbar.map.txt",
+ extra_exported_symbols: "libbar.map.txt",
+ }`)
+}