Support clang host wrapper.
This change adds support for the clang host wrapper.
The implementation is verified via comparing to the old
clang host wrapper in the golden tests.
BUG=chromium:773875
TEST=unit test
Change-Id: I48284736014ab4b66bfd7e31e88ffd23956007bb
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/1708750
Tested-by: Tobias Bosch <tbosch@google.com>
Reviewed-by: George Burgess <gbiv@chromium.org>
diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go
index 5545dc6..b2172c6 100644
--- a/compiler_wrapper/compiler_wrapper.go
+++ b/compiler_wrapper/compiler_wrapper.go
@@ -108,7 +108,10 @@
}
func prepareClangCommand(builder *commandBuilder) (sysroot string, err error) {
- sysroot = processSysrootFlag(builder)
+ sysroot = ""
+ if !builder.cfg.isHostWrapper {
+ sysroot = processSysrootFlag(builder)
+ }
builder.addPreUserArgs(builder.cfg.clangFlags...)
calcCommonPreUserArgs(builder)
if err := processClangFlags(builder); err != nil {
@@ -138,27 +141,32 @@
func calcCommonPreUserArgs(builder *commandBuilder) {
builder.addPreUserArgs(builder.cfg.commonFlags...)
- processPieFlags(builder)
- processStackProtectorFlags(builder)
- processThumbCodeFlags(builder)
- processX86Flags(builder)
+ if !builder.cfg.isHostWrapper {
+ processPieFlags(builder)
+ processStackProtectorFlags(builder)
+ processThumbCodeFlags(builder)
+ processX86Flags(builder)
+ }
processSanitizerFlags(builder)
}
func processGomaCCacheFlags(sysroot string, allowCCache bool, builder *commandBuilder) {
- gomaccUsed := processGomaCccFlags(builder)
+ gomaccUsed := false
+ if !builder.cfg.isHostWrapper {
+ gomaccUsed = processGomaCccFlags(builder)
+ }
if !gomaccUsed && allowCCache {
processCCacheFlag(sysroot, builder)
}
}
-func getAbsWrapperDir(env env, wrapperCmd *command) (string, error) {
+func getAbsWrapperPath(env env, wrapperCmd *command) (string, error) {
wrapperPath := getAbsCmdPath(env, wrapperCmd)
evaledCmdPath, err := filepath.EvalSymlinks(wrapperPath)
if err != nil {
return "", wrapErrorwithSourceLocf(err, "failed to evaluate symlinks for %s", wrapperPath)
}
- return filepath.Dir(evaledCmdPath), nil
+ return evaledCmdPath, nil
}
func printCompilerError(writer io.Writer, compilerErr error) {