aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorJoel Sing <joel@sing.id.au>2019-03-28 00:53:19 +1100
committerIan Lance Taylor <iant@golang.org>2019-03-29 17:46:01 +0000
commitc90f6dd4966087d85e1dcafc02b64ecb0c7f4e7e (patch)
tree709477b170978e76c21db2c69a77c314e1a8d8db /src/cmd
parent6966b67510df9a96dd798e5f6e26c5ad6dd925a5 (diff)
downloadgo-c90f6dd4966087d85e1dcafc02b64ecb0c7f4e7e.tar.xz
cmd/link: permit duplicate weak symbols
Permit weak symbols to be duplicates - most external linkers allow this and there are various situations where they can occur (including retpoline and retguard). Fixes #29563 Change-Id: I355493c847fbc8f670a85a643db65a4cf8f9883d Reviewed-on: https://go-review.googlesource.com/c/go/+/169658 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/link/internal/loadelf/ldelf.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cmd/link/internal/loadelf/ldelf.go b/src/cmd/link/internal/loadelf/ldelf.go
index d85d91948a..916b7cf9f2 100644
--- a/src/cmd/link/internal/loadelf/ldelf.go
+++ b/src/cmd/link/internal/loadelf/ldelf.go
@@ -1088,6 +1088,11 @@ func readelfsym(arch *sys.Arch, syms *sym.Symbols, elfobj *ElfObj, i int, elfsym
if elfsym.other == 2 {
s.Attr |= sym.AttrVisibilityHidden
}
+
+ // Allow weak symbols to be duplicated when already defined.
+ if s.Outer != nil {
+ s.Attr |= sym.AttrDuplicateOK
+ }
}
default: