Move setjmp and sigsetjmp together
This fixes compilation of relibc on arm64. On arm64 the reference from sigsetjmp to setjmp has a limited range.
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
.global sigsetjmp
|
||||
.global __sigsetjmp
|
||||
.type sigsetjmp,%function
|
||||
.type __sigsetjmp,%function
|
||||
sigsetjmp:
|
||||
__sigsetjmp:
|
||||
cbz x1,setjmp
|
||||
|
||||
str x30,[x0,#176]
|
||||
str x19,[x0,#176+8+8]
|
||||
mov x19,x0
|
||||
|
||||
bl setjmp
|
||||
|
||||
mov w1,w0
|
||||
mov x0,x19
|
||||
ldr x30,[x0,#176]
|
||||
ldr x19,[x0,#176+8+8]
|
||||
|
||||
.hidden __sigsetjmp_tail
|
||||
b __sigsetjmp_tail
|
||||
@@ -0,0 +1,26 @@
|
||||
.global sigsetjmp
|
||||
.global __sigsetjmp
|
||||
.type sigsetjmp,@function
|
||||
.type __sigsetjmp,@function
|
||||
sigsetjmp:
|
||||
__sigsetjmp:
|
||||
mov ecx, dword ptr [esp + 8]
|
||||
jecxz 1f
|
||||
|
||||
mov eax, dword ptr [esp + 4]
|
||||
pop [eax + 24]
|
||||
mov dword ptr [eax * 8 + 28], ebx
|
||||
mov ebx, eax
|
||||
|
||||
.hidden ___setjmp
|
||||
call ___setjmp
|
||||
|
||||
push [ebx + 24]
|
||||
mov dword ptr [esp + 4], ebx
|
||||
mov dword ptr [esp + 4], eax
|
||||
mov ebx, dword ptr [ebx * 8 + 28]
|
||||
|
||||
.hidden __sigsetjmp_tail
|
||||
jmp __sigsetjmp_tail
|
||||
|
||||
1: jmp ___setjmp
|
||||
@@ -0,0 +1,23 @@
|
||||
.global sigsetjmp
|
||||
.global __sigsetjmp
|
||||
.type sigsetjmp, %function
|
||||
.type __sigsetjmp, %function
|
||||
sigsetjmp:
|
||||
__sigsetjmp:
|
||||
bnez a1, 1f
|
||||
tail setjmp
|
||||
1:
|
||||
|
||||
sd ra, 208(a0)
|
||||
sd s0, 224(a0)
|
||||
mv s0, a0
|
||||
|
||||
call setjmp
|
||||
|
||||
mv a1, a0
|
||||
mv a0, s0
|
||||
ld s0, 224(a0)
|
||||
ld ra, 208(a0)
|
||||
|
||||
.hidden __sigsetjmp_tail
|
||||
tail __sigsetjmp_tail
|
||||
@@ -0,0 +1,24 @@
|
||||
.global sigsetjmp
|
||||
.global __sigsetjmp
|
||||
.type sigsetjmp,@function
|
||||
.type __sigsetjmp,@function
|
||||
sigsetjmp:
|
||||
__sigsetjmp:
|
||||
test esi, esi
|
||||
jz 1f
|
||||
|
||||
pop [rdi + 64]
|
||||
mov qword ptr [rdi * 8 + 72], rbx
|
||||
mov rbx, rdi
|
||||
|
||||
call setjmp
|
||||
|
||||
push [rbx + 64]
|
||||
mov rdi, rbx
|
||||
mov esi, eax
|
||||
mov rbx, qword ptr [rbx * 8 + 72]
|
||||
|
||||
.hidden __sigsetjmp_tail
|
||||
jmp __sigsetjmp_tail
|
||||
|
||||
1: jmp setjmp
|
||||
Reference in New Issue
Block a user