[Lldb-commits] [lldb] r284003 - [LLDB][MIPS] fix Floating point register read/write for big endian

Nitesh Jain via lldb-commits lldb-commits at lists.llvm.org
Wed Oct 12 03:53:58 PDT 2016


Author: nitesh.jain
Date: Wed Oct 12 05:53:57 2016
New Revision: 284003

URL: http://llvm.org/viewvc/llvm-project?rev=284003&view=rev
Log:
[LLDB][MIPS] fix Floating point register read/write for big endian

Reviewers: clayborg, labath, jaydeep

Subscribers: bhushan, slthakur, lldb-commits

Differential Revision: https://reviews.llvm.org/D24603

Modified:
    lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp
    lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h
    lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_mips.h
    lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_mips64.h
    lldb/trunk/source/Plugins/Process/Utility/lldb-mips-linux-register-enums.h

Modified: lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp?rev=284003&r1=284002&r2=284003&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp (original)
+++ lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp Wed Oct 12 05:53:57 2016
@@ -26,6 +26,7 @@
 #include "lldb/Core/RegisterValue.h"
 #include "lldb/Host/Host.h"
 #include "lldb/Host/HostInfo.h"
+#include "lldb/Utility/LLDBAssert.h"
 #include "lldb/lldb-enumerations.h"
 #include "lldb/lldb-private-enumerations.h"
 #define NT_MIPS_MSA 0x600
@@ -392,6 +393,7 @@ NativeRegisterContextLinux_mips64::ReadR
   }
 
   const uint32_t reg = reg_info->kinds[lldb::eRegisterKindLLDB];
+  uint8_t byte_size = reg_info->byte_size;
   if (reg == LLDB_INVALID_REGNUM) {
     // This is likely an internal register for lldb use only and should not be
     // directly queried.
@@ -407,7 +409,8 @@ NativeRegisterContextLinux_mips64::ReadR
   }
 
   if (IsMSA(reg) || IsFPR(reg)) {
-    uint8_t *src;
+    uint8_t *src = nullptr;
+    lldbassert(reg_info->byte_offset < sizeof(UserArea));
 
     error = ReadCP1();
 
@@ -417,14 +420,17 @@ NativeRegisterContextLinux_mips64::ReadR
     }
 
     if (IsFPR(reg)) {
-      assert(reg_info->byte_offset < sizeof(UserArea));
-      src = (uint8_t *)&m_fpr + reg_info->byte_offset - (sizeof(m_gpr));
-    } else {
-      assert(reg_info->byte_offset < sizeof(UserArea));
+      if (IsFR0() && (byte_size != 4)) {
+        byte_size = 4;
+        uint8_t ptrace_index;
+        ptrace_index = reg_info->kinds[lldb::eRegisterKindProcessPlugin];
+        src = ReturnFPOffset(ptrace_index, reg_info->byte_offset);
+      } else
+        src = (uint8_t *)&m_fpr + reg_info->byte_offset - sizeof(m_gpr);
+    } else
       src = (uint8_t *)&m_msa + reg_info->byte_offset -
             (sizeof(m_gpr) + sizeof(m_fpr));
-    }
-    switch (reg_info->byte_size) {
+    switch (byte_size) {
     case 4:
       reg_value.SetUInt32(*(uint32_t *)src);
       break;
@@ -466,21 +472,26 @@ lldb_private::Error NativeRegisterContex
   }
 
   if (IsFPR(reg_index) || IsMSA(reg_index)) {
-    uint8_t *dst;
-    uint64_t *src;
+    uint8_t *dst = nullptr;
+    uint64_t *src = nullptr;
+    uint8_t byte_size = reg_info->byte_size;
+    lldbassert(reg_info->byte_offset < sizeof(UserArea));
 
     // Initialise the FP and MSA buffers by reading all co-processor 1 registers
     ReadCP1();
 
     if (IsFPR(reg_index)) {
-      assert(reg_info->byte_offset < sizeof(UserArea));
-      dst = (uint8_t *)&m_fpr + reg_info->byte_offset - (sizeof(m_gpr));
-    } else {
-      assert(reg_info->byte_offset < sizeof(UserArea));
+      if (IsFR0() && (byte_size != 4)) {
+        byte_size = 4;
+        uint8_t ptrace_index;
+        ptrace_index = reg_info->kinds[lldb::eRegisterKindProcessPlugin];
+        dst = ReturnFPOffset(ptrace_index, reg_info->byte_offset);
+      } else
+        dst = (uint8_t *)&m_fpr + reg_info->byte_offset - sizeof(m_gpr);
+    } else
       dst = (uint8_t *)&m_msa + reg_info->byte_offset -
             (sizeof(m_gpr) + sizeof(m_fpr));
-    }
-    switch (reg_info->byte_size) {
+    switch (byte_size) {
     case 4:
       *(uint32_t *)dst = reg_value.GetAsUInt32();
       break;
@@ -611,11 +622,12 @@ Error NativeRegisterContextLinux_mips64:
 Error NativeRegisterContextLinux_mips64::ReadCP1() {
   Error error;
 
-  uint8_t *src, *dst;
+  uint8_t *src = nullptr;
+  uint8_t *dst = nullptr;
 
   lldb::ByteOrder byte_order = GetByteOrder();
 
-  uint32_t IsBigEndian = (byte_order == lldb::eByteOrderBig);
+  bool IsBigEndian = (byte_order == lldb::eByteOrderBig);
 
   if (IsMSAAvailable()) {
     error = NativeRegisterContextLinux::ReadRegisterSet(
@@ -634,42 +646,36 @@ Error NativeRegisterContextLinux_mips64:
   } else {
     error = NativeRegisterContextLinux::ReadFPR();
   }
+  return error;
+}
 
-  // TODO: Add support for FRE
-  if (IsFR0()) {
-    src = (uint8_t *)&m_fpr + 4 + (IsBigEndian * 4);
-    dst = (uint8_t *)&m_fpr + 8 + (IsBigEndian * 4);
-    for (int i = 0; i < (NUM_REGISTERS / 2); i++) {
-      // copy odd single from top of neighbouring even double
-      *(uint32_t *)dst = *(uint32_t *)src;
-      src = src + 16;
-      dst = dst + 16;
-    }
-  }
+uint8_t *
+NativeRegisterContextLinux_mips64::ReturnFPOffset(uint8_t reg_index,
+                                                  uint32_t byte_offset) {
 
-  return error;
+  uint8_t *fp_buffer_ptr = nullptr;
+  lldb::ByteOrder byte_order = GetByteOrder();
+  bool IsBigEndian = (byte_order == lldb::eByteOrderBig);
+  if (reg_index % 2) {
+    uint8_t offset_diff = (IsBigEndian) ? 8 : 4;
+    fp_buffer_ptr =
+        (uint8_t *)&m_fpr + byte_offset - offset_diff - sizeof(m_gpr);
+  } else {
+    fp_buffer_ptr =
+        (uint8_t *)&m_fpr + byte_offset + 4 * (IsBigEndian) - sizeof(m_gpr);
+  }
+  return fp_buffer_ptr;
 }
 
 Error NativeRegisterContextLinux_mips64::WriteCP1() {
   Error error;
 
-  uint8_t *src, *dst;
+  uint8_t *src = nullptr;
+  uint8_t *dst = nullptr;
 
   lldb::ByteOrder byte_order = GetByteOrder();
 
-  uint32_t IsBigEndian = (byte_order == lldb::eByteOrderBig);
-
-  // TODO: Add support for FRE
-  if (IsFR0()) {
-    src = (uint8_t *)&m_fpr + 8 + (IsBigEndian * 4);
-    dst = (uint8_t *)&m_fpr + 4 + (IsBigEndian * 4);
-    for (int i = 0; i < (NUM_REGISTERS / 2); i++) {
-      // copy odd single to top of neighbouring even double
-      *(uint32_t *)dst = *(uint32_t *)src;
-      src = src + 16;
-      dst = dst + 16;
-    }
-  }
+  bool IsBigEndian = (byte_order == lldb::eByteOrderBig);
 
   if (IsMSAAvailable()) {
     dst = (uint8_t *)&m_msa + (IsBigEndian * 8);
@@ -1132,16 +1138,45 @@ uint32_t NativeRegisterContextLinux_mips
   }
   return num_valid;
 }
-Error NativeRegisterContextLinux_mips64::DoReadRegisterValue(
-    uint32_t offset, const char *reg_name, uint32_t size,
-    RegisterValue &value) {
+
+Error NativeRegisterContextLinux_mips64::ReadRegisterRaw(uint32_t reg_index,
+                                                         RegisterValue &value) {
+  const RegisterInfo *const reg_info = GetRegisterInfoAtIndex(reg_index);
+
+  if (!reg_info)
+    return Error("register %" PRIu32 " not found", reg_index);
+
+  uint32_t offset = reg_info->kinds[lldb::eRegisterKindProcessPlugin];
+
+  if ((offset == ptrace_sr_mips) || (offset == ptrace_config5_mips))
+    return Read_SR_Config(reg_info->byte_offset, reg_info->name,
+                          reg_info->byte_size, value);
+
+  return DoReadRegisterValue(offset, reg_info->name, reg_info->byte_size,
+                             value);
+}
+
+Error NativeRegisterContextLinux_mips64::WriteRegisterRaw(
+    uint32_t reg_index, const RegisterValue &value) {
+  const RegisterInfo *const reg_info = GetRegisterInfoAtIndex(reg_index);
+
+  if (!reg_info)
+    return Error("register %" PRIu32 " not found", reg_index);
+
+  if (reg_info->invalidate_regs)
+    lldbassert(false && "reg_info->invalidate_regs is unhandled");
+
+  uint32_t offset = reg_info->kinds[lldb::eRegisterKindProcessPlugin];
+  return DoWriteRegisterValue(offset, reg_info->name, value);
+}
+
+Error NativeRegisterContextLinux_mips64::Read_SR_Config(uint32_t offset,
+                                                        const char *reg_name,
+                                                        uint32_t size,
+                                                        RegisterValue &value) {
   GPR_linux_mips regs;
   ::memset(&regs, 0, sizeof(GPR_linux_mips));
 
-  // Clear all bits in RegisterValue before writing actual value read from
-  // ptrace to avoid garbage value in 32-bit MSB
-  value.SetBytes((void *)(((unsigned char *)&regs) + offset), 8,
-                 GetByteOrder());
   Error error = NativeProcessLinux::PtraceWrapper(
       PTRACE_GETREGS, m_thread.GetID(), NULL, &regs, sizeof regs);
   if (error.Success()) {
@@ -1149,33 +1184,7 @@ Error NativeRegisterContextLinux_mips64:
     if (m_thread.GetProcess()->GetArchitecture(arch)) {
       void *target_address = ((uint8_t *)&regs) + offset +
                              4 * (arch.GetMachine() == llvm::Triple::mips);
-      uint32_t target_size;
-      if ((::strcmp(reg_name, "sr") == 0) ||
-          (::strcmp(reg_name, "cause") == 0) ||
-          (::strcmp(reg_name, "config5") == 0))
-        target_size = 4;
-      else
-        target_size =
-            arch.GetFlags() & lldb_private::ArchSpec::eMIPSABI_O32 ? 4 : 8;
-      value.SetBytes(target_address, target_size, arch.GetByteOrder());
-    } else
-      error.SetErrorString("failed to get architecture");
-  }
-  return error;
-}
-
-Error NativeRegisterContextLinux_mips64::DoWriteRegisterValue(
-    uint32_t offset, const char *reg_name, const RegisterValue &value) {
-  GPR_linux_mips regs;
-  Error error = NativeProcessLinux::PtraceWrapper(
-      PTRACE_GETREGS, m_thread.GetID(), NULL, &regs, sizeof regs);
-  if (error.Success()) {
-    lldb_private::ArchSpec arch;
-    if (m_thread.GetProcess()->GetArchitecture(arch)) {
-      ::memcpy((void *)(((unsigned char *)(&regs)) + offset), value.GetBytes(),
-               arch.GetFlags() & lldb_private::ArchSpec::eMIPSABI_O32 ? 4 : 8);
-      error = NativeProcessLinux::PtraceWrapper(
-          PTRACE_SETREGS, m_thread.GetID(), NULL, &regs, sizeof regs);
+      value.SetUInt(*(uint32_t *)target_address, size);
     } else
       error.SetErrorString("failed to get architecture");
   }

Modified: lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h?rev=284003&r1=284002&r2=284003&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h (original)
+++ lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h Wed Oct 12 05:53:57 2016
@@ -52,6 +52,8 @@ public:
 
   Error WriteCP1();
 
+  uint8_t *ReturnFPOffset(uint8_t reg_index, uint32_t byte_offset);
+
   Error IsWatchpointHit(uint32_t wp_index, bool &is_hit) override;
 
   Error GetWatchpointHitIndex(uint32_t &wp_index,
@@ -76,11 +78,13 @@ public:
   static bool IsMSAAvailable();
 
 protected:
-  Error DoReadRegisterValue(uint32_t offset, const char *reg_name,
-                            uint32_t size, RegisterValue &value) override;
+  Error Read_SR_Config(uint32_t offset, const char *reg_name, uint32_t size,
+                       RegisterValue &value);
+
+  Error ReadRegisterRaw(uint32_t reg_index, RegisterValue &value) override;
 
-  Error DoWriteRegisterValue(uint32_t offset, const char *reg_name,
-                             const RegisterValue &value) override;
+  Error WriteRegisterRaw(uint32_t reg_index,
+                         const RegisterValue &value) override;
 
   Error DoReadWatchPointRegisterValue(lldb::tid_t tid, void *watch_readback);
 

Modified: lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_mips.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_mips.h?rev=284003&r1=284002&r2=284003&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_mips.h (original)
+++ lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_mips.h Wed Oct 12 05:53:57 2016
@@ -35,11 +35,11 @@
    LLVM_EXTENSION offsetof(MSA_linux_mips, regname))
 
 // Note that the size and offset will be updated by platform-specific classes.
-#define DEFINE_GPR(reg, alt, kind1, kind2, kind3, kind4)                       \
+#define DEFINE_GPR(reg, alt, kind1, kind2, kind3)                              \
   {                                                                            \
     #reg, alt, sizeof(((GPR_linux_mips *) NULL)->reg) / 2,                     \
                       GPR_OFFSET(reg), eEncodingUint, eFormatHex,              \
-                                 {kind1, kind2, kind3, kind4,                  \
+                                 {kind1, kind2, kind3, ptrace_##reg##_mips,    \
                                   gpr_##reg##_mips },                          \
                                   NULL, NULL, NULL, 0                          \
   }
@@ -49,21 +49,21 @@ const uint8_t dwarf_opcode_mips[] = {
     llvm::dwarf::DW_OP_lit26, llvm::dwarf::DW_OP_shl, llvm::dwarf::DW_OP_and,
     llvm::dwarf::DW_OP_lit26, llvm::dwarf::DW_OP_shr};
 
-#define DEFINE_FPR(reg, alt, kind1, kind2, kind3, kind4)                       \
+#define DEFINE_FPR(reg, alt, kind1, kind2, kind3)                              \
   {                                                                            \
     #reg, alt, sizeof(((FPR_linux_mips *) NULL)->reg),                         \
                       FPR_OFFSET(reg), eEncodingIEEE754, eFormatFloat,         \
-                                 {kind1, kind2, kind3, kind4,                  \
+                                 {kind1, kind2, kind3, ptrace_##reg##_mips,    \
                                   fpr_##reg##_mips },                          \
                                   NULL, NULL, dwarf_opcode_mips,               \
                                   sizeof(dwarf_opcode_mips)                    \
   }
 
-#define DEFINE_FPR_INFO(reg, alt, kind1, kind2, kind3, kind4)                  \
+#define DEFINE_FPR_INFO(reg, alt, kind1, kind2, kind3)                         \
   {                                                                            \
     #reg, alt, sizeof(((FPR_linux_mips *) NULL)->reg),                         \
                       FPR_OFFSET(reg), eEncodingUint, eFormatHex,              \
-                                 {kind1, kind2, kind3, kind4,                  \
+                                 {kind1, kind2, kind3, ptrace_##reg##_mips,    \
                                   fpr_##reg##_mips },                          \
                                   NULL, NULL, NULL, 0                          \
   }
@@ -90,153 +90,135 @@ const uint8_t dwarf_opcode_mips[] = {
 
 static RegisterInfo g_register_infos_mips[] = {
     DEFINE_GPR(zero, "zero", dwarf_zero_mips, dwarf_zero_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
-    DEFINE_GPR(r1, "at", dwarf_r1_mips, dwarf_r1_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_GPR(r2, nullptr, dwarf_r2_mips, dwarf_r2_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_GPR(r3, nullptr, dwarf_r3_mips, dwarf_r3_mips, LLDB_INVALID_REGNUM,
                LLDB_INVALID_REGNUM),
+    DEFINE_GPR(r1, "at", dwarf_r1_mips, dwarf_r1_mips, LLDB_INVALID_REGNUM),
+    DEFINE_GPR(r2, nullptr, dwarf_r2_mips, dwarf_r2_mips, LLDB_INVALID_REGNUM),
+    DEFINE_GPR(r3, nullptr, dwarf_r3_mips, dwarf_r3_mips, LLDB_INVALID_REGNUM),
     DEFINE_GPR(r4, nullptr, dwarf_r4_mips, dwarf_r4_mips,
-               LLDB_REGNUM_GENERIC_ARG1, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG1),
     DEFINE_GPR(r5, nullptr, dwarf_r5_mips, dwarf_r5_mips,
-               LLDB_REGNUM_GENERIC_ARG2, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG2),
     DEFINE_GPR(r6, nullptr, dwarf_r6_mips, dwarf_r6_mips,
-               LLDB_REGNUM_GENERIC_ARG3, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG3),
     DEFINE_GPR(r7, nullptr, dwarf_r7_mips, dwarf_r7_mips,
-               LLDB_REGNUM_GENERIC_ARG4, LLDB_INVALID_REGNUM),
-    DEFINE_GPR(r8, nullptr, dwarf_r8_mips, dwarf_r8_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_GPR(r9, nullptr, dwarf_r9_mips, dwarf_r9_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG4),
+    DEFINE_GPR(r8, nullptr, dwarf_r8_mips, dwarf_r8_mips, LLDB_INVALID_REGNUM),
+    DEFINE_GPR(r9, nullptr, dwarf_r9_mips, dwarf_r9_mips, LLDB_INVALID_REGNUM),
     DEFINE_GPR(r10, nullptr, dwarf_r10_mips, dwarf_r10_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r11, nullptr, dwarf_r11_mips, dwarf_r11_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r12, nullptr, dwarf_r12_mips, dwarf_r12_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r13, nullptr, dwarf_r13_mips, dwarf_r13_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r14, nullptr, dwarf_r14_mips, dwarf_r14_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r15, nullptr, dwarf_r15_mips, dwarf_r15_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r16, nullptr, dwarf_r16_mips, dwarf_r16_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r17, nullptr, dwarf_r17_mips, dwarf_r17_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r18, nullptr, dwarf_r18_mips, dwarf_r18_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r19, nullptr, dwarf_r19_mips, dwarf_r19_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r20, nullptr, dwarf_r20_mips, dwarf_r20_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r21, nullptr, dwarf_r21_mips, dwarf_r21_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r22, nullptr, dwarf_r22_mips, dwarf_r22_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r23, nullptr, dwarf_r23_mips, dwarf_r23_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r24, nullptr, dwarf_r24_mips, dwarf_r24_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r25, nullptr, dwarf_r25_mips, dwarf_r25_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r26, nullptr, dwarf_r26_mips, dwarf_r26_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
-    DEFINE_GPR(r27, nullptr, dwarf_r27_mips, dwarf_r27_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
-    DEFINE_GPR(gp, "gp", dwarf_gp_mips, dwarf_gp_mips, LLDB_INVALID_REGNUM,
                LLDB_INVALID_REGNUM),
-    DEFINE_GPR(sp, "sp", dwarf_sp_mips, dwarf_sp_mips, LLDB_REGNUM_GENERIC_SP,
+    DEFINE_GPR(r27, nullptr, dwarf_r27_mips, dwarf_r27_mips,
                LLDB_INVALID_REGNUM),
+    DEFINE_GPR(gp, "gp", dwarf_gp_mips, dwarf_gp_mips, LLDB_INVALID_REGNUM),
+    DEFINE_GPR(sp, "sp", dwarf_sp_mips, dwarf_sp_mips, LLDB_REGNUM_GENERIC_SP),
     DEFINE_GPR(r30, "fp", dwarf_r30_mips, dwarf_r30_mips,
-               LLDB_REGNUM_GENERIC_FP, LLDB_INVALID_REGNUM),
-    DEFINE_GPR(ra, "ra", dwarf_ra_mips, dwarf_ra_mips, LLDB_REGNUM_GENERIC_RA,
-               LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_FP),
+    DEFINE_GPR(ra, "ra", dwarf_ra_mips, dwarf_ra_mips, LLDB_REGNUM_GENERIC_RA),
     DEFINE_GPR(sr, "status", dwarf_sr_mips, dwarf_sr_mips,
-               LLDB_REGNUM_GENERIC_FLAGS, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_FLAGS),
     DEFINE_GPR(mullo, nullptr, dwarf_lo_mips, dwarf_lo_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(mulhi, nullptr, dwarf_hi_mips, dwarf_hi_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(badvaddr, nullptr, dwarf_bad_mips, dwarf_bad_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(cause, nullptr, dwarf_cause_mips, dwarf_cause_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(pc, nullptr, dwarf_pc_mips, dwarf_pc_mips,
-               LLDB_REGNUM_GENERIC_PC, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_PC),
     DEFINE_GPR(config5, nullptr, dwarf_config5_mips, dwarf_config5_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
-    DEFINE_FPR(f0, nullptr, dwarf_f0_mips, dwarf_f0_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_FPR(f1, nullptr, dwarf_f1_mips, dwarf_f1_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_FPR(f2, nullptr, dwarf_f2_mips, dwarf_f2_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_FPR(f3, nullptr, dwarf_f3_mips, dwarf_f3_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_FPR(f4, nullptr, dwarf_f4_mips, dwarf_f4_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_FPR(f5, nullptr, dwarf_f5_mips, dwarf_f5_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_FPR(f6, nullptr, dwarf_f6_mips, dwarf_f6_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_FPR(f7, nullptr, dwarf_f7_mips, dwarf_f7_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_FPR(f8, nullptr, dwarf_f8_mips, dwarf_f8_mips, LLDB_INVALID_REGNUM,
-               LLDB_INVALID_REGNUM),
-    DEFINE_FPR(f9, nullptr, dwarf_f9_mips, dwarf_f9_mips, LLDB_INVALID_REGNUM,
                LLDB_INVALID_REGNUM),
+    DEFINE_FPR(f0, nullptr, dwarf_f0_mips, dwarf_f0_mips, LLDB_INVALID_REGNUM),
+    DEFINE_FPR(f1, nullptr, dwarf_f1_mips, dwarf_f1_mips, LLDB_INVALID_REGNUM),
+    DEFINE_FPR(f2, nullptr, dwarf_f2_mips, dwarf_f2_mips, LLDB_INVALID_REGNUM),
+    DEFINE_FPR(f3, nullptr, dwarf_f3_mips, dwarf_f3_mips, LLDB_INVALID_REGNUM),
+    DEFINE_FPR(f4, nullptr, dwarf_f4_mips, dwarf_f4_mips, LLDB_INVALID_REGNUM),
+    DEFINE_FPR(f5, nullptr, dwarf_f5_mips, dwarf_f5_mips, LLDB_INVALID_REGNUM),
+    DEFINE_FPR(f6, nullptr, dwarf_f6_mips, dwarf_f6_mips, LLDB_INVALID_REGNUM),
+    DEFINE_FPR(f7, nullptr, dwarf_f7_mips, dwarf_f7_mips, LLDB_INVALID_REGNUM),
+    DEFINE_FPR(f8, nullptr, dwarf_f8_mips, dwarf_f8_mips, LLDB_INVALID_REGNUM),
+    DEFINE_FPR(f9, nullptr, dwarf_f9_mips, dwarf_f9_mips, LLDB_INVALID_REGNUM),
     DEFINE_FPR(f10, nullptr, dwarf_f10_mips, dwarf_f10_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f11, nullptr, dwarf_f11_mips, dwarf_f11_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f12, nullptr, dwarf_f12_mips, dwarf_f12_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f13, nullptr, dwarf_f13_mips, dwarf_f13_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f14, nullptr, dwarf_f14_mips, dwarf_f14_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f15, nullptr, dwarf_f15_mips, dwarf_f15_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f16, nullptr, dwarf_f16_mips, dwarf_f16_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f17, nullptr, dwarf_f17_mips, dwarf_f17_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f18, nullptr, dwarf_f18_mips, dwarf_f18_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f19, nullptr, dwarf_f19_mips, dwarf_f19_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f20, nullptr, dwarf_f20_mips, dwarf_f20_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f21, nullptr, dwarf_f21_mips, dwarf_f21_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f22, nullptr, dwarf_f22_mips, dwarf_f22_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f23, nullptr, dwarf_f23_mips, dwarf_f23_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f24, nullptr, dwarf_f24_mips, dwarf_f24_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f25, nullptr, dwarf_f25_mips, dwarf_f25_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f26, nullptr, dwarf_f26_mips, dwarf_f26_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f27, nullptr, dwarf_f27_mips, dwarf_f27_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f28, nullptr, dwarf_f28_mips, dwarf_f28_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f29, nullptr, dwarf_f29_mips, dwarf_f29_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f30, nullptr, dwarf_f30_mips, dwarf_f30_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f31, nullptr, dwarf_f31_mips, dwarf_f31_mips,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR_INFO(fcsr, nullptr, dwarf_fcsr_mips, dwarf_fcsr_mips,
-                    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+                    LLDB_INVALID_REGNUM),
     DEFINE_FPR_INFO(fir, nullptr, dwarf_fir_mips, dwarf_fir_mips,
-                    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+                    LLDB_INVALID_REGNUM),
     DEFINE_FPR_INFO(config5, nullptr, dwarf_config5_mips, dwarf_config5_mips,
-                    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+                    LLDB_INVALID_REGNUM),
     DEFINE_MSA(w0, nullptr, dwarf_w0_mips, dwarf_w0_mips, LLDB_INVALID_REGNUM,
                LLDB_INVALID_REGNUM),
     DEFINE_MSA(w1, nullptr, dwarf_w1_mips, dwarf_w1_mips, LLDB_INVALID_REGNUM,

Modified: lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_mips64.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_mips64.h?rev=284003&r1=284002&r2=284003&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_mips64.h (original)
+++ lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_mips64.h Wed Oct 12 05:53:57 2016
@@ -42,11 +42,11 @@
 
 // Note that the size and offset will be updated by platform-specific classes.
 #ifdef LINUX_MIPS64
-#define DEFINE_GPR(reg, alt, kind1, kind2, kind3, kind4)                       \
+#define DEFINE_GPR(reg, alt, kind1, kind2, kind3)                              \
   {                                                                            \
     #reg, alt, sizeof(((GPR_linux_mips *) 0)->reg),                            \
                       GPR_OFFSET(reg), eEncodingUint, eFormatHex,              \
-                                 {kind1, kind2, kind3, kind4,                  \
+                                 {kind1, kind2, kind3, ptrace_##reg##_mips,    \
                                   gpr_##reg##_mips64 },                        \
                                   NULL, NULL, NULL, 0                          \
   }
@@ -61,11 +61,11 @@
   }
 #endif
 
-#define DEFINE_GPR_INFO(reg, alt, kind1, kind2, kind3, kind4)                  \
+#define DEFINE_GPR_INFO(reg, alt, kind1, kind2, kind3)                         \
   {                                                                            \
     #reg, alt, sizeof(((GPR_linux_mips *) 0)->reg) / 2,                        \
                       GPR_OFFSET(reg), eEncodingUint, eFormatHex,              \
-                                 {kind1, kind2, kind3, kind4,                  \
+                                 {kind1, kind2, kind3, ptrace_##reg##_mips,    \
                                   gpr_##reg##_mips64 },                        \
                                   NULL, NULL, NULL, 0                          \
   }
@@ -75,21 +75,21 @@ const uint8_t dwarf_opcode_mips64[] = {
     llvm::dwarf::DW_OP_lit26, llvm::dwarf::DW_OP_shl, llvm::dwarf::DW_OP_and,
     llvm::dwarf::DW_OP_lit26, llvm::dwarf::DW_OP_shr};
 
-#define DEFINE_FPR(reg, alt, kind1, kind2, kind3, kind4)                       \
+#define DEFINE_FPR(reg, alt, kind1, kind2, kind3)                              \
   {                                                                            \
     #reg, alt, sizeof(((FPR_linux_mips *) 0)->reg),                            \
                       FPR_OFFSET(reg), eEncodingIEEE754, eFormatFloat,         \
-                                 {kind1, kind2, kind3, kind4,                  \
+                                 {kind1, kind2, kind3, ptrace_##reg##_mips,    \
                                   fpr_##reg##_mips64 },                        \
                                   NULL, NULL, dwarf_opcode_mips64,             \
                                   sizeof(dwarf_opcode_mips64)                  \
   }
 
-#define DEFINE_FPR_INFO(reg, alt, kind1, kind2, kind3, kind4)                  \
+#define DEFINE_FPR_INFO(reg, alt, kind1, kind2, kind3)                         \
   {                                                                            \
     #reg, alt, sizeof(((FPR_linux_mips *) 0)->reg),                            \
                       FPR_OFFSET(reg), eEncodingUint, eFormatHex,              \
-                                 {kind1, kind2, kind3, kind4,                  \
+                                 {kind1, kind2, kind3, ptrace_##reg##_mips,    \
                                   fpr_##reg##_mips64 },                        \
                                   NULL, NULL, NULL, 0                          \
   }
@@ -198,155 +198,153 @@ static RegisterInfo g_register_infos_mip
                LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
 #else
     DEFINE_GPR(zero, "r0", dwarf_zero_mips64, dwarf_zero_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r1, nullptr, dwarf_r1_mips64, dwarf_r1_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r2, nullptr, dwarf_r2_mips64, dwarf_r2_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r3, nullptr, dwarf_r3_mips64, dwarf_r3_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r4, nullptr, dwarf_r4_mips64, dwarf_r4_mips64,
-               LLDB_REGNUM_GENERIC_ARG1, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG1),
     DEFINE_GPR(r5, nullptr, dwarf_r5_mips64, dwarf_r5_mips64,
-               LLDB_REGNUM_GENERIC_ARG2, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG2),
     DEFINE_GPR(r6, nullptr, dwarf_r6_mips64, dwarf_r6_mips64,
-               LLDB_REGNUM_GENERIC_ARG3, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG3),
     DEFINE_GPR(r7, nullptr, dwarf_r7_mips64, dwarf_r7_mips64,
-               LLDB_REGNUM_GENERIC_ARG4, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG4),
     DEFINE_GPR(r8, nullptr, dwarf_r8_mips64, dwarf_r8_mips64,
-               LLDB_REGNUM_GENERIC_ARG5, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG5),
     DEFINE_GPR(r9, nullptr, dwarf_r9_mips64, dwarf_r9_mips64,
-               LLDB_REGNUM_GENERIC_ARG6, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG6),
     DEFINE_GPR(r10, nullptr, dwarf_r10_mips64, dwarf_r10_mips64,
-               LLDB_REGNUM_GENERIC_ARG7, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG7),
     DEFINE_GPR(r11, nullptr, dwarf_r11_mips64, dwarf_r11_mips64,
-               LLDB_REGNUM_GENERIC_ARG8, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_ARG8),
     DEFINE_GPR(r12, nullptr, dwarf_r12_mips64, dwarf_r12_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r13, nullptr, dwarf_r13_mips64, dwarf_r13_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r14, nullptr, dwarf_r14_mips64, dwarf_r14_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r15, nullptr, dwarf_r15_mips64, dwarf_r15_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r16, nullptr, dwarf_r16_mips64, dwarf_r16_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r17, nullptr, dwarf_r17_mips64, dwarf_r17_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r18, nullptr, dwarf_r18_mips64, dwarf_r18_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r19, nullptr, dwarf_r19_mips64, dwarf_r19_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r20, nullptr, dwarf_r20_mips64, dwarf_r20_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r21, nullptr, dwarf_r21_mips64, dwarf_r21_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r22, nullptr, dwarf_r22_mips64, dwarf_r22_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r23, nullptr, dwarf_r23_mips64, dwarf_r23_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r24, nullptr, dwarf_r24_mips64, dwarf_r24_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r25, nullptr, dwarf_r25_mips64, dwarf_r25_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r26, nullptr, dwarf_r26_mips64, dwarf_r26_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(r27, nullptr, dwarf_r27_mips64, dwarf_r27_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
-    DEFINE_GPR(gp, "r28", dwarf_gp_mips64, dwarf_gp_mips64, LLDB_INVALID_REGNUM,
+               LLDB_INVALID_REGNUM),
+    DEFINE_GPR(gp, "r28", dwarf_gp_mips64, dwarf_gp_mips64,
                LLDB_INVALID_REGNUM),
     DEFINE_GPR(sp, "r29", dwarf_sp_mips64, dwarf_sp_mips64,
-               LLDB_REGNUM_GENERIC_SP, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_SP),
     DEFINE_GPR(r30, nullptr, dwarf_r30_mips64, dwarf_r30_mips64,
-               LLDB_REGNUM_GENERIC_FP, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_FP),
     DEFINE_GPR(ra, "r31", dwarf_ra_mips64, dwarf_ra_mips64,
-               LLDB_REGNUM_GENERIC_RA, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_RA),
     DEFINE_GPR_INFO(sr, nullptr, dwarf_sr_mips64, dwarf_sr_mips64,
-                    LLDB_REGNUM_GENERIC_FLAGS, LLDB_INVALID_REGNUM),
+                    LLDB_REGNUM_GENERIC_FLAGS),
     DEFINE_GPR(mullo, nullptr, dwarf_lo_mips64, dwarf_lo_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(mulhi, nullptr, dwarf_hi_mips64, dwarf_hi_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR(badvaddr, nullptr, dwarf_bad_mips64, dwarf_bad_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_GPR_INFO(cause, nullptr, dwarf_cause_mips64, dwarf_cause_mips64,
-                    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+                    LLDB_INVALID_REGNUM),
     DEFINE_GPR(pc, "pc", dwarf_pc_mips64, dwarf_pc_mips64,
-               LLDB_REGNUM_GENERIC_PC, LLDB_INVALID_REGNUM),
+               LLDB_REGNUM_GENERIC_PC),
     DEFINE_GPR_INFO(config5, nullptr, dwarf_config5_mips64,
-                    dwarf_config5_mips64, LLDB_INVALID_REGNUM,
-                    LLDB_INVALID_REGNUM),
+                    dwarf_config5_mips64, LLDB_INVALID_REGNUM),
     DEFINE_FPR(f0, nullptr, dwarf_f0_mips64, dwarf_f0_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f1, nullptr, dwarf_f1_mips64, dwarf_f1_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f2, nullptr, dwarf_f2_mips64, dwarf_f2_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f3, nullptr, dwarf_f3_mips64, dwarf_f3_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f4, nullptr, dwarf_f4_mips64, dwarf_f4_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f5, nullptr, dwarf_f5_mips64, dwarf_f5_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f6, nullptr, dwarf_f6_mips64, dwarf_f6_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f7, nullptr, dwarf_f7_mips64, dwarf_f7_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f8, nullptr, dwarf_f8_mips64, dwarf_f8_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f9, nullptr, dwarf_f9_mips64, dwarf_f9_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f10, nullptr, dwarf_f10_mips64, dwarf_f10_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f11, nullptr, dwarf_f11_mips64, dwarf_f11_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f12, nullptr, dwarf_f12_mips64, dwarf_f12_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f13, nullptr, dwarf_f13_mips64, dwarf_f13_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f14, nullptr, dwarf_f14_mips64, dwarf_f14_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f15, nullptr, dwarf_f15_mips64, dwarf_f15_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f16, nullptr, dwarf_f16_mips64, dwarf_f16_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f17, nullptr, dwarf_f17_mips64, dwarf_f17_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f18, nullptr, dwarf_f18_mips64, dwarf_f18_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f19, nullptr, dwarf_f19_mips64, dwarf_f19_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f20, nullptr, dwarf_f20_mips64, dwarf_f20_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f21, nullptr, dwarf_f21_mips64, dwarf_f21_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f22, nullptr, dwarf_f22_mips64, dwarf_f22_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f23, nullptr, dwarf_f23_mips64, dwarf_f23_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f24, nullptr, dwarf_f24_mips64, dwarf_f24_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f25, nullptr, dwarf_f25_mips64, dwarf_f25_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f26, nullptr, dwarf_f26_mips64, dwarf_f26_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f27, nullptr, dwarf_f27_mips64, dwarf_f27_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f28, nullptr, dwarf_f28_mips64, dwarf_f28_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f29, nullptr, dwarf_f29_mips64, dwarf_f29_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f30, nullptr, dwarf_f30_mips64, dwarf_f30_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR(f31, nullptr, dwarf_f31_mips64, dwarf_f31_mips64,
-               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+               LLDB_INVALID_REGNUM),
     DEFINE_FPR_INFO(fcsr, nullptr, dwarf_fcsr_mips64, dwarf_fcsr_mips64,
-                    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
+                    LLDB_INVALID_REGNUM),
     DEFINE_FPR_INFO(fir, nullptr, dwarf_fir_mips64, dwarf_fir_mips64,
-                    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
-    DEFINE_FPR_INFO(config5, nullptr, dwarf_config5_mips64,
-                    dwarf_config5_mips64, LLDB_INVALID_REGNUM,
                     LLDB_INVALID_REGNUM),
+    DEFINE_FPR_INFO(config5, nullptr, dwarf_config5_mips64,
+                    dwarf_config5_mips64, LLDB_INVALID_REGNUM),
     DEFINE_MSA(w0, nullptr, dwarf_w0_mips64, dwarf_w0_mips64,
                LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM),
     DEFINE_MSA(w1, nullptr, dwarf_w1_mips64, dwarf_w1_mips64,

Modified: lldb/trunk/source/Plugins/Process/Utility/lldb-mips-linux-register-enums.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/lldb-mips-linux-register-enums.h?rev=284003&r1=284002&r2=284003&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Utility/lldb-mips-linux-register-enums.h (original)
+++ lldb/trunk/source/Plugins/Process/Utility/lldb-mips-linux-register-enums.h Wed Oct 12 05:53:57 2016
@@ -282,6 +282,84 @@ enum {
                                 k_num_fpr_registers_mips64 +
                                 k_num_msa_registers_mips64
 };
+
+// Register no. for RegisterKind = eRegisterKindProcessPlugin
+// The ptrace request PTRACE_PEEKUSER/PTRACE_POKEUSER used this number
+enum {
+  ptrace_zero_mips,
+  ptrace_r1_mips,
+  ptrace_r2_mips,
+  ptrace_r3_mips,
+  ptrace_r4_mips,
+  ptrace_r5_mips,
+  ptrace_r6_mips,
+  ptrace_r7_mips,
+  ptrace_r8_mips,
+  ptrace_r9_mips,
+  ptrace_r10_mips,
+  ptrace_r11_mips,
+  ptrace_r12_mips,
+  ptrace_r13_mips,
+  ptrace_r14_mips,
+  ptrace_r15_mips,
+  ptrace_r16_mips,
+  ptrace_r17_mips,
+  ptrace_r18_mips,
+  ptrace_r19_mips,
+  ptrace_r20_mips,
+  ptrace_r21_mips,
+  ptrace_r22_mips,
+  ptrace_r23_mips,
+  ptrace_r24_mips,
+  ptrace_r25_mips,
+  ptrace_r26_mips,
+  ptrace_r27_mips,
+  ptrace_gp_mips,
+  ptrace_sp_mips,
+  ptrace_r30_mips,
+  ptrace_ra_mips,
+  ptrace_f0_mips,
+  ptrace_f1_mips,
+  ptrace_f2_mips,
+  ptrace_f3_mips,
+  ptrace_f4_mips,
+  ptrace_f5_mips,
+  ptrace_f6_mips,
+  ptrace_f7_mips,
+  ptrace_f8_mips,
+  ptrace_f9_mips,
+  ptrace_f10_mips,
+  ptrace_f11_mips,
+  ptrace_f12_mips,
+  ptrace_f13_mips,
+  ptrace_f14_mips,
+  ptrace_f15_mips,
+  ptrace_f16_mips,
+  ptrace_f17_mips,
+  ptrace_f18_mips,
+  ptrace_f19_mips,
+  ptrace_f20_mips,
+  ptrace_f21_mips,
+  ptrace_f22_mips,
+  ptrace_f23_mips,
+  ptrace_f24_mips,
+  ptrace_f25_mips,
+  ptrace_f26_mips,
+  ptrace_f27_mips,
+  ptrace_f28_mips,
+  ptrace_f29_mips,
+  ptrace_f30_mips,
+  ptrace_f31_mips,
+  ptrace_pc_mips,
+  ptrace_cause_mips,
+  ptrace_badvaddr_mips,
+  ptrace_mulhi_mips,
+  ptrace_mullo_mips,
+  ptrace_fcsr_mips,
+  ptrace_fir_mips,
+  ptrace_sr_mips,
+  ptrace_config5_mips
+};
 }
 
 #endif // #ifndef lldb_mips_linux_register_enums_h




More information about the lldb-commits mailing list