]> code.ossystems Code Review - openembedded-core.git/commitdiff
go-1.8: add patch for set soname in ELF shared objects
authorMatt Madison <matt@madison.systems>
Wed, 13 Sep 2017 17:54:04 +0000 (14:54 -0300)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 13 Sep 2017 21:12:19 +0000 (22:12 +0100)
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.

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>
meta/recipes-devtools/go/go-1.8.inc
meta/recipes-devtools/go/go-1.8/0006-linker-add-soname-to-shareable-objects.patch [new file with mode: 0644]

index 141c0994c3cae3fce6d10fdb2d7ba0df6f6889bd..8c4b71e428aaaa2cd50ced5fa020f3f87f696c5a 100644 (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"
diff --git a/meta/recipes-devtools/go/go-1.8/0006-linker-add-soname-to-shareable-objects.patch b/meta/recipes-devtools/go/go-1.8/0006-linker-add-soname-to-shareable-objects.patch
new file mode 100644 (file)
index 0000000..74e1f24
--- /dev/null
@@ -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
+