From 03ad13e65574b4c2a5c85456cf7f09a7411acc95 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Thu, 1 Jun 2017 18:24:27 +0200 Subject: pkg/kernel: add CompilerIdentity function --- pkg/kernel/kernel.go | 12 ++++++++++++ pkg/kernel/kernel_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 pkg/kernel/kernel_test.go (limited to 'pkg') 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) +} -- cgit mrf-deployment