ARMv8.3 的 PAC 特性

名词释义: PAC: Pointer Authentication Code PA: Pointer Authentication SCTLR: System ConTroL Register 该特性为指针值提供【签名】和【校验】的能力。ARM64 硬件上提供 5 个秘钥,分别用于为三种地址生成 PAC: 代码地址:API{A,B}Key 数据地址:APD{A,B}Key 通用地址:APGAKey PAC 的值是关于以下三者的函数:1、指针本身;2、上下文相关值(也称 Modifier)1;3、秘钥。 生成后,PAC 会被附在指针值上(即“签在上面”),其所处的位置和长度与当前处理器:1)设置的虚拟地址长度以及;2) …

Things That Happen Around Function Calls

Registers: call-clobbered v.s. call-preserved Call-clobbered registers a.k.a. caller-saved or volatile registers; “scratch register/temporary register” in AAPCS32, “scratch” registers in x86 Registers whose values would be changed (or “clobbered”) across a function call, and so the …