]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/link/internal/ld: dedup shared libraries on openbsd
authorJoel Sing <joel@sing.id.au>
Wed, 11 Nov 2020 17:30:15 +0000 (04:30 +1100)
committerJoel Sing <joel@sing.id.au>
Mon, 16 Nov 2020 18:39:54 +0000 (18:39 +0000)
commit38367d098ed4d97539de5e43e03bce985fc56d8e
treee91934e74acc289bd4f088cff319e5a688850d70
parentd834ecec8637e3d54b67debf95ceb649cc0b4e1d
cmd/link/internal/ld: dedup shared libraries on openbsd

When linking internally on OpenBSD, dedup libraries treating versioned
and unversioned libraries as equivalents. Versioned libraries are preferred
and are retained over unversioned libraries.

This avoids the situation where the use of cgo results in a DT_NEEDED for a
versioned library (for example, libc.so.96.1), while a dynamic import
specifies an unversioned library (for example, libc.so). Without deduplication
this would result in two DT_NEEDED entries, causing a failure when ld.so
attempts to load the Go binrary.

Updates #36435
Fixes #39257

Change-Id: I4a4942f259dece01d97bb51df9e13d67c9f94d34
Reviewed-on: https://go-review.googlesource.com/c/go/+/249978
Trust: Joel Sing <joel@sing.id.au>
Run-TryBot: Joel Sing <joel@sing.id.au>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/cmd/link/internal/ld/elf_test.go
src/cmd/link/internal/ld/go.go
src/cmd/link/internal/ld/go_test.go [new file with mode: 0644]
src/cmd/link/internal/ld/testdata/issue39256/x.go