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

David Spickett via lldb-commits lldb-commits at lists.llvm.org
Wed Mar 4 03:58:48 PST 2026


DavidSpickett wrote:

Something to do with us now missing out one of the kind entries in the 17 layers of macros we decided were a good idea to inflict upon ourselves.

Used to use this:
```
#define MISC_KIND(reg, type, generic_kind)                                     \
  {                                                                            \
    arm64_ehframe::reg, arm64_dwarf::reg, generic_kind, LLDB_INVALID_REGNUM,   \
        type##_##reg                                                           \
  }
```
But now we use `MISC_##TYPE##_KIND(lldb_kind)` aka `MISC_GPR_KIND(lldb_kind)` which does used to be `#define MISC_GPR_KIND(lldb_kind) MISC_KIND(cpsr, gpr, LLDB_REGNUM_GENERIC_FLAGS)`.
```
#define MISC_KIND(reg, type, generic_kind)                                     \
  {                                                                            \
    arm64_ehframe::reg, arm64_dwarf::reg, generic_kind, LLDB_INVALID_REGNUM,   \
        type##_##reg                                                           \
  }
```
Which set dwarf, eh, generic kind and this last `type_` thing, whatever that is.

Now we are using:
```
#define LLDB_KIND(lldb_kind)                                                   \
  {                                                                            \
    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,             \
        LLDB_INVALID_REGNUM, lldb_kind                                         \
  }
```
So the `generic` part is not being set.

Before:
```
    <reg name="cpsr" <...> group="General Purpose Registers" ehframe_regnum="33" dwarf_regnum="33" generic="flags" />
```

After:
```
    <reg name="cpsr" <...> group="General Purpose Registers" />
```

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


More information about the lldb-commits mailing list