package main
import (
+ "bytes"
cmddwarf "cmd/internal/dwarf"
"cmd/internal/objfile"
"debug/dwarf"
}
exe = filepath.Join(tmpDir, "go.o")
}
+
+ if runtime.GOOS == "darwin" {
+ if _, err = exec.LookPath("symbols"); err == nil {
+ // Ensure Apple's tooling can parse our object for symbols.
+ out, err = exec.Command("symbols", exe).CombinedOutput()
+ if err != nil {
+ t.Fatal(err)
+ } else {
+ if bytes.HasPrefix(out, []byte("Unable to find file")) {
+ // This failure will cause the App Store to reject our binaries.
+ t.Fatalf("/usr/bin/symbols %v: failed to parse file", filepath.Base(exe))
+ }
+ }
+ }
+ }
+
f, err := objfile.Open(exe)
if err != nil {
t.Fatal(err)
func TestDWARF(t *testing.T) {
testDWARF(t, "", true)
+ if runtime.GOOS == "darwin" {
+ testDWARF(t, "c-archive", true)
+ }
}
func TestDWARFiOS(t *testing.T) {
ms = newMachoSeg("", 40)
ms.fileoffset = Segtext.Fileoff
- if ctxt.Arch.Family == sys.ARM || ctxt.BuildMode == BuildModeCArchive {
- ms.filesize = Segdata.Fileoff + Segdata.Filelen - Segtext.Fileoff
- } else {
- ms.filesize = Segdwarf.Fileoff + Segdwarf.Filelen - Segtext.Fileoff
- ms.vsize = Segdwarf.Vaddr + Segdwarf.Length - Segtext.Vaddr
- }
+ ms.filesize = Segdwarf.Fileoff + Segdwarf.Filelen - Segtext.Fileoff
+ ms.vsize = Segdwarf.Vaddr + Segdwarf.Length - Segtext.Vaddr
}
/* segment for zero page */