cmd/link: add Cortex-A53 erratum 843419 workaround for arm64#78589
cmd/link: add Cortex-A53 erratum 843419 workaround for arm64#78589luizgre wants to merge 1 commit intogolang:masterfrom
Conversation
On Cortex-A53, an ADRP instruction at page offset 0xFF8 or 0xFFC followed by a specific load/store sequence may compute an incorrect address (ARM erratum 843419). The Go internal linker had no workaround for this, while GNU ld and LLVM lld fix it by default. During the trampoline pass, check ADRP relocations at dangerous page offsets against the erratum pattern (ported from lld's AArch64ErrataFix.cpp). When matched, redirect the ADRP+op pair through a veneer at a safe 16-byte aligned address. Fixes golang#78577
|
This PR (HEAD: 5ea7dc8) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/764141. Important tips:
|
|
Message from Gopher Robot: Patch Set 1: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/764141. |
|
Message from Gopher Robot: Patch Set 1: Congratulations on opening your first change. Thank you for your contribution! Next steps: Most changes in the Go project go through a few rounds of revision. This can be During May-July and Nov-Jan the Go project is in a code freeze, during which Please don’t reply on this GitHub thread. Visit golang.org/cl/764141. |
|
Message from Jorropo: Patch Set 1: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/764141. |
|
Message from Jorropo: Patch Set 1: Commit-Queue+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/764141. |
|
Message from Go LUCI: Patch Set 1: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2026-04-08T20:04:44Z","revision":"82149ecb26d609aa4a329847ed18cb19ee98153a"} Please don’t reply on this GitHub thread. Visit golang.org/cl/764141. |
|
Message from Jorropo: Patch Set 1: -Commit-Queue (Performed by <GERRIT_ACCOUNT_60063> on behalf of <GERRIT_ACCOUNT_55763>) Please don’t reply on this GitHub thread. Visit golang.org/cl/764141. |
|
Message from Go LUCI: Patch Set 1: This CL has failed the run. Reason: Tryjob golang/try/gotip-linux-amd64_avx512 has failed with summary (view all results):
To reproduce, try Additional links for debugging: Please don’t reply on this GitHub thread. Visit golang.org/cl/764141. |
|
Message from Go LUCI: Patch Set 1: LUCI-TryBot-Result-1 Please don’t reply on this GitHub thread. Visit golang.org/cl/764141. |
On Cortex-A53, an ADRP instruction at page offset 0xFF8 or 0xFFC followed by a specific load/store sequence may compute an incorrect address (ARM erratum 843419). The Go internal linker had no workaround for this, while GNU ld and LLVM lld fix it by default.
During the trampoline pass, check ADRP relocations at dangerous page offsets against the erratum pattern (ported from lld's AArch64ErrataFix.cpp). When matched, redirect the ADRP+op pair through a veneer at a safe 16-byte aligned address.
Fixes #78577