File tree Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Original file line number Diff line number Diff line change @@ -20,10 +20,18 @@ _Py_trampoline_func_start:
2020#if defined(__aarch64__) && defined(__AARCH64EL__) && !defined(__ILP32__)
2121 // ARM64 little endian , 64bit ABI
2222 // generate with aarch64 - linux - gnu - gcc 12 . 1
23+ #if defined(__ARM_FEATURE_PAC_DEFAULT) && (__ARM_FEATURE_PAC_DEFAULT & 1 ) == 1 || \
24+ defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1
25+ hint 25
26+ #endif
2327 stp x29 , x30 , [ sp , - 16 ] !
2428 mov x29 , sp
2529 blr x3
2630 ldp x29 , x30 , [ sp ], 16
31+ #if defined(__ARM_FEATURE_PAC_DEFAULT) && (__ARM_FEATURE_PAC_DEFAULT & 1 ) == 1 || \
32+ defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1
33+ hint 29
34+ #endif
2735 ret
2836#endif
2937#ifdef __riscv
@@ -55,3 +63,22 @@ _Py_trampoline_func_end:
5563 . align 8
56644 :
5765#endif // __x86_64__
66+ #if defined(__aarch64__) && defined(__AARCH64EL__) && !defined(__ILP32__)
67+ #if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1 || \
68+ defined(__ARM_FEATURE_PAC_DEFAULT) && (__ARM_FEATURE_PAC_DEFAULT & 1 ) == 1
69+ .pushsection .note.gnu.property , "a"
70+ . align 3
71+ . word 2f - 1f
72+ . word 4f - 3f
73+ . word 5 / * NT_GNU_PROPERTY_TYPE_0 * /
74+ 1 : .asciz "GNU"
75+
76+ 2 : .align 3
77+ 3 : .word 0xc0000000 / * type: GNU_PROPERTY_AARCH64_FEATURE_1_AND * /
78+ . word 6f - 5f / * size * /
79+ 5 : .word 3 / * value: GNU_PROPERTY_AARCH64_FEATURE_1_BTI * /
80+
81+ 6 : .align 3
82+ 4 : .popsection
83+ #endif
84+ #endif
Original file line number Diff line number Diff line change @@ -483,6 +483,10 @@ elf_init_ehframe(ELFObjectContext* ctx)
483483 /* Extra registers saved for JIT-compiled code. */
484484#elif defined(__aarch64__ ) && defined(__AARCH64EL__ ) && !defined(__ILP32__ )
485485 DWRF_U8 (DWRF_CFA_advance_loc | 1 );
486+ #if defined(__ARM_FEATURE_PAC_DEFAULT ) && (__ARM_FEATURE_PAC_DEFAULT & 1 ) == 1 || \
487+ defined(__ARM_FEATURE_BTI_DEFAULT ) && __ARM_FEATURE_BTI_DEFAULT == 1
488+ DWRF_U8 (DWRF_CFA_advance_loc | 1 );
489+ #endif
486490 DWRF_U8 (DWRF_CFA_def_cfa_offset ); DWRF_UV (16 );
487491 DWRF_U8 (DWRF_CFA_offset | 29 ); DWRF_UV (2 );
488492 DWRF_U8 (DWRF_CFA_offset | 30 ); DWRF_UV (1 );
@@ -491,6 +495,10 @@ elf_init_ehframe(ELFObjectContext* ctx)
491495 DWRF_U8 (DWRF_CFA_offset | - (64 - 30 ));
492496 DWRF_U8 (DWRF_CFA_def_cfa_offset );
493497 DWRF_UV (0 );
498+ #if defined(__ARM_FEATURE_PAC_DEFAULT ) && (__ARM_FEATURE_PAC_DEFAULT & 1 ) == 1 || \
499+ defined(__ARM_FEATURE_BTI_DEFAULT ) && __ARM_FEATURE_BTI_DEFAULT == 1
500+ DWRF_U8 (DWRF_CFA_advance_loc | 1 );
501+ #endif
494502#else
495503# error "Unsupported target architecture"
496504#endif
You can’t perform that action at this time.
0 commit comments