LLVM 8

Highlights
  • Initial support for Armv8.3-A Pointer Authentication in llvm, libunwind and DWARF.

LLVM 9

Highlights
  • lld: new flag: --pac-plt to support signed plts.
  • lld: emit DT_AARCH64_PAC_PLT dynamic tag.
  • lld: automatic generation of pac-plt (signed plt) if PAuth is enabled, mandates dynamic loader support.
  • llvm-readobj: .note.gnu.property section support
  • llvm-readobj:  DT_AARCH64_PAC_PLT dynamic tag support

LLVM 10

Highlights
  • lld: --pac-plt became -z pac-plt
  • lld: PT_GNU_PROPERTY support
  • lld: various fixes around .note.gnu.property section.
  • Emission of PAC flag into .note.gnu.property section.
  • Hint instructions are emitted into assembly for pre Armv8.3-A targets.
  • Outlined functions are return-address-signed.
  • Added support for __attribute__((target("branch-protection=..."))) function attribute

LLVM11

Highlights
  • clang: __ARM_FEATURE_PAC_DEFAULT is added
  • lld: pac-plt (signed plt) is only generated when -z pac-plt is set.

LLVM12 * (Planned)

Highlights
  • __builtin_return_address: XPACLRI (before Armv8.3-A) or XPACI (Armv8.3-A and later) strips the PAC bits from the address.
  • Functions generated internally by LLVM now respect compilation flags: PAuth instructions are inserted into them as well.
  • Bugfix: .note.gnu.property does not claim PAuth support if -mbranch-protection does not enable pac-ret.