mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-23 15:32:25 +00:00
ldso: save floating point arguments on arm_v8a (GCC 12)
Apparently we need to save the floating point arguments when entering the linker in case "-fno-tree-vectorize" is at work. Otherwise this registers get corrupted during jump slot relocation. Fixes #4879
This commit is contained in:
parent
a12fcfea0d
commit
e64f2eaff9
@ -35,6 +35,12 @@ _jmp_slot:
|
|||||||
stp x6, x7, [sp, #-16]!
|
stp x6, x7, [sp, #-16]!
|
||||||
stp x8, xzr, [sp, #-16]!
|
stp x8, xzr, [sp, #-16]!
|
||||||
|
|
||||||
|
/* save floating-point arguments */
|
||||||
|
stp q0, q1, [sp, #-32]!
|
||||||
|
stp q2, q3, [sp, #-32]!
|
||||||
|
stp q4, q5, [sp, #-32]!
|
||||||
|
stp q6, q7, [sp, #-32]!
|
||||||
|
|
||||||
/* GOT[1] = Dependency */
|
/* GOT[1] = Dependency */
|
||||||
ldr x0, [x16, #-8] /* arg 0 */
|
ldr x0, [x16, #-8] /* arg 0 */
|
||||||
|
|
||||||
@ -52,6 +58,10 @@ _jmp_slot:
|
|||||||
mov x17, x0
|
mov x17, x0
|
||||||
|
|
||||||
/* restore arguments */
|
/* restore arguments */
|
||||||
|
ldp q6, q7, [sp], #32
|
||||||
|
ldp q4, q5, [sp], #32
|
||||||
|
ldp q2, q3, [sp], #32
|
||||||
|
ldp q0, q1, [sp], #32
|
||||||
ldp x8, xzr, [sp], #16
|
ldp x8, xzr, [sp], #16
|
||||||
ldp x6, x7, [sp], #16
|
ldp x6, x7, [sp], #16
|
||||||
ldp x4, x5, [sp], #16
|
ldp x4, x5, [sp], #16
|
||||||
|
Loading…
Reference in New Issue
Block a user