From 47a2c55447106a55d5bd7a9172548571fc6f6c83 Mon Sep 17 00:00:00 2001 From: Nitesh Jain Date: Wed, 12 Oct 2016 10:53:57 +0000 Subject: [PATCH] [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 llvm-svn: 284003 --- .../Linux/NativeRegisterContextLinux_mips64.cpp | 163 ++++++++++--------- .../Linux/NativeRegisterContextLinux_mips64.h | 12 +- .../Plugins/Process/Utility/RegisterInfos_mips.h | 172 +++++++++------------ .../Plugins/Process/Utility/RegisterInfos_mips64.h | 166 ++++++++++---------- .../Utility/lldb-mips-linux-register-enums.h | 78 ++++++++++ 5 files changed, 331 insertions(+), 260 deletions(-) diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp index 6c79537..c050a2e 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp @@ -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::ReadRegister(const RegisterInfo *reg_info, } 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::ReadRegister(const RegisterInfo *reg_info, } 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::ReadRegister(const RegisterInfo *reg_info, } 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 NativeRegisterContextLinux_mips64::WriteRegister( } 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::WriteAllRegisterValues( 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::ReadCP1() { } 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_mips64::NumSupportedHardwareWatchpoints() { } 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(®s, 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 *)®s) + offset), 8, - GetByteOrder()); Error error = NativeProcessLinux::PtraceWrapper( PTRACE_GETREGS, m_thread.GetID(), NULL, ®s, sizeof regs); if (error.Success()) { @@ -1149,33 +1184,7 @@ Error NativeRegisterContextLinux_mips64::DoReadRegisterValue( if (m_thread.GetProcess()->GetArchitecture(arch)) { void *target_address = ((uint8_t *)®s) + 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, ®s, sizeof regs); - if (error.Success()) { - lldb_private::ArchSpec arch; - if (m_thread.GetProcess()->GetArchitecture(arch)) { - ::memcpy((void *)(((unsigned char *)(®s)) + offset), value.GetBytes(), - arch.GetFlags() & lldb_private::ArchSpec::eMIPSABI_O32 ? 4 : 8); - error = NativeProcessLinux::PtraceWrapper( - PTRACE_SETREGS, m_thread.GetID(), NULL, ®s, sizeof regs); + value.SetUInt(*(uint32_t *)target_address, size); } else error.SetErrorString("failed to get architecture"); } diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h index ef17942..1b25609 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h @@ -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); diff --git a/lldb/source/Plugins/Process/Utility/RegisterInfos_mips.h b/lldb/source/Plugins/Process/Utility/RegisterInfos_mips.h index 82f7c00..b116b99 100644 --- a/lldb/source/Plugins/Process/Utility/RegisterInfos_mips.h +++ b/lldb/source/Plugins/Process/Utility/RegisterInfos_mips.h @@ -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, diff --git a/lldb/source/Plugins/Process/Utility/RegisterInfos_mips64.h b/lldb/source/Plugins/Process/Utility/RegisterInfos_mips64.h index f972920..3c3912f 100644 --- a/lldb/source/Plugins/Process/Utility/RegisterInfos_mips64.h +++ b/lldb/source/Plugins/Process/Utility/RegisterInfos_mips64.h @@ -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_mips64[] = { 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, diff --git a/lldb/source/Plugins/Process/Utility/lldb-mips-linux-register-enums.h b/lldb/source/Plugins/Process/Utility/lldb-mips-linux-register-enums.h index 2875695..0ecf3e3 100644 --- a/lldb/source/Plugins/Process/Utility/lldb-mips-linux-register-enums.h +++ b/lldb/source/Plugins/Process/Utility/lldb-mips-linux-register-enums.h @@ -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 -- 2.7.4