mirror of https://github.com/golang/go.git
cmd/nm: accept macho files which don't have symbol table in the archive
After https://golang.org/cl/64793, we started to include Mach-O object files which don't have symbol table into cgo archive. However, toolchains didn't handle those files yet. Fixes #21959 Change-Id: Ibb2f6492f1fa59368f2dfd4cff19783997539875 Reviewed-on: https://go-review.googlesource.com/65170 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
dd5a86f18c
commit
2f7b57e9d8
|
|
@ -30,7 +30,7 @@ func openMacho(r io.ReaderAt) (rawFile, error) {
|
|||
|
||||
func (f *machoFile) symbols() ([]Sym, error) {
|
||||
if f.macho.Symtab == nil {
|
||||
return nil, fmt.Errorf("missing symbol table")
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// Build sorted list of addresses of all symbols.
|
||||
|
|
|
|||
|
|
@ -110,15 +110,19 @@ func nm(file string) {
|
|||
|
||||
entries := f.Entries()
|
||||
|
||||
var found bool
|
||||
|
||||
for _, e := range entries {
|
||||
syms, err := e.Symbols()
|
||||
if err != nil {
|
||||
errorf("reading %s: %v", file, err)
|
||||
}
|
||||
if len(syms) == 0 {
|
||||
errorf("reading %s: no symbols", file)
|
||||
continue
|
||||
}
|
||||
|
||||
found = true
|
||||
|
||||
switch *sortOrder {
|
||||
case "address":
|
||||
sort.Slice(syms, func(i, j int) bool { return syms[i].Addr < syms[j].Addr })
|
||||
|
|
@ -155,5 +159,9 @@ func nm(file string) {
|
|||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
errorf("reading %s: no symbols", file)
|
||||
}
|
||||
|
||||
w.Flush()
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue