src/cmd/link/internal/ld/macho_combine_dwarf.go | 34 ++++++++++++++++++---------------- diff --git a/src/cmd/link/internal/ld/macho_combine_dwarf.go b/src/cmd/link/internal/ld/macho_combine_dwarf.go index 7d33f75b545cbbc5c5c96d7d2a16ec0746b379c0..8c805763717e62e2c5dcb9edd42d64ca40503d3b 100644 --- a/src/cmd/link/internal/ld/macho_combine_dwarf.go +++ b/src/cmd/link/internal/ld/macho_combine_dwarf.go @@ -265,7 +265,7 @@ return false, err } } // Do the final update of the DWARF segment's load command. - return false, machoUpdateDwarfHeader(&reader, ctxt.BuildMode, compressedSects) + return false, machoUpdateDwarfHeader(&reader, compressedSects, dwarfsize) } // machoCompressSections tries to compress the DWARF segments in dwarfm, @@ -410,7 +410,7 @@ return nil } // machoUpdateDwarfHeader updates the DWARF segment load command. -func machoUpdateDwarfHeader(r *loadCmdReader, buildmode BuildMode, compressedSects []*macho.Section) error { +func machoUpdateDwarfHeader(r *loadCmdReader, compressedSects []*macho.Section, dwarfsize uint64) error { var seg, sect interface{} cmd, err := r.Next() if err != nil { @@ -428,8 +428,6 @@ return err } segv := reflect.ValueOf(seg).Elem() segv.FieldByName("Offset").SetUint(uint64(dwarfstart)) - segv.FieldByName("Addr").SetUint(uint64(dwarfaddr)) - segv.FieldByName("Prot").SetUint(0) if compressedSects != nil { var segSize uint64 @@ -437,23 +435,27 @@ for _, newSect := range compressedSects { segSize += newSect.Size } segv.FieldByName("Filesz").SetUint(segSize) - segv.FieldByName("Memsz").SetUint(uint64(Rnd(int64(segSize), 1<