aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-06-01 18:24:27 +0200
committerDmitry Vyukov <dvyukov@google.com>2017-06-03 10:41:09 +0200
commit03ad13e65574b4c2a5c85456cf7f09a7411acc95 (patch)
tree13132237fb9575c5380a0dc7024e3a8934b1a193 /pkg
parent5d2b332ab5b3b5c8a170f1854d31015dbe376458 (diff)
pkg/kernel: add CompilerIdentity function
Diffstat (limited to 'pkg')
-rw-r--r--pkg/kernel/kernel.go12
-rw-r--r--pkg/kernel/kernel_test.go25
2 files changed, 37 insertions, 0 deletions
diff --git a/pkg/kernel/kernel.go b/pkg/kernel/kernel.go
index 80a8e29c6..d19d9c5e6 100644
--- a/pkg/kernel/kernel.go
+++ b/pkg/kernel/kernel.go
@@ -18,6 +18,7 @@ import (
"path/filepath"
"runtime"
"strconv"
+ "strings"
"time"
"github.com/google/syzkaller/pkg/osutil"
@@ -72,3 +73,14 @@ func CreateImage(kernelDir, userspaceDir, tag, image string) error {
}
return nil
}
+
+func CompilerIdentity(compiler string) (string, error) {
+ output, err := osutil.RunCmd(time.Minute, "", compiler, "--version")
+ if err != nil {
+ return "", err
+ }
+ if len(output) == 0 {
+ return "", fmt.Errorf("no output from compiler --version")
+ }
+ return strings.Split(string(output), "\n")[0], nil
+}
diff --git a/pkg/kernel/kernel_test.go b/pkg/kernel/kernel_test.go
new file mode 100644
index 000000000..301a21b28
--- /dev/null
+++ b/pkg/kernel/kernel_test.go
@@ -0,0 +1,25 @@
+// Copyright 2017 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package kernel
+
+import (
+ "strings"
+ "testing"
+)
+
+func TestCompilerIdentity(t *testing.T) {
+ id, err := CompilerIdentity("gcc")
+ if err != nil {
+ t.Fatalf("failed: %v", err)
+ }
+ if len(id) == 0 {
+ t.Fatalf("identity is empty")
+ }
+ if strings.Index(id, "\n") != -1 {
+ t.Fatalf("identity contains a new line")
+ }
+ // We don't know what's the right answer,
+ // so just print it for manual inspection.
+ t.Logf("id: '%v'", id)
+}