Android wrapper: Add support for --gomacc-path.

This is used by Android. To keep the wrappers in sync,
we also support it on ChromeOS.

BUG=chromium:773875
TEST=golden tests and comparison against old andorid wrapper.

Change-Id: I02d7456ead1c94327eb6810aeef4d106596518ec
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/1831789
Reviewed-by: George Burgess <gbiv@chromium.org>
Tested-by: Tobias Bosch <tbosch@google.com>
diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go
index 899a85c..09ef41d 100644
--- a/compiler_wrapper/compiler_wrapper.go
+++ b/compiler_wrapper/compiler_wrapper.go
@@ -85,7 +85,9 @@
 				return 0, err
 			}
 		}
-		processGomaCCacheFlags(sysroot, allowCCache, mainBuilder)
+		if err := processGomaCCacheFlags(sysroot, allowCCache, mainBuilder); err != nil {
+			return 0, err
+		}
 		compilerCmd = mainBuilder.build()
 	} else {
 		if clangSyntax {
@@ -94,10 +96,16 @@
 			if err != nil {
 				return 0, err
 			}
-			gccCmd := calcGccCommand(mainBuilder)
+			gccCmd, err := calcGccCommand(mainBuilder)
+			if err != nil {
+				return 0, err
+			}
 			return checkClangSyntax(env, clangCmd, gccCmd)
 		}
-		compilerCmd = calcGccCommand(mainBuilder)
+		compilerCmd, err = calcGccCommand(mainBuilder)
+		if err != nil {
+			return 0, err
+		}
 	}
 	rusageLogfileName := getRusageLogFilename(env)
 	bisectStage := getBisectStage(env)
@@ -142,11 +150,13 @@
 	if err != nil {
 		return nil, err
 	}
-	processGomaCCacheFlags(sysroot, allowCCache, builder)
+	if err := processGomaCCacheFlags(sysroot, allowCCache, builder); err != nil {
+		return nil, err
+	}
 	return builder.build(), nil
 }
 
-func calcGccCommand(builder *commandBuilder) *command {
+func calcGccCommand(builder *commandBuilder) (*command, error) {
 	sysroot := ""
 	if !builder.cfg.isHostWrapper {
 		sysroot = processSysrootFlag(builder)
@@ -158,9 +168,11 @@
 	processGccFlags(builder)
 	if !builder.cfg.isHostWrapper {
 		allowCCache := true
-		processGomaCCacheFlags(sysroot, allowCCache, builder)
+		if err := processGomaCCacheFlags(sysroot, allowCCache, builder); err != nil {
+			return nil, err
+		}
 	}
-	return builder.build()
+	return builder.build(), nil
 }
 
 func calcCommonPreUserArgs(builder *commandBuilder) {
@@ -176,14 +188,18 @@
 	}
 }
 
-func processGomaCCacheFlags(sysroot string, allowCCache bool, builder *commandBuilder) {
+func processGomaCCacheFlags(sysroot string, allowCCache bool, builder *commandBuilder) (err error) {
 	gomaccUsed := false
 	if !builder.cfg.isHostWrapper {
-		gomaccUsed = processGomaCccFlags(builder)
+		gomaccUsed, err = processGomaCccFlags(builder)
+		if err != nil {
+			return err
+		}
 	}
 	if !gomaccUsed && allowCCache {
 		processCCacheFlag(sysroot, builder)
 	}
+	return nil
 }
 
 func getAbsWrapperPath(env env, wrapperCmd *command) (string, error) {