Commit f373bf1e authored by Shawn Walker-Salas's avatar Shawn Walker-Salas Committed by Brad Fitzpatrick

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: 's avatarRuss Cox <rsc@golang.org>
parent 456b7f5a
......@@ -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:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment