cmd/link: start at address 0 when external linking

When external linking, we are creating an object file, instead of
a executable. The absolute address is irrelevant. The external
linker will set it up. Start at address 0.

Change-Id: I3a2e0b8087b328d5c3144f29ca8ba6311aa39cba
Reviewed-on: https://go-review.googlesource.com/c/go/+/319830
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
Cherry Mui 2021-05-12 12:30:34 -04:00
parent 5da2010840
commit c92f5ee170
2 changed files with 5 additions and 1 deletions

View file

@ -697,7 +697,9 @@ func (ctxt *Link) linksetup() {
Peinit(ctxt)
}
if ctxt.HeadType == objabi.Hdarwin && ctxt.LinkMode == LinkExternal {
if ctxt.LinkMode == LinkExternal {
// When external linking, we are creating an object file. The
// absolute address is irrelevant.
*FlagTextAddr = 0
}

View file

@ -1061,6 +1061,8 @@ func Peinit(ctxt *Link) {
// linker will honour that requirement.
PESECTALIGN = 32
PEFILEALIGN = 0
// We are creating an object file. The absolute address is irrelevant.
PEBASE = 0
}
var sh [16]pe.SectionHeader32