[Lldb-commits] [lldb] [lldb][Windows] Fix "Invalid register name" for eax on x86_64 attach (PR #203498)
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Tue Jun 23 16:58:33 PDT 2026
jasonmolenda wrote:
I'm still a little confused by why this is needed. `BuildDynamicRegisterInfo` should call qProcessInfo itself; I think you're working around some bug in the way `BuildDynamicRegisterInfo` determines the arch by moving it to the end of this method. I'm sure it works, but I'm genuinely curious why this block in `BuildDynamicRegisterInfo,`
```
471 const ArchSpec &target_arch = GetTarget().GetArchitecture();
472 const ArchSpec &remote_host_arch = m_gdb_comm.GetHostArchitecture();
473 const ArchSpec &remote_process_arch = m_gdb_comm.GetProcessArchitecture();
474
475 // Use the process' architecture instead of the host arch, if available
476 ArchSpec arch_to_use;
477 if (remote_process_arch.IsValid())
478 arch_to_use = remote_process_arch;
479 else
480 arch_to_use = remote_host_arch;
481
482 if (!arch_to_use.IsValid())
483 arch_to_use = target_arch;
484
485 llvm::Error register_info_err = GetGDBServerRegisterInfo(arch_to_use);
```
doesn't work. On my macOS system, `m_gdb_comm.GetProcessArchitecture()` issues a `qProcessInfo` and gets a correct ArchSpec from that. That must be failing on the Windows system, and we fall back to using the ArchSpec from `qHostInfo` (`m_gdb_comm.GetHostArchitecture()`) which is also incorrect? And we don't have a Target arch yet, which is fine, we haven't loaded a binary yet.
https://github.com/llvm/llvm-project/pull/203498
More information about the lldb-commits
mailing list