[PATCH v5 0/8] Implement assembly cortex-M PACBTI functionality
Victor Do Nascimento <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
Hi all, This respin of the patch series adds the final modifications required to patches in response to upstream comments and rebases work on the setjmp and longjmp routines onto the fixed arm abi. Tweaks necessary for correct cfi information generation made to: * newlib/libc/machine/arm/strcmp-armv7.S * newlib/libc/machine/arm/memchr.S Stray comment restored in: * newlib/libc/machine/arm/memcpy-armv7m.S Patch rebased, cleaned up and missing BTI landing pad added: * newlib/libc/machine/arm/setjmp.S All remaining patches in series remain as in previous iterations. Thanks, Victor ------ This patch series modifies hand-written assembly files for Arm targets, introducing a uniform prologue/epilogue interface, responsible for pushing/popping registers on function entry and exit, while conditionally enabling branch target identification as well as address return signature and verification based on Armv8.1-M Pointer Authentication [1] using ACLE feature test macros at compile-time [2]. The incorportaion of PACBTI functionality in function prologues/ epilogues is dictated by the combination of parameter macros in arm-asm.h and arguments passed to the `-mbranch-protection' flag at the time of Newlib compilation. Regression tested on arm-none-eabi with and without MVE extension and for Newlib and Newlib-nano. [1] <https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/armv8-1-m-pointer-authentication-and-branch-target-identification-extension> [2] <https://developer.arm.com/documentation/101028/0012/5--Feature-test-macros> Victor Do Nascimento (8): newlib: libc: define M-profile PACBTI-enablement macros newlib: libc: strcmp M-profile PACBTI-enablement newlib: libc: strlen M-profile PACBTI-enablement newlib: libc: memchr M-profile PACBTI-enablement newlib: libc: memcpy M-profile PACBTI-enablement newlib: libc: aeabi_memmove M-profile PACBTI-enablement newlib: libc: aeabi_memset M-profile PACBTI-enablement newlib: libc: setjmp M-profile PACBTI-enablement .../libc/machine/arm/aeabi_memmove-thumb2.S | 17 +- newlib/libc/machine/arm/aeabi_memset-thumb2.S | 14 +- newlib/libc/machine/arm/arm_asm.h | 441 ++++++++++++++++++ newlib/libc/machine/arm/memchr.S | 50 +- newlib/libc/machine/arm/memcpy-armv7m.S | 33 +- newlib/libc/machine/arm/setjmp.S | 39 ++ newlib/libc/machine/arm/strcmp-arm-tiny.S | 8 +- newlib/libc/machine/arm/strcmp-armv7.S | 57 ++- newlib/libc/machine/arm/strcmp-armv7m.S | 26 +- newlib/libc/machine/arm/strlen-armv7.S | 17 +- newlib/libc/machine/arm/strlen-thumb2-Os.S | 14 +- 11 files changed, 656 insertions(+), 60 deletions(-) -- 2.36.1