aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/go/go-1.9/0007-ld-add-soname-to-shareable-objects.patch
blob: 6459782d814a967b543ce2b91b3737039d9cf2c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
From e957c3458d53e37bf416f51d2f8bf54c195e50f5 Mon Sep 17 00:00:00 2001
From: Matt Madison <matt@madison.systems>
Date: Wed, 13 Sep 2017 08:27:02 -0700
Subject: [PATCH 7/7] ld: add soname to shareable objects

Shared library handling in OE depends on the inclusion
of an soname header, so update the go linker to add that
header for both internal and external linking.

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 0234105..0b9e2d0 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -1124,12 +1124,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 == objabi.Hdarwin {
 			argv = append(argv, "-dynamiclib")
@@ -1138,6 +1140,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