func getData(file string) (*Data, error) { switch runtime.GOOS { case "linux": f, err := elf.Open(file) if err != nil { return nil, err } dwarf, err := f.DWARF() if err != nil { return nil, err } f.Close() return dwarf, nil case "darwin": f, err := macho.Open(file) if err != nil { return nil, err } dwarf, err := f.DWARF() if err != nil { return nil, err } f.Close() return dwarf, nil } panic("unimplemented DWARF for GOOS=" + runtime.GOOS) }
func machoData(t *testing.T, name string) *Data { f, err := macho.Open(name) if err != nil { t.Fatal(err) } d, err := f.DWARF() if err != nil { t.Fatal(err) } return d }
func (dbp *Process) findExecutable(path string) (*macho.File, error) { if path == "" { path = C.GoString(C.find_executable(C.int(dbp.Pid))) } exe, err := macho.Open(path) if err != nil { return nil, err } dbp.dwarf, err = exe.DWARF() if err != nil { return nil, err } return exe, nil }