[PATCH v4 0/8] Implement assembly cortex-M PACBTI functionality

Victor L. Do Nascimento victor.donascimento@arm.com
Wed Oct 26 11:37:01 GMT 2022

Hi all,

This respin of the patch series builds upon the previously-proposed prologue/
epilogue interfaces, making them more flexible by the addition of novel
parameters controlling their behavior and adds important corrections as well
as simplifications to the employed CFI directives.



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.

[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: setjmp/longjmp M-profile PACBTI-enablement
  newlib: libc: aeabi_memmove M-profile PACBTI-enablement
  newlib: libc: aeabi_memset 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              |  42 +-
 newlib/libc/machine/arm/memcpy-armv7m.S       |  37 +-
 newlib/libc/machine/arm/setjmp.S              |  33 +-
 newlib/libc/machine/arm/strcmp-arm-tiny.S     |   8 +-
 newlib/libc/machine/arm/strcmp-armv7.S        |  44 +-
 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, 636 insertions(+), 57 deletions(-)


More information about the Newlib mailing list