[all-commits] [llvm/llvm-project] aa1d26: [CodeGen][RISCV] Change Shadow Call Stack Register...

Paul Kirth via All-commits all-commits at lists.llvm.org
Wed Apr 12 14:06:38 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: aa1d2693c25622ea4a8ee2b622ba2a617e18ef88
  Author: Paul Kirth <paulkirth at google.com>
  Date:   2023-04-12 (Wed, 12 Apr 2023)

  Changed paths:
    M clang/docs/ShadowCallStack.rst
    M clang/lib/Driver/SanitizerArgs.cpp
    M clang/test/Driver/sanitizer-ld.c
    M compiler-rt/test/shadowcallstack/lit.cfg.py
    M llvm/docs/ReleaseNotes.rst
    M llvm/include/llvm/TargetParser/RISCVTargetParser.h
    M llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.cpp
    M llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
    M llvm/lib/Target/RISCV/RISCVSubtarget.cpp
    M llvm/lib/TargetParser/RISCVTargetParser.cpp
    M llvm/test/CodeGen/RISCV/reserved-regs.ll
    A llvm/test/CodeGen/RISCV/saverestore-scs.ll
    M llvm/test/CodeGen/RISCV/shadowcallstack.ll

  Log Message:
  [CodeGen][RISCV] Change Shadow Call Stack Register to X3

ShadowCallStack implementation uses s2 register on RISC-V, but that
choice is problematic for reasons described in:

https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/370, and

The concern over the register choice was also brought up in

https://reviews.llvm.org/D84414#2228666 said:

  "If the register choice is the only concern about this work, then I think
  we can probably land it as-is and fixup the register choice if we see
  major drawbacks later. Yes, it's an ABI issue, but on the other hand the
  shadow call stack is not a standard ABI anyway.""

Since we have now found a sufficient reason to fixup the register
choice, we should go ahead and update the implementation. We propose
using x3(gp) which is now the platform register in the RISC-V ABI.

Reviewed By: asb, hiraditya, mcgrathr, craig.topper

Differential Revision: https://reviews.llvm.org/D146463

More information about the All-commits mailing list