Commit 75b195cc authored by David Spickett's avatar David Spickett
Browse files

Revert "[lldb] Add template method for getting const or mutable regs from...

Revert "[lldb] Add template method for getting const or mutable regs from DynamicRegisterInfo (#71402)"

This reverts commit 4989c62b as it fails to build with g++.
parent 4306cfd4
Loading
Loading
Loading
Loading
+4 −10
Original line number Diff line number Diff line
@@ -89,18 +89,12 @@ public:
  GetRegisterInfo(llvm::StringRef reg_name) const;

  typedef std::vector<lldb_private::RegisterInfo> reg_collection;

  template <typename T> T registers() = delete;

  typedef llvm::iterator_range<reg_collection::const_iterator>
      reg_collection_const_range;
  template <> reg_collection_const_range registers() {
    return reg_collection_const_range(m_regs);
  llvm::iterator_range<reg_collection::const_iterator> registers() const {
    return llvm::iterator_range<reg_collection::const_iterator>(m_regs);
  }

  typedef llvm::iterator_range<reg_collection::iterator> reg_collection_range;
  template <> reg_collection_range registers() {
    return reg_collection_range(m_regs);
  llvm::iterator_range<reg_collection::iterator> registers_mutable() {
    return llvm::iterator_range<reg_collection::iterator>(m_regs);
  }

  void ConfigureOffsets();
+12 −9
Original line number Diff line number Diff line
@@ -38,8 +38,10 @@ ArchitectureAArch64::Create(const ArchSpec &arch) {
  return std::unique_ptr<Architecture>(new ArchitectureAArch64());
}

static void
UpdateARM64SVERegistersInfos(DynamicRegisterInfo::reg_collection_range regs,
static void UpdateARM64SVERegistersInfos(
    llvm::iterator_range<
        lldb_private::DynamicRegisterInfo::reg_collection::iterator>
        regs,
    uint64_t vg) {
  // SVE Z register size is vg x 8 bytes.
  uint32_t z_reg_byte_size = vg * 8;
@@ -60,8 +62,10 @@ UpdateARM64SVERegistersInfos(DynamicRegisterInfo::reg_collection_range regs,
  }
}

static void
UpdateARM64SMERegistersInfos(DynamicRegisterInfo::reg_collection_range regs,
static void UpdateARM64SMERegistersInfos(
    llvm::iterator_range<
        lldb_private::DynamicRegisterInfo::reg_collection::iterator>
        regs,
    uint64_t svg) {
  for (auto &reg : regs) {
    if (strcmp(reg.name, "za") == 0) {
@@ -104,11 +108,10 @@ bool ArchitectureAArch64::ReconfigureRegisterInfo(DynamicRegisterInfo &reg_info,
  if (!vg_reg_value && !svg_reg_value)
    return false;

  auto regs = reg_info.registers<DynamicRegisterInfo::reg_collection_range>();
  if (vg_reg_value)
    UpdateARM64SVERegistersInfos(regs, *vg_reg_value);
    UpdateARM64SVERegistersInfos(reg_info.registers_mutable(), *vg_reg_value);
  if (svg_reg_value)
    UpdateARM64SMERegistersInfos(regs, *svg_reg_value);
    UpdateARM64SMERegistersInfos(reg_info.registers_mutable(), *svg_reg_value);

  // At this point if we have updated any registers, their offsets will all be
  // invalid. If we did, we need to update them all.
+1 −3
Original line number Diff line number Diff line
@@ -228,9 +228,7 @@ bool GDBRemoteRegisterContext::ReadRegisterBytes(const RegisterInfo *reg_info) {
          SetAllRegisterValid(true);
          return true;
        } else if (buffer_sp->GetByteSize() > 0) {
          for (auto x : llvm::enumerate(
                   m_reg_info_sp->registers<
                       DynamicRegisterInfo::reg_collection_const_range>())) {
          for (auto x : llvm::enumerate(m_reg_info_sp->registers())) {
            const struct RegisterInfo &reginfo = x.value();
            m_reg_valid[x.index()] =
                (reginfo.byte_offset + reginfo.byte_size <=