in cmd/seccomp-profiler/main.go [244:282]
func doObjdump(binary, hash string) (string, error) {
dumpFile, err := cachedDumpFile(binary)
if err != nil {
return "", err
}
f, err := os.Open(dumpFile)
if err == nil {
buf := make([]byte, 256/4)
n, err := f.Read(buf)
f.Close()
if err == nil && n == len(buf) && hash == string(buf) {
log.Println("Using cached objdump.")
return dumpFile, nil
}
}
f, err = os.Create(dumpFile)
if err != nil {
return "", err
}
defer f.Close()
out := bufio.NewWriter(f)
defer out.Flush()
if _, err = out.WriteString(hash + "\n"); err != nil {
return "", err
}
cmd := exec.Command("go", "tool", "objdump", binary)
cmd.Stdout = out
if err = cmd.Run(); err != nil {
return "", err
}
log.Println("objdump written to", dumpFile)
return dumpFile, nil
}