https://github.com/DavidSpickett updated https://github.com/llvm/llvm-project/pull/213977
>From 85887245f60879e9ef86957f7e7a494ca43ec606 Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 14:49:38 +0000 Subject: [PATCH 01/12] [lldb][AArch64][Linux] Add function to get register buffers Replaces Get<set>Buffer methods. --- .../NativeRegisterContextLinux_arm64.cpp | 32 +++++++++++++++++++ .../Linux/NativeRegisterContextLinux_arm64.h | 2 ++ 2 files changed, 34 insertions(+) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index 99b93ed82f5e6..736f87da7e442 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -157,6 +157,38 @@ size_t NativeRegisterContextLinux_arm64::GetSetSize( } } +void *NativeRegisterContextLinux_arm64::GetSetBuffer( + NativeRegisterContextLinux_arm64::RegisterSetType set) { + switch (set) { + case RegisterSetType::GPR: + return &m_gpr_arm64; + case RegisterSetType::FPR: + return &m_fpr; + case RegisterSetType::SVE: + return m_sve_ptrace_payload.data(); + case RegisterSetType::SVE_HEADER: + return &m_sve_header; + case RegisterSetType::PAC: + return &m_pac_mask; + case RegisterSetType::MTE: + return &m_mte_ctrl_reg; + case RegisterSetType::TLS: + return &m_tls_regs; + case RegisterSetType::ZA: + return m_za_ptrace_payload.data(); + case RegisterSetType::ZA_HEADER: + return &m_za_header; + case RegisterSetType::ZT: + return m_zt_reg.data(); + case RegisterSetType::FPMR: + return &m_fpmr_reg; + case RegisterSetType::GCS: + return &m_gcs_regs; + case RegisterSetType::POE: + return &m_poe_regs; + } +} + // A NativeRegisterContext is constructed per thread, but all threads' registers // will contain the same fields. Therefore this mutex prevents each instance // competing with the other, and subsequent instances from having to detect the diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index f9e7de073da6d..51e7a8a380d72 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -122,6 +122,8 @@ class NativeRegisterContextLinux_arm64 size_t GetSetSize(RegisterSetType set) const; + void *GetSetBuffer(RegisterSetType set); + void MakeValid(RegisterSetType set) { m_validity |= set; } [[nodiscard]] bool IsValid(RegisterSetType set) const { >From fb4b5b2d34bb89c9f4987e3972633ffb67d6fd22 Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 14:53:21 +0000 Subject: [PATCH 02/12] convert ZA --- .../NativeRegisterContextLinux_arm64.cpp | 23 +++++++++++-------- .../Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index 736f87da7e442..bd4476f62a933 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -549,7 +549,8 @@ NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, // ZA is part of the SME set but uses a separate member buffer for // storage. Therefore its effective byte offset is always 0 even if it // isn't 0 within the SME register set. - src = (uint8_t *)GetZABuffer() + GetSetSize(RegisterSetType::ZA_HEADER); + src = (uint8_t *)GetSetBuffer(RegisterSetType::ZA) + + GetSetSize(RegisterSetType::ZA_HEADER); } else if (GetRegisterInfo().IsSMERegZT(reg)) { // Unlike ZA, the kernel will return register data for ZT0 when ZA is not // enabled. This data will be all 0s so we don't have to invent anything @@ -834,7 +835,8 @@ Status NativeRegisterContextLinux_arm64::WriteRegister( // ZA is part of the SME set but not stored with the other SME registers. // So its byte offset is effectively always 0. - dst = (uint8_t *)GetZABuffer() + GetSetSize(RegisterSetType::ZA_HEADER); + dst = (uint8_t *)GetSetBuffer(RegisterSetType::ZA) + + GetSetSize(RegisterSetType::ZA_HEADER); ::memcpy(dst, reg_value.GetBytes(), reg_info->byte_size); // While this is writing a header that contains a vector length, the only @@ -1057,8 +1059,9 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues( // Use the header size not the buffer size, as we may be using the buffer // for fake data, which we do not want to write out. assert(m_za_header.size <= GetSetSize(RegisterSetType::ZA)); - dst = AddSavedRegisters(dst, RegisterSetType::ZA, GetZABuffer(), - m_za_header.size); + dst = + AddSavedRegisters(dst, RegisterSetType::ZA, + GetSetBuffer(RegisterSetType::ZA), m_za_header.size); } if ((GetRegisterInfo().IsSVEPresent() || GetRegisterInfo().IsSSVEPresent()) && @@ -1075,8 +1078,9 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues( if ((m_sve_state == SVEState::Streaming) && GetRegisterInfo().IsZAPresent()) { assert(m_za_header.size <= GetSetSize(RegisterSetType::ZA)); - dst = AddSavedRegisters(dst, RegisterSetType::ZA, GetZABuffer(), - m_za_header.size); + dst = + AddSavedRegisters(dst, RegisterSetType::ZA, + GetSetBuffer(RegisterSetType::ZA), m_za_header.size); } // If ZT0 is present and we are going to be restoring an active ZA (which @@ -1297,7 +1301,8 @@ Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( // may be incorrect due to being filled with dummy data previously. Resize // this so WriteZA uses the correct size. m_za_ptrace_payload.resize(m_za_header.size); - ::memcpy(GetZABuffer(), src, GetSetSize(RegisterSetType::ZA)); + ::memcpy(GetSetBuffer(RegisterSetType::ZA), src, + GetSetSize(RegisterSetType::ZA)); MakeValid(RegisterSetType::ZA); error = WriteZA(); @@ -1714,7 +1719,7 @@ Status NativeRegisterContextLinux_arm64::ReadZA() { return error; struct iovec ioVec; - ioVec.iov_base = GetZABuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::ZA); ioVec.iov_len = GetSetSize(RegisterSetType::ZA); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::ZA), @@ -1737,7 +1742,7 @@ Status NativeRegisterContextLinux_arm64::WriteZA() { return error; struct iovec ioVec; - ioVec.iov_base = GetZABuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::ZA); ioVec.iov_len = GetSetSize(RegisterSetType::ZA); Invalidate(RegisterSetType::ZA); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index 51e7a8a380d72..435736674bf63 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -274,8 +274,6 @@ class NativeRegisterContextLinux_arm64 void *GetPOEBuffer() { return &m_poe_regs; } - void *GetZABuffer() { return m_za_ptrace_payload.data(); }; - size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } llvm::Error ReadHardwareDebugInfo() override; >From 34bc86618643a1121455947d686e64f8b77ba304 Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 14:53:58 +0000 Subject: [PATCH 03/12] convert POE --- .../Linux/NativeRegisterContextLinux_arm64.cpp | 14 ++++++++------ .../Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index bd4476f62a933..d8108569775e7 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -595,7 +595,7 @@ NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, offset = reg_info->byte_offset - GetRegisterInfo().GetPOEOffset(); assert(offset < GetSetSize(RegisterSetType::POE)); - src = (uint8_t *)GetPOEBuffer() + offset; + src = (uint8_t *)GetSetBuffer(RegisterSetType::POE) + offset; } else return Status::FromErrorString( "failed - register wasn't recognized to be a GPR or an FPR, " @@ -884,7 +884,7 @@ Status NativeRegisterContextLinux_arm64::WriteRegister( offset = reg_info->byte_offset - GetRegisterInfo().GetPOEOffset(); assert(offset < GetSetSize(RegisterSetType::POE)); - dst = (uint8_t *)GetPOEBuffer() + offset; + dst = (uint8_t *)GetSetBuffer(RegisterSetType::POE) + offset; ::memcpy(dst, reg_value.GetBytes(), reg_info->byte_size); return WritePOE(); @@ -1112,7 +1112,8 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues( } if (GetRegisterInfo().IsPOEPresent()) { - dst = AddSavedRegisters(dst, RegisterSetType::POE, GetPOEBuffer(), + dst = AddSavedRegisters(dst, RegisterSetType::POE, + GetSetBuffer(RegisterSetType::POE), GetSetSize(RegisterSetType::POE)); } @@ -1358,7 +1359,8 @@ Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( } case RegisterSetType::POE: error = RestoreRegisters( - GetPOEBuffer(), &src, GetSetSize(RegisterSetType::POE), kind, + GetSetBuffer(RegisterSetType::POE), &src, + GetSetSize(RegisterSetType::POE), kind, std::bind(&NativeRegisterContextLinux_arm64::WritePOE, this)); break; case RegisterSetType::PAC: @@ -1829,7 +1831,7 @@ Status NativeRegisterContextLinux_arm64::ReadPOE() { return error; struct iovec ioVec; - ioVec.iov_base = GetPOEBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::POE); ioVec.iov_len = GetSetSize(RegisterSetType::POE); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::POE), @@ -1849,7 +1851,7 @@ Status NativeRegisterContextLinux_arm64::WritePOE() { return error; struct iovec ioVec; - ioVec.iov_base = GetPOEBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::POE); ioVec.iov_len = GetSetSize(RegisterSetType::POE); Invalidate(RegisterSetType::POE); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index 435736674bf63..ade208696d585 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -272,8 +272,6 @@ class NativeRegisterContextLinux_arm64 void *GetGCSBuffer() { return &m_gcs_regs; } - void *GetPOEBuffer() { return &m_poe_regs; } - size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } llvm::Error ReadHardwareDebugInfo() override; >From 6193bbcd0313538c7e77e1aa4e2c58e4151521fa Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 14:55:08 +0000 Subject: [PATCH 04/12] convert GCS --- .../Linux/NativeRegisterContextLinux_arm64.cpp | 14 ++++++++------ .../Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index d8108569775e7..f4a79e4d37115 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -587,7 +587,7 @@ NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, offset = reg_info->byte_offset - GetRegisterInfo().GetGCSOffset(); assert(offset < GetSetSize(RegisterSetType::GCS)); - src = (uint8_t *)GetGCSBuffer() + offset; + src = (uint8_t *)GetSetBuffer(RegisterSetType::GCS) + offset; } else if (GetRegisterInfo().IsPOEReg(reg)) { error = ReadPOE(); if (error.Fail()) @@ -873,7 +873,7 @@ Status NativeRegisterContextLinux_arm64::WriteRegister( offset = reg_info->byte_offset - GetRegisterInfo().GetGCSOffset(); assert(offset < GetSetSize(RegisterSetType::GCS)); - dst = (uint8_t *)GetGCSBuffer() + offset; + dst = (uint8_t *)GetSetBuffer(RegisterSetType::GCS) + offset; ::memcpy(dst, reg_value.GetBytes(), reg_info->byte_size); return WriteGCS(); @@ -1107,7 +1107,8 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues( } if (GetRegisterInfo().IsGCSPresent()) { - dst = AddSavedRegisters(dst, RegisterSetType::GCS, GetGCSBuffer(), + dst = AddSavedRegisters(dst, RegisterSetType::GCS, + GetSetBuffer(RegisterSetType::GCS), GetSetSize(RegisterSetType::GCS)); } @@ -1351,7 +1352,8 @@ Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( const uint8_t *new_gcs_src = reinterpret_cast<const uint8_t *>(&new_gcs_regs); error = RestoreRegisters( - GetGCSBuffer(), &new_gcs_src, GetSetSize(RegisterSetType::GCS), kind, + GetSetBuffer(RegisterSetType::GCS), &new_gcs_src, + GetSetSize(RegisterSetType::GCS), kind, std::bind(&NativeRegisterContextLinux_arm64::WriteGCS, this)); src += GetSetSize(RegisterSetType::GCS); @@ -1666,7 +1668,7 @@ Status NativeRegisterContextLinux_arm64::ReadGCS() { return error; struct iovec ioVec; - ioVec.iov_base = GetGCSBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::GCS); ioVec.iov_len = GetSetSize(RegisterSetType::GCS); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::GCS), @@ -1686,7 +1688,7 @@ Status NativeRegisterContextLinux_arm64::WriteGCS() { return error; struct iovec ioVec; - ioVec.iov_base = GetGCSBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::GCS); ioVec.iov_len = GetSetSize(RegisterSetType::GCS); Invalidate(RegisterSetType::GCS); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index ade208696d585..4d8dbe39465d4 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -270,8 +270,6 @@ class NativeRegisterContextLinux_arm64 void *GetFPMRBuffer() { return &m_fpmr_reg; } - void *GetGCSBuffer() { return &m_gcs_regs; } - size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } llvm::Error ReadHardwareDebugInfo() override; >From f90b335f324e3af0ba7a550c9c43e1153f94e641 Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 14:55:54 +0000 Subject: [PATCH 05/12] convert fpmr --- .../Linux/NativeRegisterContextLinux_arm64.cpp | 14 ++++++++------ .../Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index f4a79e4d37115..b937f271e8c8e 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -579,7 +579,7 @@ NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, offset = reg_info->byte_offset - GetRegisterInfo().GetFPMROffset(); assert(offset < GetSetSize(RegisterSetType::FPMR)); - src = (uint8_t *)GetFPMRBuffer() + offset; + src = (uint8_t *)GetSetBuffer(RegisterSetType::FPMR) + offset; } else if (GetRegisterInfo().IsGCSReg(reg)) { error = ReadGCS(); if (error.Fail()) @@ -862,7 +862,7 @@ Status NativeRegisterContextLinux_arm64::WriteRegister( offset = reg_info->byte_offset - GetRegisterInfo().GetFPMROffset(); assert(offset < GetSetSize(RegisterSetType::FPMR)); - dst = (uint8_t *)GetFPMRBuffer() + offset; + dst = (uint8_t *)GetSetBuffer(RegisterSetType::FPMR) + offset; ::memcpy(dst, reg_value.GetBytes(), reg_info->byte_size); return WriteFPMR(); @@ -1102,7 +1102,8 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues( } if (GetRegisterInfo().IsFPMRPresent()) { - dst = AddSavedRegisters(dst, RegisterSetType::FPMR, GetFPMRBuffer(), + dst = AddSavedRegisters(dst, RegisterSetType::FPMR, + GetSetBuffer(RegisterSetType::FPMR), GetSetSize(RegisterSetType::FPMR)); } @@ -1330,7 +1331,8 @@ Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( break; case RegisterSetType::FPMR: error = RestoreRegisters( - GetFPMRBuffer(), &src, GetSetSize(RegisterSetType::FPMR), kind, + GetSetBuffer(RegisterSetType::FPMR), &src, + GetSetSize(RegisterSetType::FPMR), kind, std::bind(&NativeRegisterContextLinux_arm64::WriteFPMR, this)); break; case RegisterSetType::GCS: { @@ -1797,7 +1799,7 @@ Status NativeRegisterContextLinux_arm64::ReadFPMR() { return error; struct iovec ioVec; - ioVec.iov_base = GetFPMRBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::FPMR); ioVec.iov_len = GetSetSize(RegisterSetType::FPMR); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::FPMR), @@ -1817,7 +1819,7 @@ Status NativeRegisterContextLinux_arm64::WriteFPMR() { return error; struct iovec ioVec; - ioVec.iov_base = GetFPMRBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::FPMR); ioVec.iov_len = GetSetSize(RegisterSetType::FPMR); Invalidate(RegisterSetType::FPMR); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index 4d8dbe39465d4..ed062a5e7c0ae 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -268,8 +268,6 @@ class NativeRegisterContextLinux_arm64 void *GetSVEBuffer() { return m_sve_ptrace_payload.data(); } - void *GetFPMRBuffer() { return &m_fpmr_reg; } - size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } llvm::Error ReadHardwareDebugInfo() override; >From d064f5e2202670569271c6edc7d8a0be48615c9c Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 14:57:28 +0000 Subject: [PATCH 06/12] convert SVE --- .../NativeRegisterContextLinux_arm64.cpp | 23 ++++++++++--------- .../Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index b937f271e8c8e..d77434bde6885 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -420,7 +420,7 @@ NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, } assert(offset < GetSetSize(RegisterSetType::SVE)); - src = (uint8_t *)GetSVEBuffer() + offset; + src = (uint8_t *)GetSetBuffer(RegisterSetType::SVE) + offset; } } else if (GetRegisterInfo().IsTLSReg(reg)) { error = ReadTLS(); @@ -499,13 +499,13 @@ NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, if (GetRegisterInfo().IsSVEZReg(reg)) { offset = CalculateSVEOffset(reg_info); assert(offset < GetSetSize(RegisterSetType::SVE)); - ::memcpy(sve_reg_non_live.data(), (uint8_t *)GetSVEBuffer() + offset, - 16); + ::memcpy(sve_reg_non_live.data(), + (uint8_t *)GetSetBuffer(RegisterSetType::SVE) + offset, 16); } } else { offset = CalculateSVEOffset(reg_info); assert(offset < GetSetSize(RegisterSetType::SVE)); - src = (uint8_t *)GetSVEBuffer() + offset; + src = (uint8_t *)GetSetBuffer(RegisterSetType::SVE) + offset; } } } else if (GetRegisterInfo().IsPAuthReg(reg)) { @@ -684,7 +684,7 @@ Status NativeRegisterContextLinux_arm64::WriteRegister( } assert(offset < GetSetSize(RegisterSetType::SVE)); - dst = (uint8_t *)GetSVEBuffer() + offset; + dst = (uint8_t *)GetSetBuffer(RegisterSetType::SVE) + offset; ::memcpy(dst, reg_value.GetBytes(), reg_info->byte_size); return WriteAllSVE(); } @@ -790,7 +790,7 @@ Status NativeRegisterContextLinux_arm64::WriteRegister( // first 16 bytes only as SVE payload mirrors legacy fpsimd structure offset = CalculateSVEOffset(reg_info); assert(offset < GetSetSize(RegisterSetType::SVE)); - dst = (uint8_t *)GetSVEBuffer() + offset; + dst = (uint8_t *)GetSetBuffer(RegisterSetType::SVE) + offset; ::memcpy(dst, reg_value.GetBytes(), 16); return WriteAllSVE(); @@ -800,7 +800,7 @@ Status NativeRegisterContextLinux_arm64::WriteRegister( } else { offset = CalculateSVEOffset(reg_info); assert(offset < GetSetSize(RegisterSetType::SVE)); - dst = (uint8_t *)GetSVEBuffer() + offset; + dst = (uint8_t *)GetSetBuffer(RegisterSetType::SVE) + offset; ::memcpy(dst, reg_value.GetBytes(), reg_info->byte_size); return WriteAllSVE(); } @@ -1069,7 +1069,7 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues( dst = AddRegisterSetType(dst, RegisterSetType::SVE); std::memcpy(dst, &m_sve_state, sizeof(m_sve_state)); dst += sizeof(m_sve_state); - dst = AddSavedRegistersData(dst, GetSVEBuffer(), + dst = AddSavedRegistersData(dst, GetSetBuffer(RegisterSetType::SVE), GetSetSize(RegisterSetType::SVE)); } else { dst = AddSavedRegisters(dst, RegisterSetType::FPR, GetFPRBuffer(), @@ -1216,7 +1216,8 @@ Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( // Write header and register data, incrementing src this time. error = RestoreRegisters( - GetSVEBuffer(), &src, GetSetSize(RegisterSetType::SVE), kind, + GetSetBuffer(RegisterSetType::SVE), &src, + GetSetSize(RegisterSetType::SVE), kind, std::bind(&NativeRegisterContextLinux_arm64::WriteAllSVE, this)); break; case RegisterSetType::FPR: { @@ -1543,7 +1544,7 @@ Status NativeRegisterContextLinux_arm64::ReadAllSVE() { return error; struct iovec ioVec; - ioVec.iov_base = GetSVEBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::SVE); ioVec.iov_len = GetSetSize(RegisterSetType::SVE); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::SVE), @@ -1564,7 +1565,7 @@ Status NativeRegisterContextLinux_arm64::WriteAllSVE() { struct iovec ioVec; - ioVec.iov_base = GetSVEBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::SVE); ioVec.iov_len = GetSetSize(RegisterSetType::SVE); Invalidate(RegisterSetType::SVE); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index ed062a5e7c0ae..b617b00fc010c 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -266,8 +266,6 @@ class NativeRegisterContextLinux_arm64 void *GetZTBuffer() { return m_zt_reg.data(); } - void *GetSVEBuffer() { return m_sve_ptrace_payload.data(); } - size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } llvm::Error ReadHardwareDebugInfo() override; >From d4005c0ed755b02f0352075acb8b52d9aac4da2a Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 14:58:23 +0000 Subject: [PATCH 07/12] convert ZT --- .../Linux/NativeRegisterContextLinux_arm64.cpp | 14 ++++++++------ .../Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index d77434bde6885..8817c01c504b3 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -559,7 +559,7 @@ NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, if (error.Fail()) return error; - src = (uint8_t *)GetZTBuffer(); + src = (uint8_t *)GetSetBuffer(RegisterSetType::ZT); } else { error = ReadSMESVG(); if (error.Fail()) @@ -848,7 +848,7 @@ Status NativeRegisterContextLinux_arm64::WriteRegister( if (error.Fail()) return error; - dst = (uint8_t *)GetZTBuffer(); + dst = (uint8_t *)GetSetBuffer(RegisterSetType::ZT); ::memcpy(dst, reg_value.GetBytes(), reg_info->byte_size); return WriteZT(); @@ -1093,7 +1093,8 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues( GetRegisterInfo().IsZTPresent() && // And ZA is enabled. m_za_header.size > sizeof(m_za_header)) - dst = AddSavedRegisters(dst, RegisterSetType::ZT, GetZTBuffer(), + dst = AddSavedRegisters(dst, RegisterSetType::ZT, + GetSetBuffer(RegisterSetType::ZT), GetSetSize(RegisterSetType::ZT)); if (GetRegisterInfo().IsMTEPresent()) { @@ -1327,7 +1328,8 @@ Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( // if the state we are restoring had an active ZA. Restoring ZT0 will // always come after restoring ZA. error = RestoreRegisters( - GetZTBuffer(), &src, GetSetSize(RegisterSetType::ZT), kind, + GetSetBuffer(RegisterSetType::ZT), &src, + GetSetSize(RegisterSetType::ZT), kind, std::bind(&NativeRegisterContextLinux_arm64::WriteZT, this)); break; case RegisterSetType::FPMR: @@ -1765,7 +1767,7 @@ Status NativeRegisterContextLinux_arm64::ReadZT() { return error; struct iovec ioVec; - ioVec.iov_base = GetZTBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::ZT); ioVec.iov_len = GetSetSize(RegisterSetType::ZT); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::ZT), @@ -1784,7 +1786,7 @@ Status NativeRegisterContextLinux_arm64::WriteZT() { return error; struct iovec ioVec; - ioVec.iov_base = GetZTBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::ZT); ioVec.iov_len = GetSetSize(RegisterSetType::ZT); Invalidate(RegisterSetType::ZT); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index b617b00fc010c..cc427ab54743c 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -264,8 +264,6 @@ class NativeRegisterContextLinux_arm64 void *GetSMEPseudoBuffer() { return &m_sme_pseudo_regs; } - void *GetZTBuffer() { return m_zt_reg.data(); } - size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } llvm::Error ReadHardwareDebugInfo() override; >From dd66568de759f0be9efb8b10596d1138c4bc63ef Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 14:59:03 +0000 Subject: [PATCH 08/12] convert TLS --- .../Linux/NativeRegisterContextLinux_arm64.cpp | 14 ++++++++------ .../Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index 8817c01c504b3..220db619e26d6 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -429,7 +429,7 @@ NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, offset = reg_info->byte_offset - GetRegisterInfo().GetTLSOffset(); assert(offset < GetSetSize(RegisterSetType::TLS)); - src = (uint8_t *)GetTLSBuffer() + offset; + src = (uint8_t *)GetSetBuffer(RegisterSetType::TLS) + offset; } else if (GetRegisterInfo().IsSVEReg(reg)) { if (m_sve_state == SVEState::Disabled || m_sve_state == SVEState::Unknown) return Status::FromErrorString("SVE disabled or not supported"); @@ -823,7 +823,7 @@ Status NativeRegisterContextLinux_arm64::WriteRegister( offset = reg_info->byte_offset - GetRegisterInfo().GetTLSOffset(); assert(offset < GetSetSize(RegisterSetType::TLS)); - dst = (uint8_t *)GetTLSBuffer() + offset; + dst = (uint8_t *)GetSetBuffer(RegisterSetType::TLS) + offset; ::memcpy(dst, reg_value.GetBytes(), reg_info->byte_size); return WriteTLS(); @@ -1120,7 +1120,8 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues( GetSetSize(RegisterSetType::POE)); } - dst = AddSavedRegisters(dst, RegisterSetType::TLS, GetTLSBuffer(), + dst = AddSavedRegisters(dst, RegisterSetType::TLS, + GetSetBuffer(RegisterSetType::TLS), GetSetSize(RegisterSetType::TLS)); return error; @@ -1292,7 +1293,8 @@ Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( break; case RegisterSetType::TLS: error = RestoreRegisters( - GetTLSBuffer(), &src, GetSetSize(RegisterSetType::TLS), kind, + GetSetBuffer(RegisterSetType::TLS), &src, + GetSetSize(RegisterSetType::TLS), kind, std::bind(&NativeRegisterContextLinux_arm64::WriteTLS, this)); break; case RegisterSetType::ZA: @@ -1637,7 +1639,7 @@ Status NativeRegisterContextLinux_arm64::ReadTLS() { return error; struct iovec ioVec; - ioVec.iov_base = GetTLSBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::TLS); ioVec.iov_len = GetSetSize(RegisterSetType::TLS); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::TLS), @@ -1657,7 +1659,7 @@ Status NativeRegisterContextLinux_arm64::WriteTLS() { return error; struct iovec ioVec; - ioVec.iov_base = GetTLSBuffer(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::TLS); ioVec.iov_len = GetSetSize(RegisterSetType::TLS); Invalidate(RegisterSetType::TLS); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index cc427ab54743c..938bd19a66291 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -260,8 +260,6 @@ class NativeRegisterContextLinux_arm64 void *GetMTEControl() { return &m_mte_ctrl_reg; } - void *GetTLSBuffer() { return &m_tls_regs; } - void *GetSMEPseudoBuffer() { return &m_sme_pseudo_regs; } size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } >From f62393cfbe64fc6d897409225577c167591a8b29 Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 14:59:45 +0000 Subject: [PATCH 09/12] convert MTE --- .../Linux/NativeRegisterContextLinux_arm64.cpp | 14 ++++++++------ .../Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index 220db619e26d6..34c40d2cb358e 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -523,7 +523,7 @@ NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, offset = reg_info->byte_offset - GetRegisterInfo().GetMTEOffset(); assert(offset < GetSetSize(RegisterSetType::MTE)); - src = (uint8_t *)GetMTEControl() + offset; + src = (uint8_t *)GetSetBuffer(RegisterSetType::MTE) + offset; } else if (GetRegisterInfo().IsSMEReg(reg)) { if (GetRegisterInfo().IsSMERegZA(reg)) { error = ReadZAHeader(); @@ -812,7 +812,7 @@ Status NativeRegisterContextLinux_arm64::WriteRegister( offset = reg_info->byte_offset - GetRegisterInfo().GetMTEOffset(); assert(offset < GetSetSize(RegisterSetType::MTE)); - dst = (uint8_t *)GetMTEControl() + offset; + dst = (uint8_t *)GetSetBuffer(RegisterSetType::MTE) + offset; ::memcpy(dst, reg_value.GetBytes(), reg_info->byte_size); return WriteMTEControl(); @@ -1098,7 +1098,8 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues( GetSetSize(RegisterSetType::ZT)); if (GetRegisterInfo().IsMTEPresent()) { - dst = AddSavedRegisters(dst, RegisterSetType::MTE, GetMTEControl(), + dst = AddSavedRegisters(dst, RegisterSetType::MTE, + GetSetBuffer(RegisterSetType::MTE), GetSetSize(RegisterSetType::MTE)); } @@ -1288,7 +1289,8 @@ Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( } case RegisterSetType::MTE: error = RestoreRegisters( - GetMTEControl(), &src, GetSetSize(RegisterSetType::MTE), kind, + GetSetBuffer(RegisterSetType::MTE), &src, + GetSetSize(RegisterSetType::MTE), kind, std::bind(&NativeRegisterContextLinux_arm64::WriteMTEControl, this)); break; case RegisterSetType::TLS: @@ -1603,7 +1605,7 @@ Status NativeRegisterContextLinux_arm64::ReadMTEControl() { return error; struct iovec ioVec; - ioVec.iov_base = GetMTEControl(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::MTE); ioVec.iov_len = GetSetSize(RegisterSetType::MTE); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::MTE), @@ -1623,7 +1625,7 @@ Status NativeRegisterContextLinux_arm64::WriteMTEControl() { return error; struct iovec ioVec; - ioVec.iov_base = GetMTEControl(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::MTE); ioVec.iov_len = GetSetSize(RegisterSetType::MTE); Invalidate(RegisterSetType::MTE); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index 938bd19a66291..559d9df232ef3 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -258,8 +258,6 @@ class NativeRegisterContextLinux_arm64 void *GetPACMask() { return &m_pac_mask; } - void *GetMTEControl() { return &m_mte_ctrl_reg; } - void *GetSMEPseudoBuffer() { return &m_sme_pseudo_regs; } size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } >From fd9dde3786567925b4791a163040a9c63c601c00 Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 15:00:31 +0000 Subject: [PATCH 10/12] convert PAC --- .../Process/Linux/NativeRegisterContextLinux_arm64.cpp | 4 ++-- .../Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index 34c40d2cb358e..6bb25fc6e5f61 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -515,7 +515,7 @@ NativeRegisterContextLinux_arm64::ReadRegister(const RegisterInfo *reg_info, offset = reg_info->byte_offset - GetRegisterInfo().GetPAuthOffset(); assert(offset < GetSetSize(RegisterSetType::PAC)); - src = (uint8_t *)GetPACMask() + offset; + src = (uint8_t *)GetSetBuffer(RegisterSetType::PAC) + offset; } else if (GetRegisterInfo().IsMTEReg(reg)) { error = ReadMTEControl(); if (error.Fail()) @@ -1515,7 +1515,7 @@ Status NativeRegisterContextLinux_arm64::ReadPAuthMask() { return error; struct iovec ioVec; - ioVec.iov_base = GetPACMask(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::PAC); ioVec.iov_len = GetSetSize(RegisterSetType::PAC); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::PAC), diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index 559d9df232ef3..0adfc70ca309a 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -256,8 +256,6 @@ class NativeRegisterContextLinux_arm64 void *GetZAHeader() { return &m_za_header; } - void *GetPACMask() { return &m_pac_mask; } - void *GetSMEPseudoBuffer() { return &m_sme_pseudo_regs; } size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } >From cc804f251353c42853ee224b366934cb94d47d86 Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 15:01:29 +0000 Subject: [PATCH 11/12] convert ZA header --- .../Process/Linux/NativeRegisterContextLinux_arm64.cpp | 5 +++-- .../Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index 6bb25fc6e5f61..e92a84b40699d 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -1305,7 +1305,8 @@ Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( // ZA header size you pass in. Therefore we must write header and register // data (if present) in one go every time. Read the header only first just // to get the size. - ::memcpy(GetZAHeader(), src, GetSetSize(RegisterSetType::ZA_HEADER)); + ::memcpy(GetSetBuffer(RegisterSetType::ZA_HEADER), src, + GetSetSize(RegisterSetType::ZA_HEADER)); // Read the header and register data. Can't use the buffer size here, it // may be incorrect due to being filled with dummy data previously. Resize // this so WriteZA uses the correct size. @@ -1713,7 +1714,7 @@ Status NativeRegisterContextLinux_arm64::ReadZAHeader() { return error; struct iovec ioVec; - ioVec.iov_base = GetZAHeader(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::ZA_HEADER); ioVec.iov_len = GetSetSize(RegisterSetType::ZA_HEADER); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::ZA_HEADER), diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index 0adfc70ca309a..544f98c139800 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -254,8 +254,6 @@ class NativeRegisterContextLinux_arm64 void *GetSVEHeader() { return &m_sve_header; } - void *GetZAHeader() { return &m_za_header; } - void *GetSMEPseudoBuffer() { return &m_sme_pseudo_regs; } size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } >From 4f5bb1b3fbd85467cf14afe66b7100ba4b03f5c5 Mon Sep 17 00:00:00 2001 From: David Spickett <[email protected]> Date: Tue, 4 Aug 2026 15:02:22 +0000 Subject: [PATCH 12/12] convert SVE header --- .../Process/Linux/NativeRegisterContextLinux_arm64.cpp | 7 ++++--- .../Process/Linux/NativeRegisterContextLinux_arm64.h | 2 -- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index e92a84b40699d..97bb2a0f45d14 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -1198,7 +1198,8 @@ Status NativeRegisterContextLinux_arm64::WriteAllRegisterValues( // First write SVE header. We do not use RestoreRegisters because we do // not want src to be modified yet. - ::memcpy(GetSVEHeader(), src, GetSetSize(RegisterSetType::SVE_HEADER)); + ::memcpy(GetSetBuffer(RegisterSetType::SVE_HEADER), src, + GetSetSize(RegisterSetType::SVE_HEADER)); if (!sve::vl_valid(m_sve_header.vl)) { Invalidate(RegisterSetType::SVE_HEADER); error = Status::FromErrorStringWithFormat( @@ -1497,7 +1498,7 @@ Status NativeRegisterContextLinux_arm64::ReadSVEHeader() { return error; struct iovec ioVec; - ioVec.iov_base = GetSVEHeader(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::SVE_HEADER); ioVec.iov_len = GetSetSize(RegisterSetType::SVE_HEADER); error = ReadRegisterSet(&ioVec, GetSetSize(RegisterSetType::SVE_HEADER), @@ -1536,7 +1537,7 @@ Status NativeRegisterContextLinux_arm64::WriteSVEHeader() { return error; struct iovec ioVec; - ioVec.iov_base = GetSVEHeader(); + ioVec.iov_base = GetSetBuffer(RegisterSetType::SVE_HEADER); ioVec.iov_len = GetSetSize(RegisterSetType::SVE_HEADER); Invalidate(RegisterSetType::SVE_HEADER); diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h index 544f98c139800..86a317c11505a 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -252,8 +252,6 @@ class NativeRegisterContextLinux_arm64 void SetSVERegVG(uint64_t vg) { m_sve_header.vl = vg * 8; } - void *GetSVEHeader() { return &m_sve_header; } - void *GetSMEPseudoBuffer() { return &m_sme_pseudo_regs; } size_t GetSMEPseudoBufferSize() { return sizeof(m_sme_pseudo_regs); } _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
