aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python/asm_trampoline.S
diff options
context:
space:
mode:
Diffstat (limited to 'Python/asm_trampoline.S')
-rw-r--r--Python/asm_trampoline.S29
1 files changed, 26 insertions, 3 deletions
diff --git a/Python/asm_trampoline.S b/Python/asm_trampoline.S
index 0a3265dfeee..a14e68c0e81 100644
--- a/Python/asm_trampoline.S
+++ b/Python/asm_trampoline.S
@@ -9,9 +9,13 @@
# }
_Py_trampoline_func_start:
#ifdef __x86_64__
- sub $8, %rsp
- call *%rcx
- add $8, %rsp
+#if defined(__CET__) && (__CET__ & 1)
+ endbr64
+#endif
+ push %rbp
+ mov %rsp, %rbp
+ call *%rcx
+ pop %rbp
ret
#endif // __x86_64__
#if defined(__aarch64__) && defined(__AARCH64EL__) && !defined(__ILP32__)
@@ -34,3 +38,22 @@ _Py_trampoline_func_start:
.globl _Py_trampoline_func_end
_Py_trampoline_func_end:
.section .note.GNU-stack,"",@progbits
+# Note for indicating the assembly code supports CET
+#if defined(__x86_64__) && defined(__CET__) && (__CET__ & 1)
+ .section .note.gnu.property,"a"
+ .align 8
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ .string "GNU"
+1:
+ .align 8
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 0x3
+3:
+ .align 8
+4:
+#endif // __x86_64__