From 1f10f684516b131b5e6aebdf9b7915cf07409510 Mon Sep 17 00:00:00 2001 From: Ivan Lozano Date: Fri, 8 Nov 2024 16:16:50 +0000 Subject: rust: Propagate static libs correctly A dylib link is a final link, so we should not propagate staticlibs through them. Most of the time this made no difference, but this was breaking edge cases on coverage builds. This CL breaks apart linkObjects so we can more finely tune which dependencies we propagate and which we should not. rlibs should only propagate non-whole static librares, while rlibs and dylibs propagate whole static libs. Bug: 377932175 Test: m Test: New Soong tests Change-Id: Ib2ae3dcb7d775a57bd4b1715ec528f48cc0ca026 --- rust/binary.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'rust/binary.go') diff --git a/rust/binary.go b/rust/binary.go index 3c7a48274..5a03d91c2 100644 --- a/rust/binary.go +++ b/rust/binary.go @@ -139,7 +139,10 @@ func (binary *binaryDecorator) compile(ctx ModuleContext, flags Flags, deps Path flags.RustFlags = append(flags.RustFlags, deps.depFlags...) flags.LinkFlags = append(flags.LinkFlags, deps.depLinkFlags...) - flags.LinkFlags = append(flags.LinkFlags, deps.linkObjects...) + flags.LinkFlags = append(flags.LinkFlags, deps.rustLibObjects...) + flags.LinkFlags = append(flags.LinkFlags, deps.sharedLibObjects...) + flags.LinkFlags = append(flags.LinkFlags, deps.staticLibObjects...) + flags.LinkFlags = append(flags.LinkFlags, deps.wholeStaticLibObjects...) if binary.stripper.NeedsStrip(ctx) { strippedOutputFile := outputFile -- cgit v1.2.3-59-g8ed1b