From f03c392295cfd57c29c92fcc300181f8016cf5ac Mon Sep 17 00:00:00 2001 From: qmuntal Date: Wed, 1 Oct 2025 10:59:53 +0200 Subject: [PATCH] runtime: fix aix/ppc64 library initialization AIX sets the argc and argv parameters in R14 and R15, but _rt0_ppc64x_lib expects them to be in R3 and R4. Also, call reginit in _rt0_ppc64x_lib. These issues were oversights from CL 706395 which went unnoticed because there if no LUCI aix/ppc64 builder (see #67299). Change-Id: I93a2798739935fbcead3e6162b4b90db7e740aa5 Reviewed-on: https://go-review.googlesource.com/c/go/+/708255 Reviewed-by: Carlos Amedee LUCI-TryBot-Result: Go LUCI Reviewed-by: Junyang Shao Reviewed-by: Paul Murphy --- src/runtime/asm_ppc64x.s | 3 +++ src/runtime/rt0_aix_ppc64.s | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/runtime/asm_ppc64x.s b/src/runtime/asm_ppc64x.s index 3fbf11b5e9..b42e0b62f8 100644 --- a/src/runtime/asm_ppc64x.s +++ b/src/runtime/asm_ppc64x.s @@ -21,6 +21,9 @@ TEXT _rt0_ppc64x_lib(SB),NOSPLIT|NOFRAME,$0 MOVD R4, _rt0_ppc64x_lib_argv<>(SB) // Synchronous initialization. + MOVD $runtime·reginit(SB), R12 + MOVD R12, CTR + BL (CTR) MOVD $runtime·libpreinit(SB), R12 MOVD R12, CTR BL (CTR) diff --git a/src/runtime/rt0_aix_ppc64.s b/src/runtime/rt0_aix_ppc64.s index 32f8c72156..518fcb3b88 100644 --- a/src/runtime/rt0_aix_ppc64.s +++ b/src/runtime/rt0_aix_ppc64.s @@ -42,4 +42,6 @@ TEXT _main(SB),NOSPLIT,$-8 BR (CTR) TEXT _rt0_ppc64_aix_lib(SB),NOSPLIT,$0 + MOVD R14, R3 // argc + MOVD R15, R4 // argv JMP _rt0_ppc64x_lib(SB) -- 2.52.0