================ @@ -181,8 +181,26 @@ void X86AsmPrinter::emitKCFITypeId(const MachineFunction &MF) { // Embed the type hash in the X86::MOV32ri instruction to avoid special // casing object file parsers. EmitKCFITypePadding(MF); + + Register MovReg = X86::EAX; + const auto &Triple = MF.getTarget().getTargetTriple(); + if (Triple.isArch64Bit() && Triple.isOSLinux()) { + // Determine the function's arity (i.e., the number of arguments) at the ABI + // level by counting the number of parameters that are passed + // as registers, such as pointers and 64-bit (or smaller) integers. The + // Linux x86-64 ABI allows up to 6 parameters to be passed in GPRs. + // Additional parameters or parameters larger than 64 bits may be passed on + // the stack, in which case the arity is denoted as 7. + const unsigned ArityToRegMap[8] = {X86::EAX, X86::ECX, X86::EDX, X86::EBX, + X86::ESP, X86::EBP, X86::ESI, X86::EDI}; ---------------- phoebewang wrote:
Astonished ESP can be used to pass the hash. https://github.com/llvm/llvm-project/pull/121070 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits