1
0
mirror of https://github.com/golang/go synced 2024-11-18 12:04:57 -07:00

cmd/link: non-executable stack support for Solaris

Support the tagging of binaries created with the internal linker
on Solaris as having a non-executable stack by writing a PT_SUNWSTACK
program header.

Fixes #16074

Change-Id: I3888f2153083385d04a52f341570f93e5738b276
Reviewed-on: https://go-review.googlesource.com/24142
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
Shawn Walker-Salas 2016-06-15 13:44:03 -07:00 committed by Brad Fitzpatrick
parent 456b7f5a97
commit f373bf1eb9

View File

@ -238,6 +238,7 @@ const (
PT_GNU_STACK = 0x6474e551
PT_GNU_RELRO = 0x6474e552
PT_PAX_FLAGS = 0x65041580
PT_SUNWSTACK = 0x6ffffffb
PF_X = 0x1
PF_W = 0x2
PF_R = 0x4
@ -2550,6 +2551,10 @@ func Asmbelf(ctxt *Link, symo int64) {
ph.type_ = PT_PAX_FLAGS
ph.flags = 0x2a00 // mprotect, randexec, emutramp disabled
ph.align = uint64(SysArch.RegSize)
} else if Headtype == obj.Hsolaris {
ph := newElfPhdr()
ph.type_ = PT_SUNWSTACK
ph.flags = PF_W + PF_R
}
elfobj: