diff options
| author | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-10-26 22:41:31 +0200 |
|---|---|---|
| committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-10-27 09:49:02 +0000 |
| commit | 31bfab4ac621e81100d7fc3bc8cf483c5d2d2fef (patch) | |
| tree | c9486d59f32df277b41bd51f50fb94d5942e0740 /src | |
| parent | 0d3092ffa7e7f613429ddcfd596d26ccbc84766f (diff) | |
| download | go-31bfab4ac621e81100d7fc3bc8cf483c5d2d2fef.tar.xz | |
cmd/link: enable DEP for Windows executables
There's no reason not to enable DEP in 2019, especially given Go's
minimum operating system level.
RELNOTE=yes
Change-Id: I9c3bbc5b05a1654876a218123dd57b9c9077b780
Reviewed-on: https://go-review.googlesource.com/c/go/+/203601
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/link/internal/ld/lib.go | 3 | ||||
| -rw-r--r-- | src/cmd/link/internal/ld/pe.go | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 3924de530b..1edf8cf407 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1188,6 +1188,9 @@ func (ctxt *Link) hostlink() { // ancient compatibility hacks. argv = append(argv, "-Wl,--tsaware") + // Enable DEP + argv = append(argv, "-Wl,--nxcompat") + argv = append(argv, fmt.Sprintf("-Wl,--major-os-version=%d", PeMinimumTargetMajorVersion)) argv = append(argv, fmt.Sprintf("-Wl,--minor-os-version=%d", PeMinimumTargetMinorVersion)) argv = append(argv, fmt.Sprintf("-Wl,--major-subsystem-version=%d", PeMinimumTargetMajorVersion)) diff --git a/src/cmd/link/internal/ld/pe.go b/src/cmd/link/internal/ld/pe.go index 12363626ae..b5851a94a0 100644 --- a/src/cmd/link/internal/ld/pe.go +++ b/src/cmd/link/internal/ld/pe.go @@ -861,14 +861,18 @@ func (f *peFile) writeOptionalHeader(ctxt *Link) { switch ctxt.Arch.Family { case sys.ARM: - oh64.DllCharacteristics = IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE | IMAGE_DLLCHARACTERISTICS_NX_COMPAT - oh.DllCharacteristics = IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE | IMAGE_DLLCHARACTERISTICS_NX_COMPAT + oh64.DllCharacteristics = IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE + oh.DllCharacteristics = IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE } // Mark as having awareness of terminal services, to avoid ancient compatibility hacks. oh64.DllCharacteristics |= IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE oh.DllCharacteristics |= IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE + // Enable DEP + oh64.DllCharacteristics |= IMAGE_DLLCHARACTERISTICS_NX_COMPAT + oh.DllCharacteristics |= IMAGE_DLLCHARACTERISTICS_NX_COMPAT + // Disable stack growth as we don't want Windows to // fiddle with the thread stack limits, which we set // ourselves to circumvent the stack checks in the |
