[PATCH] D145205: [codegen][riscv] Emit CFI directives when using shadow call stack
    Jessica Clarke via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Wed Mar  8 14:30:37 PST 2023
    
    
  
jrtc27 added inline comments.
================
Comment at: llvm/lib/Target/RISCV/RISCVFrameLowering.cpp:86
+      dwarf::DW_CFA_val_expression,
+      18, // register
+      2,  // length
----------------
getDwarfRegNum with SCSPReg
================
Comment at: llvm/lib/Target/RISCV/RISCVFrameLowering.cpp:87
+      18, // register
+      2,  // length
+      static_cast<char>(unsigned(dwarf::DW_OP_breg18)),
----------------
Similarly don't hard-code (up to you whether you unconditionally use bregx or branch on whether reg num is < 32)
================
Comment at: llvm/lib/Target/RISCV/RISCVFrameLowering.cpp:89
+      static_cast<char>(unsigned(dwarf::DW_OP_breg18)),
+      static_cast<char>(-SlotSize & 0x7f), // addend (sleb128)
+  };
----------------
AArch64 does the cast before the mask, should be consistent
================
Comment at: llvm/lib/Target/RISCV/RISCVFrameLowering.cpp:149
+  unsigned CFIIndex =
+      MF.addFrameInst(MCCFIInstruction::createRestore(nullptr, 18));
+  BuildMI(MBB, MI, DL, TII->get(TargetOpcode::CFI_INSTRUCTION))
----------------
Also don't hard-code
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145205/new/
https://reviews.llvm.org/D145205
    
    
More information about the llvm-commits
mailing list