C.SSPOPCHK 未启用相关 CFI 时会怎样?
Zicfiss 指令按官方 Zimop/Zcmop 兼容规则退化,不执行影子栈检查或更新。
C.SSPOPCHK 从 ssp 指向的影子栈读取返回地址并与 x1/x5 检查。
C.SSPOPCHK x5 (Zicfiss,依赖Zcmop)展开为 SSPOPCHK x5,用于 Zicfiss 后向 CFI。它从 ssp 指向的影子栈读取返回地址,与 x5 比较,不匹配时触发 software-check 异常。编码复用c.mop.5。仅当xSSE=1时生效;否则作为c.mop.5执行(无操作)。
C.SSPOPCHK 属于 RISC-V CFI 相关指令;其行为受 Zicfilp/Zicfiss 是否启用以及相关环境配置控制。
使用 jal ra, label 或 jalr ra, rs, imm。
结合 «c.sspopchk x5» 等实际代码理解该场景。
结合 «c.sspopchk x5» 等实际代码理解该场景。
Zicfiss 指令按官方 Zimop/Zcmop 兼容规则退化,不执行影子栈检查或更新。
RISC-V 非特权 ISA 的 Control-flow Integrity 章节定义 LPAD、SSPUSH、SSPOPCHK、SSRDP 和 SSAMOSWAP。