File tree 12 files changed +37
-18
lines changed 12 files changed +37
-18
lines changed Original file line number Diff line number Diff line change @@ -65,6 +65,7 @@ func Init() (*sys.Arch, ld.Arch) {
65
65
TLSIEtoLE : tlsIEtoLE ,
66
66
67
67
Linuxdynld : "/lib64/ld-linux-x86-64.so.2" ,
68
+ LinuxdynldMusl : "/lib/ld-musl-x84_64.so.1" ,
68
69
Freebsddynld : "/libexec/ld-elf.so.1" ,
69
70
Openbsddynld : "/usr/libexec/ld.so" ,
70
71
Netbsddynld : "/libexec/ld.elf_so" ,
Original file line number Diff line number Diff line change @@ -63,6 +63,7 @@ func Init() (*sys.Arch, ld.Arch) {
63
63
PEreloc1 : pereloc1 ,
64
64
65
65
Linuxdynld : "/lib/ld-linux.so.3" , // 2 for OABI, 3 for EABI
66
+ LinuxdynldMusl : "/lib/ld-musl-arm.so.1" ,
66
67
Freebsddynld : "/usr/libexec/ld-elf.so.1" ,
67
68
Openbsddynld : "/usr/libexec/ld.so" ,
68
69
Netbsddynld : "/libexec/ld.elf_so" ,
Original file line number Diff line number Diff line change @@ -62,8 +62,9 @@ func Init() (*sys.Arch, ld.Arch) {
62
62
PEreloc1 : pereloc1 ,
63
63
Trampoline : trampoline ,
64
64
65
- Androiddynld : "/system/bin/linker64" ,
66
- Linuxdynld : "/lib/ld-linux-aarch64.so.1" ,
65
+ Androiddynld : "/system/bin/linker64" ,
66
+ Linuxdynld : "/lib/ld-linux-aarch64.so.1" ,
67
+ LinuxdynldMusl : "/lib/ld-musl-aarch64.so.1" ,
67
68
68
69
Freebsddynld : "/usr/libexec/ld-elf.so.1" ,
69
70
Openbsddynld : "/usr/libexec/ld.so" ,
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ import (
15
15
"encoding/hex"
16
16
"fmt"
17
17
"internal/buildcfg"
18
+ "os"
18
19
"path/filepath"
19
20
"runtime"
20
21
"sort"
@@ -1782,6 +1783,16 @@ func asmbElf(ctxt *Link) {
1782
1783
}
1783
1784
} else {
1784
1785
interpreter = thearch .Linuxdynld
1786
+ // If interpreter does not exist, try musl instead.
1787
+ // This lets the same cmd/link binary work on
1788
+ // both glibc-based and musl-based systems.
1789
+ if _ , err := os .Stat (interpreter ); err != nil {
1790
+ if musl := thearch .LinuxdynldMusl ; musl != "" {
1791
+ if _ , err := os .Stat (musl ); err == nil {
1792
+ interpreter = musl
1793
+ }
1794
+ }
1795
+ }
1785
1796
}
1786
1797
1787
1798
case objabi .Hfreebsd :
Original file line number Diff line number Diff line change @@ -183,6 +183,7 @@ type Arch struct {
183
183
184
184
Androiddynld string
185
185
Linuxdynld string
186
+ LinuxdynldMusl string
186
187
Freebsddynld string
187
188
Netbsddynld string
188
189
Openbsddynld string
Original file line number Diff line number Diff line change @@ -31,6 +31,7 @@ func Init() (*sys.Arch, ld.Arch) {
31
31
Gentext : gentext ,
32
32
33
33
Linuxdynld : "/lib64/ld.so.1" ,
34
+ LinuxdynldMusl : "/lib64/ld-musl-loongarch.so.1" ,
34
35
Freebsddynld : "XXX" ,
35
36
Openbsddynld : "XXX" ,
36
37
Netbsddynld : "XXX" ,
Original file line number Diff line number Diff line change @@ -39,8 +39,10 @@ import (
39
39
40
40
func Init () (* sys.Arch , ld.Arch ) {
41
41
arch := sys .ArchMIPS
42
+ musl := "/lib/ld-musl-mips.so.1"
42
43
if buildcfg .GOARCH == "mipsle" {
43
44
arch = sys .ArchMIPSLE
45
+ musl = "/lib/ld-musl-mipsel.so.1"
44
46
}
45
47
46
48
theArch := ld.Arch {
@@ -60,7 +62,8 @@ func Init() (*sys.Arch, ld.Arch) {
60
62
Gentext : gentext ,
61
63
Machoreloc1 : machoreloc1 ,
62
64
63
- Linuxdynld : "/lib/ld.so.1" ,
65
+ Linuxdynld : "/lib/ld.so.1" ,
66
+ LinuxdynldMusl : musl ,
64
67
65
68
Freebsddynld : "XXX" ,
66
69
Openbsddynld : "XXX" ,
Original file line number Diff line number Diff line change @@ -39,8 +39,10 @@ import (
39
39
40
40
func Init () (* sys.Arch , ld.Arch ) {
41
41
arch := sys .ArchMIPS64
42
+ musl := "/lib/ld-musl-mips64.so.1"
42
43
if buildcfg .GOARCH == "mips64le" {
43
44
arch = sys .ArchMIPS64LE
45
+ musl = "/lib/ld-musl-mips64el.so.1"
44
46
}
45
47
46
48
theArch := ld.Arch {
@@ -60,6 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {
60
62
Machoreloc1 : machoreloc1 ,
61
63
62
64
Linuxdynld : "/lib64/ld64.so.1" ,
65
+ LinuxdynldMusl : musl ,
63
66
Freebsddynld : "XXX" ,
64
67
Openbsddynld : "/usr/libexec/ld.so" ,
65
68
Netbsddynld : "XXX" ,
Original file line number Diff line number Diff line change @@ -40,10 +40,12 @@ import (
40
40
func Init () (* sys.Arch , ld.Arch ) {
41
41
arch := sys .ArchPPC64LE
42
42
dynld := "/lib64/ld64.so.2"
43
+ musl := "/lib/ld-musl-powerpc64le.so.1"
43
44
44
45
if buildcfg .GOARCH == "ppc64" {
45
46
arch = sys .ArchPPC64
46
47
dynld = "/lib64/ld64.so.1"
48
+ musl = "/lib/ld-musl-powerpc64.so.1"
47
49
}
48
50
49
51
theArch := ld.Arch {
@@ -68,6 +70,8 @@ func Init() (*sys.Arch, ld.Arch) {
68
70
Xcoffreloc1 : xcoffreloc1 ,
69
71
70
72
Linuxdynld : dynld ,
73
+ LinuxdynldMusl : musl ,
74
+
71
75
Freebsddynld : "XXX" ,
72
76
Openbsddynld : "XXX" ,
73
77
Netbsddynld : "XXX" ,
Original file line number Diff line number Diff line change @@ -56,7 +56,8 @@ func Init() (*sys.Arch, ld.Arch) {
56
56
Gentext : gentext ,
57
57
Machoreloc1 : machoreloc1 ,
58
58
59
- Linuxdynld : "/lib64/ld64.so.1" ,
59
+ Linuxdynld : "/lib64/ld64.so.1" ,
60
+ LinuxdynldMusl : "/lib/ld-musl-s390x.so.1" ,
60
61
61
62
// not relevant for s390x
62
63
Freebsddynld : "XXX" ,
Original file line number Diff line number Diff line change @@ -61,11 +61,12 @@ func Init() (*sys.Arch, ld.Arch) {
61
61
Machoreloc1 : machoreloc1 ,
62
62
PEreloc1 : pereloc1 ,
63
63
64
- Linuxdynld : "/lib/ld-linux.so.2" ,
65
- Freebsddynld : "/usr/libexec/ld-elf.so.1" ,
66
- Openbsddynld : "/usr/libexec/ld.so" ,
67
- Netbsddynld : "/usr/libexec/ld.elf_so" ,
68
- Solarisdynld : "/lib/ld.so.1" ,
64
+ Linuxdynld : "/lib/ld-linux.so.2" ,
65
+ LinuxdynldMusl : "/lib/ld-musl-i386.so.1" ,
66
+ Freebsddynld : "/usr/libexec/ld-elf.so.1" ,
67
+ Openbsddynld : "/usr/libexec/ld.so" ,
68
+ Netbsddynld : "/usr/libexec/ld.elf_so" ,
69
+ Solarisdynld : "/lib/ld.so.1" ,
69
70
}
70
71
71
72
return arch , theArch
Original file line number Diff line number Diff line change @@ -133,15 +133,6 @@ if [ "$(uname -s)" = "GNU/kFreeBSD" ]; then
133
133
export CGO_ENABLED=0
134
134
fi
135
135
136
- # Test which linker/loader our system is using, if GO_LDSO is not set.
137
- if [ -z " $GO_LDSO " ] && type readelf > /dev/null 2>&1 ; then
138
- if echo " int main() { return 0; }" | ${CC:- cc} -o ./test-musl-ldso -x c - > /dev/null 2>&1 ; then
139
- LDSO=$( readelf -l ./test-musl-ldso | grep ' interpreter:' | sed -e ' s/^.*interpreter: \(.*\)[]]/\1/' ) > /dev/null 2>&1
140
- [ -z " $LDSO " ] || export GO_LDSO=" $LDSO "
141
- rm -f ./test-musl-ldso
142
- fi
143
- fi
144
-
145
136
# Clean old generated file that will cause problems in the build.
146
137
rm -f ./runtime/runtime_defs.go
147
138
You can’t perform that action at this time.
0 commit comments