From a2268635f4f05cffb360b6c000b04e76c50c4fed Mon Sep 17 00:00:00 2001 From: Ivan Lozano Date: Thu, 22 Jul 2021 10:52:06 -0400 Subject: rust: Add support for bootstrap linker. Adds the 'bootstrap' property to Rust modules to set the linker to the bootstrap linker. Bug: 194276829 Test: set bootstrap: true on module, checked .interp section on output. Test: bootstrapped binary runs. Change-Id: I459c8194902cfea3c44b060e70d28a43fcba3ade --- rust/binary_test.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'rust/binary_test.go') diff --git a/rust/binary_test.go b/rust/binary_test.go index 86f50d3e4..968c0c1ff 100644 --- a/rust/binary_test.go +++ b/rust/binary_test.go @@ -114,6 +114,23 @@ func TestBinaryFlags(t *testing.T) { } } +// Test that the bootstrap property sets the appropriate linker +func TestBootstrap(t *testing.T) { + ctx := testRust(t, ` + rust_binary { + name: "foo", + srcs: ["foo.rs"], + bootstrap: true, + }`) + + foo := ctx.ModuleForTests("foo", "android_arm64_armv8-a").Rule("rustc") + + flag := "-Wl,-dynamic-linker,/system/bin/bootstrap/linker64" + if !strings.Contains(foo.Args["linkFlags"], flag) { + t.Errorf("missing link flag to use bootstrap linker, expecting %#v, linkFlags: %#v", flag, foo.Args["linkFlags"]) + } +} + func TestStaticBinaryFlags(t *testing.T) { ctx := testRust(t, ` rust_binary { -- cgit v1.2.3-59-g8ed1b