[Lldb-commits] [lldb] [lldb] AArch64 register 33 is not cpsr (PR #183860)

Jason Molenda via lldb-commits lldb-commits at lists.llvm.org
Mon Mar 2 09:58:45 PST 2026


================
@@ -71,8 +71,6 @@ std::pair<uint32_t, uint32_t>
 ABIAArch64::GetEHAndDWARFNums(llvm::StringRef name) {
   if (name == "pc")
     return {arm64_ehframe::pc, arm64_dwarf::pc};
-  if (name == "cpsr")
-    return {arm64_ehframe::cpsr, arm64_dwarf::cpsr};
----------------
jasonmolenda wrote:

regard eh_frame v. dwarf numbering, the distinction in lldb is entirely because of a bug in the i386 gcc on Darwin a couple of decades ago, where the rsp/rbp were flipped in eh_frame or dwarf, I forget.  Binaries shipped like that, so it became ABI on Darwin.

DWARF expressions/locations can't refer to cpsr, or fpsr.  If there was a need for an expression to refer to status registers, the ABI document for DWARF on AArch64 would need to define which numbers are used for those registers.  It's undefined because no one has ever needed them or seen an expression that would need them.

https://github.com/llvm/llvm-project/pull/183860


More information about the lldb-commits mailing list