From fe2e2ffefad0d99d7d3dbce872d33206d1475fac Mon Sep 17 00:00:00 2001 From: Roberto Ricci Date: Wed, 13 Apr 2022 10:56:22 +0200 Subject: [PATCH] go: update to 1.18.1. --- .../fix-ppc64le-startup-detection.patch | 81 ------------------- srcpkgs/go/template | 4 +- 2 files changed, 2 insertions(+), 83 deletions(-) delete mode 100644 srcpkgs/go/patches/fix-ppc64le-startup-detection.patch diff --git a/srcpkgs/go/patches/fix-ppc64le-startup-detection.patch b/srcpkgs/go/patches/fix-ppc64le-startup-detection.patch deleted file mode 100644 index 6cc2ab337249..000000000000 --- a/srcpkgs/go/patches/fix-ppc64le-startup-detection.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 946167906ed8646c433c257b074a10e01f0a7dab Mon Sep 17 00:00:00 2001 -From: "Paul E. Murphy" -Date: Tue, 22 Mar 2022 11:52:02 -0500 -Subject: [PATCH] runtime: make static/dynamic startup detection work with musl - on ppc64le - -The glibc loader explicitly sets the first doubleword on the stack (R1) -to $0 to indicate it was dynamically loaded. - -An ELFv2 ABI compliant loader will set R3/R4 to argc/argv when starting -the process, and R13 to TLS. musl is not compliant. Instead it passes -argc/argv like the kernel, but R3/R4 are in an undefined state and R13 -is valid. - -With the knowledge above, the startup code can be modified to -dynamically handle all three cases when linked internally. - -Fixes #51787 - -Change-Id: I5de33862c161900d9161817388bbc13a65fdc69c -Reviewed-on: https://go-review.googlesource.com/c/go/+/394654 -Reviewed-by: Cherry Mui -Run-TryBot: Paul Murphy -TryBot-Result: Gopher Robot -Trust: Paul Murphy -Trust: Lynn Boger ---- - src/runtime/rt0_linux_ppc64le.s | 32 +++++++++++++++++++++----------- - 1 file changed, 21 insertions(+), 11 deletions(-) - -diff --git a/src/runtime/rt0_linux_ppc64le.s b/src/runtime/rt0_linux_ppc64le.s -index 4f7c6e6c99f6..66f7e7b22a41 100644 ---- a/go/src/runtime/rt0_linux_ppc64le.s -+++ b/go/src/runtime/rt0_linux_ppc64le.s -@@ -147,25 +147,35 @@ TEXT _main<>(SB),NOSPLIT,$-8 - // In a statically linked binary, the stack contains argc, - // argv as argc string pointers followed by a NULL, envv as a - // sequence of string pointers followed by a NULL, and auxv. -- // There is no TLS base pointer. -+ // The TLS pointer should be initialized to 0. - // -- // In a dynamically linked binary, r3 contains argc, r4 -- // contains argv, r5 contains envp, r6 contains auxv, and r13 -+ // In an ELFv2 compliant dynamically linked binary, R3 contains argc, -+ // R4 contains argv, R5 contains envp, R6 contains auxv, and R13 - // contains the TLS pointer. - // -- // Figure out which case this is by looking at r4: if it's 0, -- // we're statically linked; otherwise we're dynamically -- // linked. -- CMP R0, R4 -- BNE dlink -- -- // Statically linked -+ // When loading via glibc, the first doubleword on the stack points -+ // to NULL a value. (that is *(uintptr)(R1) == 0). This is used to -+ // differentiate static vs dynamicly linked binaries. -+ // -+ // If loading with the musl loader, it doesn't follow the ELFv2 ABI. It -+ // passes argc/argv similar to the linux kernel, R13 (TLS) is -+ // initialized, and R3/R4 are undefined. -+ MOVD (R1), R12 -+ CMP R0, R12 -+ BEQ tls_and_argcv_in_reg -+ -+ // Arguments are passed via the stack (musl loader or a static binary) - MOVD 0(R1), R3 // argc - ADD $8, R1, R4 // argv -+ -+ // Did the TLS pointer get set? If so, don't change it (e.g musl). -+ CMP R0, R13 -+ BNE tls_and_argcv_in_reg -+ - MOVD $runtimeĀ·m0+m_tls(SB), R13 // TLS - ADD $0x7000, R13 - --dlink: -+tls_and_argcv_in_reg: - BR main(SB) - - TEXT main(SB),NOSPLIT,$-8 diff --git a/srcpkgs/go/template b/srcpkgs/go/template index 58f0b0fc2485..44423832896f 100644 --- a/srcpkgs/go/template +++ b/srcpkgs/go/template @@ -1,6 +1,6 @@ # Template file for 'go' pkgname=go -version=1.18 +version=1.18.1 revision=1 create_wrksrc=yes build_wrksrc=go @@ -11,7 +11,7 @@ license="BSD-3-Clause" homepage="https://go.dev/" changelog="https://go.dev/doc/devel/release.html" distfiles="https://go.dev/dl/go${version}.src.tar.gz" -checksum=38f423db4cc834883f2b52344282fa7a39fbb93650dc62a11fdf0be6409bdad6 +checksum=efd43e0f1402e083b73a03d444b7b6576bb4c539ac46208b63a916b69aca4088 nostrip=yes noverifyrdeps=yes