mirror of https://github.com/golang/go.git
cmd/link: add padding after runtime.etext
The runtime.etext symbol is a marker symbol that marks the end of (Go's) text section. Currently it has 0 size on some platforms. Especially in external linking mode, this may cause the next symbol (e.g. a C function) to have the same address as runtime.etext, which may confuse some symbolizer. Add some padding bytes to avoid address collision. Change-Id: Ic450bab72e4ac79a3b6b891729831d4148b89234 Reviewed-on: https://go-review.googlesource.com/c/go/+/479075 Run-TryBot: Cherry Mui <cherryyz@google.com> Reviewed-by: Nicolas Hillegeer <aktau@google.com> Run-TryBot: Nicolas Hillegeer <aktau@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
e4abe90bf8
commit
a6c382eaa8
|
|
@ -2416,7 +2416,9 @@ func (ctxt *Link) textaddress() {
|
|||
}
|
||||
}
|
||||
|
||||
sect.Length = va - sect.Vaddr
|
||||
// Add MinLC size after etext, so it won't collide with the next symbol
|
||||
// (which may confuse some symbolizer).
|
||||
sect.Length = va - sect.Vaddr + uint64(ctxt.Arch.MinLC)
|
||||
ldr.SetSymSect(etext, sect)
|
||||
if ldr.SymValue(etext) == 0 {
|
||||
// Set the address of the start/end symbols, if not already
|
||||
|
|
|
|||
Loading…
Reference in New Issue