mirror of
https://github.com/golang/go
synced 2024-11-26 08:07:57 -07:00
[dev.regabi] runtime: fix ABI targets in runtime.panic{Index,Slice} shims
Fix up the assembly shim routines runtime.panic{Index,Slice} and friends so that their tail calls target ABIInternal and not ABI0 functions. This is so as to ensure that these calls don't go through an ABI0->ABIInternal wrapper (which would throw off the machinery in the called routines designed to detect whether the violation happened in the runtime). Note that when the compiler starts emitting real register calls to these routines, we'll need to rewrite them to update the arg size and ensure that args are in the correct registers. For example, the current shim TEXT runtime·panicIndex<ABIInternal>(SB),NOSPLIT,$0-16 MOVQ AX, x+0(FP) MOVQ CX, y+8(FP) JMP runtime·goPanicIndex<ABIInternal>(SB) will need to change to TEXT runtime·panicIndex<ABIInternal>(SB),NOSPLIT,$0 // AX already set up properly MOVQ CX, BX // second argument expected in BX JMP runtime·goPanicIndex<ABIInternal>(SB) Change-Id: I48d1b5138fb4d229380ad12735cfaca5c50e6cc3 Reviewed-on: https://go-review.googlesource.com/c/go/+/278755 Reviewed-by: Cherry Zhang <cherryyz@google.com> Trust: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
94cfeca0a5
commit
306b2451c8
@ -1728,67 +1728,67 @@ TEXT runtime·debugCallPanicked(SB),NOSPLIT,$16-16
|
|||||||
TEXT runtime·panicIndex<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicIndex<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ AX, x+0(FP)
|
MOVQ AX, x+0(FP)
|
||||||
MOVQ CX, y+8(FP)
|
MOVQ CX, y+8(FP)
|
||||||
JMP runtime·goPanicIndex(SB)
|
JMP runtime·goPanicIndex<ABIInternal>(SB)
|
||||||
TEXT runtime·panicIndexU<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicIndexU<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ AX, x+0(FP)
|
MOVQ AX, x+0(FP)
|
||||||
MOVQ CX, y+8(FP)
|
MOVQ CX, y+8(FP)
|
||||||
JMP runtime·goPanicIndexU(SB)
|
JMP runtime·goPanicIndexU<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSliceAlen<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSliceAlen<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ CX, x+0(FP)
|
MOVQ CX, x+0(FP)
|
||||||
MOVQ DX, y+8(FP)
|
MOVQ DX, y+8(FP)
|
||||||
JMP runtime·goPanicSliceAlen(SB)
|
JMP runtime·goPanicSliceAlen<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSliceAlenU<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSliceAlenU<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ CX, x+0(FP)
|
MOVQ CX, x+0(FP)
|
||||||
MOVQ DX, y+8(FP)
|
MOVQ DX, y+8(FP)
|
||||||
JMP runtime·goPanicSliceAlenU(SB)
|
JMP runtime·goPanicSliceAlenU<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSliceAcap<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSliceAcap<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ CX, x+0(FP)
|
MOVQ CX, x+0(FP)
|
||||||
MOVQ DX, y+8(FP)
|
MOVQ DX, y+8(FP)
|
||||||
JMP runtime·goPanicSliceAcap(SB)
|
JMP runtime·goPanicSliceAcap<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSliceAcapU<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSliceAcapU<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ CX, x+0(FP)
|
MOVQ CX, x+0(FP)
|
||||||
MOVQ DX, y+8(FP)
|
MOVQ DX, y+8(FP)
|
||||||
JMP runtime·goPanicSliceAcapU(SB)
|
JMP runtime·goPanicSliceAcapU<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSliceB<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSliceB<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ AX, x+0(FP)
|
MOVQ AX, x+0(FP)
|
||||||
MOVQ CX, y+8(FP)
|
MOVQ CX, y+8(FP)
|
||||||
JMP runtime·goPanicSliceB(SB)
|
JMP runtime·goPanicSliceB<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSliceBU<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSliceBU<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ AX, x+0(FP)
|
MOVQ AX, x+0(FP)
|
||||||
MOVQ CX, y+8(FP)
|
MOVQ CX, y+8(FP)
|
||||||
JMP runtime·goPanicSliceBU(SB)
|
JMP runtime·goPanicSliceBU<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSlice3Alen<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSlice3Alen<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ DX, x+0(FP)
|
MOVQ DX, x+0(FP)
|
||||||
MOVQ BX, y+8(FP)
|
MOVQ BX, y+8(FP)
|
||||||
JMP runtime·goPanicSlice3Alen(SB)
|
JMP runtime·goPanicSlice3Alen<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSlice3AlenU<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSlice3AlenU<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ DX, x+0(FP)
|
MOVQ DX, x+0(FP)
|
||||||
MOVQ BX, y+8(FP)
|
MOVQ BX, y+8(FP)
|
||||||
JMP runtime·goPanicSlice3AlenU(SB)
|
JMP runtime·goPanicSlice3AlenU<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSlice3Acap<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSlice3Acap<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ DX, x+0(FP)
|
MOVQ DX, x+0(FP)
|
||||||
MOVQ BX, y+8(FP)
|
MOVQ BX, y+8(FP)
|
||||||
JMP runtime·goPanicSlice3Acap(SB)
|
JMP runtime·goPanicSlice3Acap<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSlice3AcapU<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSlice3AcapU<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ DX, x+0(FP)
|
MOVQ DX, x+0(FP)
|
||||||
MOVQ BX, y+8(FP)
|
MOVQ BX, y+8(FP)
|
||||||
JMP runtime·goPanicSlice3AcapU(SB)
|
JMP runtime·goPanicSlice3AcapU<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSlice3B<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSlice3B<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ CX, x+0(FP)
|
MOVQ CX, x+0(FP)
|
||||||
MOVQ DX, y+8(FP)
|
MOVQ DX, y+8(FP)
|
||||||
JMP runtime·goPanicSlice3B(SB)
|
JMP runtime·goPanicSlice3B<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSlice3BU<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSlice3BU<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ CX, x+0(FP)
|
MOVQ CX, x+0(FP)
|
||||||
MOVQ DX, y+8(FP)
|
MOVQ DX, y+8(FP)
|
||||||
JMP runtime·goPanicSlice3BU(SB)
|
JMP runtime·goPanicSlice3BU<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSlice3C<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSlice3C<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ AX, x+0(FP)
|
MOVQ AX, x+0(FP)
|
||||||
MOVQ CX, y+8(FP)
|
MOVQ CX, y+8(FP)
|
||||||
JMP runtime·goPanicSlice3C(SB)
|
JMP runtime·goPanicSlice3C<ABIInternal>(SB)
|
||||||
TEXT runtime·panicSlice3CU<ABIInternal>(SB),NOSPLIT,$0-16
|
TEXT runtime·panicSlice3CU<ABIInternal>(SB),NOSPLIT,$0-16
|
||||||
MOVQ AX, x+0(FP)
|
MOVQ AX, x+0(FP)
|
||||||
MOVQ CX, y+8(FP)
|
MOVQ CX, y+8(FP)
|
||||||
JMP runtime·goPanicSlice3CU(SB)
|
JMP runtime·goPanicSlice3CU<ABIInternal>(SB)
|
||||||
|
|
||||||
#ifdef GOOS_android
|
#ifdef GOOS_android
|
||||||
// Use the free TLS_SLOT_APP slot #2 on Android Q.
|
// Use the free TLS_SLOT_APP slot #2 on Android Q.
|
||||||
|
Loading…
Reference in New Issue
Block a user