github.com/metux/go-metabuild@v0.0.0-20240118143255-d9ed5ab697f9/util/compiler/gnu/objdump.go (about) 1 package gnu 2 3 import ( 4 "strings" 5 6 "github.com/metux/go-metabuild/util" 7 "github.com/metux/go-metabuild/util/cmd" 8 ) 9 10 const ( 11 ErrArchUnknown = util.Error("objdump - unknown architecture") 12 ) 13 14 func RunObjdump(c []string, args []string) (string, error) { 15 if len(c) == 0 { 16 c = []string{"objdump"} 17 } 18 c = append(c, args...) 19 return cmd.RunOut(c, true) 20 } 21 22 func ArchXlate(a string) (string, error) { 23 if strings.HasSuffix(a, "i386") { 24 return "i386", nil 25 } 26 return a, ErrArchUnknown 27 } 28 29 func ELFDepends(cmd []string, fn string) ([]string, error) { 30 out, err := RunObjdump(cmd, []string{"-x", fn}) 31 return util.StrLinesFieldX(util.StrLinesGrep(out, "NEEDED "), 1), err 32 } 33 34 func ELFArch(cmd []string, fn string) (string, error) { 35 out, err := RunObjdump(cmd, []string{"-a", fn}) 36 if err != nil { 37 return "", err 38 } 39 return util.StrLinesFieldX(util.StrLinesGrep(out, "file format "), 3)[0], nil 40 }