aboutsummaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorQuim Muntal <quimmuntal@gmail.com>2020-10-22 22:32:20 +0200
committerDmitri Shuralyov <dmitshur@golang.org>2021-03-31 21:39:47 +0000
commit82f9c6cac1bcc6bc80f17d1415ac3f62c0afa6c5 (patch)
tree085a8f22ae2d11d1feb6c5c495b41786fccbaa1d /misc
parent5055314a5749664ab66a24beed8158552e276959 (diff)
downloadgo-82f9c6cac1bcc6bc80f17d1415ac3f62c0afa6c5.tar.gz
go-82f9c6cac1bcc6bc80f17d1415ac3f62c0afa6c5.zip
[release-branch.go1.15] cmd/link: avoid exporting all symbols on windows buildmode=pie
Marking one functions with __declspec(dllexport) forces mingw to create .reloc section without having to export all symbols. See https://insights.sei.cmu.edu/cert/2018/08/when-aslr-is-not-really-aslr---the-case-of-incorrect-assumptions-and-bad-defaults.html for more info. This change cuts 73kb of a "hello world" pie binary. Updates #6853. Updates #40795. Fixes #43592. Change-Id: I3cc57c3b64f61187550bc8751dfa085f106c8475 Reviewed-on: https://go-review.googlesource.com/c/go/+/264459 Trust: Alex Brainman <alex.brainman@gmail.com> Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Alex Brainman <alex.brainman@gmail.com> Reviewed-by: Austin Clements <austin@google.com> Reviewed-on: https://go-review.googlesource.com/c/go/+/300692 Trust: Dmitri Shuralyov <dmitshur@golang.org> Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'misc')
-rw-r--r--misc/cgo/testcshared/cshared_test.go9
1 files changed, 5 insertions, 4 deletions
diff --git a/misc/cgo/testcshared/cshared_test.go b/misc/cgo/testcshared/cshared_test.go
index d717b4dfb3..dff2682e20 100644
--- a/misc/cgo/testcshared/cshared_test.go
+++ b/misc/cgo/testcshared/cshared_test.go
@@ -401,7 +401,7 @@ func main() {
defer f.Close()
section := f.Section(".edata")
if section == nil {
- t.Error(".edata section is not present")
+ t.Fatalf(".edata section is not present")
}
// TODO: deduplicate this struct from cmd/link/internal/ld/pe.go
@@ -418,7 +418,8 @@ func main() {
t.Fatalf("binary.Read failed: %v", err)
}
- expectedNumber := uint32(2)
+ // Only the two exported functions and _cgo_dummy_export should be exported
+ expectedNumber := uint32(3)
if exportAllSymbols {
if e.NumberOfFunctions <= expectedNumber {
@@ -429,10 +430,10 @@ func main() {
}
} else {
if e.NumberOfFunctions != expectedNumber {
- t.Fatalf("too many exported functions: %v", e.NumberOfFunctions)
+ t.Fatalf("got %d exported functions; want %d", e.NumberOfFunctions, expectedNumber)
}
if e.NumberOfNames != expectedNumber {
- t.Fatalf("too many exported names: %v", e.NumberOfNames)
+ t.Fatalf("got %d exported names; want %d", e.NumberOfNames, expectedNumber)
}
}
}