Support resource usage logging

BUG=chromium:773875
TEST=unit test

Change-Id: Ifc0a7311b439e767dbb83bee350c210abbff54e4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/1695802
Reviewed-by: Tobias Bosch <tbosch@google.com>
Tested-by: Tobias Bosch <tbosch@google.com>
diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go
index e24faef..8c5825e 100644
--- a/compiler_wrapper/compiler_wrapper.go
+++ b/compiler_wrapper/compiler_wrapper.go
@@ -74,9 +74,16 @@
 		}
 		compilerCmd = calcGccCommand(mainBuilder)
 	}
+	rusageLogfileName := getRusageLogFilename(env)
 	if shouldForceDisableWError(env) {
+		if rusageLogfileName != "" {
+			return 0, newUserErrorf("GETRUSAGE is meaningless with FORCE_DISABLE_WERROR")
+		}
 		return doubleBuildWithWNoError(env, cfg, compilerCmd)
 	}
+	if rusageLogfileName != "" {
+		return logRusage(env, rusageLogfileName, compilerCmd)
+	}
 	// Note: We return an exit code only if the underlying env is not
 	// really doing an exec, e.g. commandRecordingEnv.
 	return wrapSubprocessErrorWithSourceLoc(compilerCmd, env.exec(compilerCmd))