// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build go1.5

package driver

import (
	"flag"
	"fmt"
	"os"
	"runtime/trace"
)

var traceFile = flag.String("trace", "", "write an execution trace to the named file after execution")

func startTraceGo15() func() {
	// New runtime tracing added in Go 1.5.
	if *traceFile != "" {
		f, err := os.Create(*traceFile)
		if err != nil {
			fmt.Fprintln(os.Stderr, err)
			os.Exit(1)
		}
		if err := trace.Start(f); err != nil {
			fmt.Fprintf(os.Stderr, "can't start tracing: %s\n", err)
			os.Exit(1)
		}

		return func() {
			trace.Stop()
			f.Close()
		}
	}
	return func() {}
}

func init() {
	startTrace = startTraceGo15
}
