Get --ftrace working on aarch64

This change implements a new approach to function call logging, that's
based on the GCC flag: -fpatchable-function-entry. Read the commentary
in build/config.mk to learn how it works.
This commit is contained in:
Justine Tunney 2023-06-05 23:35:31 -07:00
parent 5b908bc756
commit eb40cb371d
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
934 changed files with 2259 additions and 1268 deletions

View file

@ -67,43 +67,30 @@ ftrace_hook:
movaps 0x60(%rsp),%xmm6
movaps 0x70(%rsp),%xmm7
leave
ret
#elif defined(__aarch64__)
stp x0,x1,[sp,#-16]!
stp x2,x3,[sp,#-16]!
stp x4,x5,[sp,#-16]!
stp x6,x7,[sp,#-16]!
stp x8,x9,[sp,#-16]!
stp x10,x11,[sp,#-16]!
stp x12,x13,[sp,#-16]!
stp x14,x15,[sp,#-16]!
stp x16,x17,[sp,#-16]!
stp x18,x19,[sp,#-16]!
stp x20,x21,[sp,#-16]!
stp x22,x23,[sp,#-16]!
stp x24,x25,[sp,#-16]!
stp x26,x27,[sp,#-16]!
stp x28,x29,[sp,#-16]!
str x30,[sp,#-16]!
adrp x9,__ftrace
ldr w9,[x9,#:lo12:__ftrace]
cmp w9,1
bge 1f
ret
1: stp x29,x30,[sp,-96]!
mov x29,sp
stp x0,x1,[sp,16]
stp x2,x3,[sp,32]
stp x4,x5,[sp,48]
stp x6,x7,[sp,64]
str x8,[sp,80]
bl ftracer
ldr x30,[sp,#16]!
ldp x28,x29,[sp,#16]!
ldp x26,x27,[sp,#16]!
ldp x24,x25,[sp,#16]!
ldp x22,x23,[sp,#16]!
ldp x20,x21,[sp,#16]!
ldp x18,x19,[sp,#16]!
ldp x16,x17,[sp,#16]!
ldp x14,x15,[sp,#16]!
ldp x12,x13,[sp,#16]!
ldp x10,x11,[sp,#16]!
ldp x8,x9,[sp,#16]!
ldp x6,x7,[sp,#16]!
ldp x4,x5,[sp,#16]!
ldp x2,x3,[sp,#16]!
ldp x0,x1,[sp,#16]!
ldr x8,[sp,80]
ldp x6,x7,[sp,64]
ldp x4,x5,[sp,48]
ldp x2,x3,[sp,32]
ldp x0,x1,[sp,16]
ldp x29,x30,[sp],96
ret
#endif /* __x86_64__ */
ret
.endfn ftrace_hook,globl