[Lldb-commits] [lldb] [lldb][AIX] Implement read/write handling for GPR and SPR registers (PR #193205)
Hemang Gadhavi via lldb-commits
lldb-commits at lists.llvm.org
Fri Apr 24 03:41:10 PDT 2026
================
@@ -279,13 +283,90 @@ llvm::Error NativeProcessAIX::Detach(lldb::tid_t tid) {
return PtraceWrapper(PT_DETACH, tid).takeError();
}
+template <typename GPR_T, typename PTSPRS_T>
+llvm::Expected<int> GetSPRs(int req, lldb::tid_t tid, GPR_T *gpr) {
+ PTSPRS_T sprs;
+
+ int ret = ptrace64(req, tid, (long long)&sprs, 0, 0);
+
+ if (ret != -1) {
+ gpr->cr = sprs.pt_cr;
+ gpr->msr = sprs.pt_msr;
+ gpr->xer = sprs.pt_xer;
+ gpr->lr = sprs.pt_lr;
+ gpr->ctr = sprs.pt_ctr;
+ gpr->pc = sprs.pt_iar;
+ }
+ return ret;
+}
+
+template <typename GPR_T, typename PTSPRS_T>
+llvm::Expected<int> SetSPRs(int req, lldb::tid_t tid, GPR_T *gpr) {
+ PTSPRS_T sprs;
+
+ sprs.pt_cr = gpr->cr;
+ sprs.pt_msr = gpr->msr;
+ sprs.pt_xer = gpr->xer;
+ sprs.pt_lr = gpr->lr;
+ sprs.pt_ctr = gpr->ctr;
+ sprs.pt_iar = gpr->pc;
+
+ return (ptrace64(req, tid, (long long)&sprs, 0, 0));
+}
+
llvm::Expected<int> NativeProcessAIX::PtraceWrapper(int req, lldb::pid_t pid,
void *addr, void *data,
size_t data_size) {
int ret;
-
Log *log = GetLog(POSIXLog::Ptrace);
+ // for PTT_*
+ const char procdir[] = "/proc/";
+ const char lwpdir[] = "/lwp/";
+ std::string process_task_dir = procdir + std::to_string(pid) + lwpdir;
+ DIR *dirproc = opendir(process_task_dir.c_str());
----------------
HemangGadhavi wrote:
Yes sounds good. updated the code with llvm style.
https://github.com/llvm/llvm-project/pull/193205
More information about the lldb-commits
mailing list