]> Cypherpunks repositories - gostls13.git/commit
cmd/link: suppress unnecessary DWARF relocs that confuse dsymutil
authorHeschi Kreinick <heschi@google.com>
Wed, 4 Oct 2017 22:30:38 +0000 (18:30 -0400)
committerHeschi Kreinick <heschi@google.com>
Thu, 12 Oct 2017 18:51:54 +0000 (18:51 +0000)
commita0402b6bf84d7e51eb9181f5d39fb0037913384e
tree0bc8dc72b5d36c687464226d44648be73707fd87
parent764a6ac29e4f720a0a33cb5ee02b9108821d8388
cmd/link: suppress unnecessary DWARF relocs that confuse dsymutil

During Mach-O linking, dsymutil takes the DWARF from individual object
files and combines it into a debug archive. Because it's content-aware,
it doesn't need our help to do its job. Nonetheless, it does try to
honor relocations that are present in its input.

When dsymutil encounters a relocation, it uses the value of that
relocation as an index into the debug map to find its final location.
When it does that, it's assuming that the value is an address in the
object file. But DWARF references are section-relative. So when it
processes a relocation for a DWARF reference, it gets confused,
and if the value happens to match the address of a function or
data symbol, it will rewrite it incorrectly.

Since the relocations don't help, and can hurt, drop them when
externally linking a Mach-O binary.

Fixes #22068

Change-Id: I8ec36da626575d9f6c8d0e7a0b76eab8ba22d62c
Reviewed-on: https://go-review.googlesource.com/68330
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
src/cmd/link/internal/ld/data.go