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

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_AddIPAddress,AddIPAddress,0
.text.windows
.ftrace1
AddIPAddress:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_AddIPAddress(%rip),%rax
jmp __sysv2nt6
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_AllocateAndGetTcpExTableFromStack,AllocateAndGetTcpExTableFromStack,0
.text.windows
.ftrace1
AllocateAndGetTcpExTableFromStack:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_AllocateAndGetTcpExTableFromStack(%rip),%rax
jmp __sysv2nt6
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_AllocateAndGetUdpExTableFromStack,AllocateAndGetUdpExTableFromStack,0
.text.windows
.ftrace1
AllocateAndGetUdpExTableFromStack:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_AllocateAndGetUdpExTableFromStack(%rip),%rax
jmp __sysv2nt6
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_CancelIPChangeNotify,CancelIPChangeNotify,0
.text.windows
.ftrace1
CancelIPChangeNotify:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov %rdi,%rcx
sub $32,%rsp
call *__imp_CancelIPChangeNotify(%rip)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_CaptureInterfaceHardwareCrossTimestamp,CaptureInterfaceHardwareCrossTimestamp,0
.text.windows
.ftrace1
CaptureInterfaceHardwareCrossTimestamp:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_CaptureInterfaceHardwareCrossTimestamp(%rip),%rax
jmp __sysv2nt
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_CreateIpForwardEntry,CreateIpForwardEntry,0
.text.windows
.ftrace1
CreateIpForwardEntry:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov %rdi,%rcx
sub $32,%rsp
call *__imp_CreateIpForwardEntry(%rip)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_FlushIpNetTable,FlushIpNetTable,0
.text.windows
.ftrace1
FlushIpNetTable:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov %rdi,%rcx
sub $32,%rsp
call *__imp_FlushIpNetTable(%rip)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_GetAdapterIndex,GetAdapterIndex,0
.text.windows
.ftrace1
GetAdapterIndex:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_GetAdapterIndex(%rip),%rax
jmp __sysv2nt
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_GetAdapterOrderMap,GetAdapterOrderMap,0
.text.windows
.ftrace1
GetAdapterOrderMap:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
sub $32,%rsp
call *__imp_GetAdapterOrderMap(%rip)
leave

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_GetAdaptersAddresses,GetAdaptersAddresses,67
.text.windows
.ftrace1
GetAdaptersAddresses:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_GetAdaptersAddresses(%rip),%rax
jmp __sysv2nt6
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_GetAdaptersInfo,GetAdaptersInfo,0
.text.windows
.ftrace1
GetAdaptersInfo:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_GetAdaptersInfo(%rip),%rax
jmp __sysv2nt
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_GetBestInterface,GetBestInterface,0
.text.windows
.ftrace1
GetBestInterface:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_GetBestInterface(%rip),%rax
jmp __sysv2nt
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_GetBestInterfaceEx,GetBestInterfaceEx,0
.text.windows
.ftrace1
GetBestInterfaceEx:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_GetBestInterfaceEx(%rip),%rax
jmp __sysv2nt
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_GetBestRoute,GetBestRoute,0
.text.windows
.ftrace1
GetBestRoute:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_GetBestRoute(%rip),%rax
jmp __sysv2nt
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_GetNumberOfInterfaces,GetNumberOfInterfaces,0
.text.windows
.ftrace1
GetNumberOfInterfaces:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov %rdi,%rcx
sub $32,%rsp
call *__imp_GetNumberOfInterfaces(%rip)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_GetTcpTable,GetTcpTable,0
.text.windows
.ftrace1
GetTcpTable:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_GetTcpTable(%rip),%rax
jmp __sysv2nt
#elif defined(__aarch64__)

View file

@ -2,11 +2,12 @@
.imp iphlpapi,__imp_GetTcpTable2,GetTcpTable2,0
.text.windows
.ftrace1
GetTcpTable2:
.ftrace2
#ifdef __x86_64__
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_GetTcpTable2(%rip),%rax
jmp __sysv2nt
#elif defined(__aarch64__)