summaryrefslogtreecommitdiff
path: root/rust/compiler.go
diff options
context:
space:
mode:
author Ivan Lozano <ivanlozano@google.com> 2021-07-27 12:29:12 -0400
committer Ivan Lozano <ivanlozano@google.com> 2021-07-27 15:05:13 -0400
commit45a9e3196caaf61e2dcf4faec608ec9e3e862dd7 (patch)
tree71460bb83bee8de8de146a583ec7b8b75630038a /rust/compiler.go
parent6e4950a06167fd9aa5e0bd3fef4f0b5b480ee857 (diff)
rust: Prevent manually defined lib link flags.
Adds a filter to prevent modules from manually defining certain linkage flags. These flags should only be automatically generated based on listed dependencies. Bug: 161942165 Test: Soong tests pass Change-Id: Ibc014391ef1de10188c2d139d41d0241d6c68b5f
Diffstat (limited to 'rust/compiler.go')
-rw-r--r--rust/compiler.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/rust/compiler.go b/rust/compiler.go
index df77759d6..de59f39ac 100644
--- a/rust/compiler.go
+++ b/rust/compiler.go
@@ -17,6 +17,7 @@ package rust
import (
"fmt"
"path/filepath"
+ "strings"
"github.com/google/blueprint/proptools"
@@ -235,6 +236,25 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flag
if err != nil {
ctx.PropertyErrorf("lints", err.Error())
}
+
+ // linkage-related flags are disallowed.
+ for _, s := range compiler.Properties.Ld_flags {
+ if strings.HasPrefix(s, "-Wl,-l") || strings.HasPrefix(s, "-Wl,-L") {
+ ctx.PropertyErrorf("ld_flags", "'-Wl,-l' and '-Wl,-L' flags cannot be manually specified")
+ }
+ }
+ for _, s := range compiler.Properties.Flags {
+ if strings.HasPrefix(s, "-l") || strings.HasPrefix(s, "-L") {
+ ctx.PropertyErrorf("flags", "'-l' and '-L' flags cannot be manually specified")
+ }
+ if strings.HasPrefix(s, "--extern") {
+ ctx.PropertyErrorf("flags", "'--extern' flag cannot be manually specified")
+ }
+ if strings.HasPrefix(s, "-Clink-args=") || strings.HasPrefix(s, "-C link-args=") {
+ ctx.PropertyErrorf("flags", "'-C link-args' flag cannot be manually specified")
+ }
+ }
+
flags.RustFlags = append(flags.RustFlags, lintFlags)
flags.RustFlags = append(flags.RustFlags, compiler.Properties.Flags...)
flags.RustFlags = append(flags.RustFlags, compiler.cfgsToFlags()...)