diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-07-03 15:57:36 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-07-03 15:57:36 +0000 |
commit | 9086b037eb418807f99d5ce5825f285d6b427cc6 (patch) | |
tree | 77dc031614745bb406dbd90cea9a082a1b5cdd54 /compiler_wrapper/command.go | |
parent | 732a4eb324abf0d0f0c2bf539634a5e45ef5f56f (diff) | |
parent | 40214b48188358a80b7478bfff21d4814dd9177c (diff) | |
download | toolchain-utils-9086b037eb418807f99d5ce5825f285d6b427cc6.tar.gz |
Snap for 10428683 from 40214b48188358a80b7478bfff21d4814dd9177c to mainline-adbd-releaseaml_adb_341520010aml_adb_341517070aml_adb_340912530aml_adb_340912350aml_adb_340912200aml_adb_340912000android14-mainline-adbd-release
Change-Id: I578fe57f97e55cbf6f5fc268be1f15035a00433b
Diffstat (limited to 'compiler_wrapper/command.go')
-rw-r--r-- | compiler_wrapper/command.go | 19 |
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...) } |