1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 17:19:20 +00:00

go-1.8: add patch for set soname in ELF shared objects

The go link tool does not set the soname by default, which
prevents package.bbclass's shlibs processing from seeing
shared libraries built with go.

This patch passes appropriate options to go's linker and
the external linker to set the soname.

(From OE-Core rev: 24c2ac446296663b86160cac046e7faccb19f5af)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Matt Madison
2017-09-13 14:54:04 -03:00
committed by Richard Purdie
parent e3c693eaea
commit 996836ae4b
2 changed files with 45 additions and 0 deletions
+1
View File
@@ -16,6 +16,7 @@ SRC_URI += "\
file://gotooldir.patch \
file://make-goroot-precious.patch \
file://set-gotooldir-during-bootstrap.patch \
file://0006-linker-add-soname-to-shareable-objects.patch \
"
SRC_URI[main.md5sum] = "64e9380e07bba907e26a00cf5fcbe77e"
SRC_URI[main.sha256sum] = "5f5dea2447e7dcfdc50fa6b94c512e58bfba5673c039259fd843f68829d99fa6"
@@ -0,0 +1,44 @@
From 81e9e322297d83f57f02548689c71859bfce10ee Mon Sep 17 00:00:00 2001
From: Matt Madison <matt@madison.systems>
Date: Sun, 15 Jan 2017 05:24:49 -0800
Subject: [PATCH 6/6] linker: add soname to shareable objects
Shared library handling in OE builds works better when shared
libraries are tagged with SONAMEs.
Upstream-Status: Pending
Signed-off-by: Matt Madison <matt@madison.systems>
---
src/cmd/link/internal/ld/lib.go | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
index 74d79d3..6d03005 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -1040,12 +1040,14 @@ func (l *Link) hostlink() {
// Pass -z nodelete to mark the shared library as
// non-closeable: a dlclose will do nothing.
argv = append(argv, "-shared", "-Wl,-z,nodelete")
+ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))
}
case BuildmodeShared:
if UseRelro() {
argv = append(argv, "-Wl,-z,relro")
}
argv = append(argv, "-shared")
+ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))
case BuildmodePlugin:
if Headtype == obj.Hdarwin {
argv = append(argv, "-dynamiclib")
@@ -1054,6 +1056,7 @@ func (l *Link) hostlink() {
argv = append(argv, "-Wl,-z,relro")
}
argv = append(argv, "-shared")
+ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))
}
}
--
2.7.4