]> Cypherpunks.ru repositories - gostls13.git/commitdiff
make.bash: this change modifies Go to correctly select a dyamic linker
authorDilyn Corner <dilyn.corner@gmail.com>
Fri, 19 Mar 2021 18:18:18 +0000 (18:18 +0000)
committerIan Lance Taylor <iant@golang.org>
Fri, 19 Mar 2021 22:32:03 +0000 (22:32 +0000)
Alpine Linux is not the only musl-based Linux distribution. Checking for
/etc/alpine-release excludes many other distributions (Oasis, KISS,
Sabotage, sta.li). Not having the correct GO_LDSO set during go builds will
result in the wrong linker/loader on nonalpine musl systems for pie builds.
Instead, the dynamic loader should be checked for every system and set. This
results in the correct dynamic linker being found on glibc systems
(/lib/ld-linux-x86-64.so.2) and musl systems (/lib/ld-musl-x84_64.so.1).

Fixes #45034

Change-Id: I4c9389abc759aa34431dc6c781022636b81d6910
GitHub-Last-Rev: e17b9eb10693bfce7c9ce03af3b15bd0e56e8dbe
GitHub-Pull-Request: golang/go#45036
Reviewed-on: https://go-review.googlesource.com/c/go/+/301989
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Cherry Zhang <cherryyz@google.com>

src/make.bash

index b58f27bb1bc6bd661f336d3665c4c4790e3a438f..3d1b0c87e758f1f0ae4bee3026b105892b335d5c 100755 (executable)
@@ -130,13 +130,12 @@ if [ "$(uname -s)" = "GNU/kFreeBSD" ]; then
        export CGO_ENABLED=0
 fi
 
-# On Alpine Linux, use the musl dynamic linker/loader
-if [ -f "/etc/alpine-release" ]; then
-       if type readelf >/dev/null 2>&1; then
-               echo "int main() { return 0; }" | ${CC:-gcc} -o ./test-alpine-ldso -x c -
-               export GO_LDSO=$(readelf -l ./test-alpine-ldso | grep 'interpreter:' | sed -e 's/^.*interpreter: \(.*\)[]]/\1/')
-               rm -f ./test-alpine-ldso
-       fi
+# Test which linker/loader our system is using
+if type readelf >/dev/null 2>&1; then
+       echo "int main() { return 0; }" | ${CC:-cc} -o ./test-musl-ldso -x c - || continue
+       LDSO=$(readelf -l ./test-musl-ldso | grep 'interpreter:' | sed -e 's/^.*interpreter: \(.*\)[]]/\1/') >/dev/null 2>&1
+       [ -z "$LDSO" ] || export GO_LDSO="$LDSO"
+       rm -f ./test-musl-ldso
 fi
 
 # Clean old generated file that will cause problems in the build.