diff options
| author | Joel Sing <joel@sing.id.au> | 2019-03-28 00:53:19 +1100 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2019-03-29 17:46:01 +0000 |
| commit | c90f6dd4966087d85e1dcafc02b64ecb0c7f4e7e (patch) | |
| tree | 709477b170978e76c21db2c69a77c314e1a8d8db /src/cmd | |
| parent | 6966b67510df9a96dd798e5f6e26c5ad6dd925a5 (diff) | |
| download | go-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.go | 5 |
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: |
