summaryrefslogtreecommitdiff
path: root/rust/builder.go
diff options
context:
space:
mode:
author Ivan Lozano <ivanlozano@google.com> 2021-07-22 10:52:06 -0400
committer Ivan Lozano <ivanlozano@google.com> 2021-07-22 14:23:27 -0400
commita2268635f4f05cffb360b6c000b04e76c50c4fed (patch)
treedbe0981860503ec64c563e2462ca80af6faf34fa /rust/builder.go
parent719371072f69d7e6303e59f9c2ff657d71b6ce1c (diff)
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
Diffstat (limited to 'rust/builder.go')
-rw-r--r--rust/builder.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/rust/builder.go b/rust/builder.go
index 6db508d64..523428db2 100644
--- a/rust/builder.go
+++ b/rust/builder.go
@@ -220,6 +220,15 @@ func transformSrctoCrate(ctx ModuleContext, main android.Path, deps PathDeps, fl
linkFlags = append(linkFlags, flags.GlobalLinkFlags...)
linkFlags = append(linkFlags, flags.LinkFlags...)
+ // Check if this module needs to use the bootstrap linker
+ if ctx.RustModule().Bootstrap() && !ctx.RustModule().InRecovery() && !ctx.RustModule().InRamdisk() && !ctx.RustModule().InVendorRamdisk() {
+ dynamicLinker := "-Wl,-dynamic-linker,/system/bin/bootstrap/linker"
+ if ctx.toolchain().Is64Bit() {
+ dynamicLinker += "64"
+ }
+ linkFlags = append(linkFlags, dynamicLinker)
+ }
+
libFlags := makeLibFlags(deps)
// Collect dependencies