diff options
author | Filippo Valsorda <filippo@golang.org> | 2020-04-08 17:39:57 -0400 |
---|---|---|
committer | Filippo Valsorda <filippo@golang.org> | 2020-04-08 17:48:41 -0400 |
commit | e067ce5225300a87ae6fe3c48e73102f6fa9368d (patch) | |
tree | 3b9335e0023a30f50c3261545019a2f9bb1bab97 /src/cmd/link/internal/ld/lib.go | |
parent | 79284c28734bf854f44106835b5578ead75eb547 (diff) | |
parent | 9baafabac9a84813a336f068862207d2bb06d255 (diff) | |
download | go-e067ce5225300a87ae6fe3c48e73102f6fa9368d.tar.gz go-e067ce5225300a87ae6fe3c48e73102f6fa9368d.zip |
[dev.boringcrypto] all: merge master into dev.boringcrypto
Change-Id: I2dcec316fd08d91db4183fb9d3b9afde65cc248f
Diffstat (limited to 'src/cmd/link/internal/ld/lib.go')
-rw-r--r-- | src/cmd/link/internal/ld/lib.go | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 2ce2cf0152..7f1b4b02ef 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -101,6 +101,7 @@ type Arch struct { Minalign int Dwarfregsp int Dwarfreglr int + Androiddynld string Linuxdynld string Freebsddynld string Netbsddynld string @@ -409,9 +410,6 @@ func (ctxt *Link) loadlib() { } // load internal packages, if not already - if ctxt.Arch.Family == sys.ARM { - loadinternal(ctxt, "math") - } if *flagRace { loadinternal(ctxt, "runtime/race") } @@ -1261,8 +1259,20 @@ func (ctxt *Link) hostlink() { } } case BuildModePIE: - // ELF. - if ctxt.HeadType != objabi.Hdarwin && ctxt.HeadType != objabi.Haix { + switch ctxt.HeadType { + case objabi.Hdarwin, objabi.Haix: + case objabi.Hwindows: + // Enable ASLR. + argv = append(argv, "-Wl,--dynamicbase") + // enable high-entropy ASLR on 64-bit. + if ctxt.Arch.PtrSize >= 8 { + argv = append(argv, "-Wl,--high-entropy-va") + } + // Work around binutils limitation that strips relocation table for dynamicbase. + // See https://sourceware.org/bugzilla/show_bug.cgi?id=19011 + argv = append(argv, "-Wl,--export-all-symbols") + default: + // ELF. if ctxt.UseRelro() { argv = append(argv, "-Wl,-z,relro") } @@ -1314,7 +1324,7 @@ func (ctxt *Link) hostlink() { // from the beginning of the section (like sym.STYPE). argv = append(argv, "-Wl,-znocopyreloc") - if ctxt.Arch.InFamily(sys.ARM, sys.ARM64) && (objabi.GOOS == "linux" || objabi.GOOS == "android") { + if ctxt.Arch.InFamily(sys.ARM, sys.ARM64) && objabi.GOOS == "linux" { // On ARM, the GNU linker will generate COPY relocations // even with -znocopyreloc set. // https://sourceware.org/bugzilla/show_bug.cgi?id=19962 |