aboutsummaryrefslogtreecommitdiff
path: root/compiler_wrapper/command.go
diff options
context:
space:
mode:
Diffstat (limited to 'compiler_wrapper/command.go')
-rw-r--r--compiler_wrapper/command.go19
1 files changed, 17 insertions, 2 deletions
diff --git a/compiler_wrapper/command.go b/compiler_wrapper/command.go
index eb040b25..e2a5176d 100644
--- a/compiler_wrapper/command.go
+++ b/compiler_wrapper/command.go
@@ -1,4 +1,4 @@
-// Copyright 2019 The Chromium OS Authors. All rights reserved.
+// Copyright 2019 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -76,7 +76,7 @@ func runCmdWithTimeout(env env, cmd *command, t time.Duration) error {
cmdCtx.Stderr = env.stderr()
if err := cmdCtx.Start(); err != nil {
- return newErrorwithSourceLocf("exec error: %v", err)
+ return fmt.Errorf("exec error: %w", err)
}
err := cmdCtx.Wait()
if ctx.Err() == nil {
@@ -265,6 +265,21 @@ func (builder *commandBuilder) transformArgs(transform func(arg builderArg) stri
builder.args = newArgs
}
+// Allows to filter arg pairs, useful for eg when having adjacent unsupported args
+// like "-Wl,-z -Wl,defs"
+func (builder *commandBuilder) filterArgPairs(keepPair func(arg1, arg2 builderArg) bool) {
+ newArgs := builder.args[:0]
+ for i := 0; i < len(builder.args); i++ {
+ if i == len(builder.args)-1 || keepPair(builder.args[i], builder.args[i+1]) {
+ newArgs = append(newArgs, builder.args[i])
+ } else {
+ // skip builder.args[i]) as well as next item
+ i++
+ }
+ }
+ builder.args = newArgs
+}
+
func (builder *commandBuilder) updateEnv(updates ...string) {
builder.envUpdates = append(builder.envUpdates, updates...)
}