[Lldb-commits] [lldb] r287916 - Merge Linux and FreeBSD arm64 register contexts

Tim Hammerquist via lldb-commits lldb-commits at lists.llvm.org
Sat Nov 26 19:14:27 PST 2016


This appears to have broken Darwin here:

http://lab.llvm.org:8080/green/job/lldb_build_test/22487/

through to current build:

http://lab.llvm.org:8080/green/job/lldb_build_test/22545/


On Fri, Nov 25, 2016 at 2:28 AM, Pavel Labath via lldb-commits <
lldb-commits at lists.llvm.org> wrote:

> Author: labath
> Date: Fri Nov 25 04:28:09 2016
> New Revision: 287916
>
> URL: http://llvm.org/viewvc/llvm-project?rev=287916&view=rev
> Log:
> Merge Linux and FreeBSD arm64 register contexts
>
> Summary:
> This is a test-the-water change about possibilities of reducing
> duplication in
> the register context definitions.
>
> I've named the new class RegisterInfoPOSIX, as RegisterContextPOSIX was
> already
> taken :(.  The two files were identical except for a fix by Tamas in
> D12636,
> which was applied to the Linux version only, which fixed a discrepancy
> between
> the definitions of fpsr and fpcr on one hand, and all other floating point
> register definitions on the other.
>
> Linux test suite still passes after this change. For freebsd, make the
> floating
> point register behavior consistent, but I don't know whether it will be
> consistently fixed, or consistently broken. By eyeballing the code, I have
> a
> feeling that a similar fix to D12636 will be required in
> RegisterContextPOSIXProcessMonitor_arm64::ReadRegister, but I can't be
> sure as I
> have no way to test it (the assert in that function should fire upon
> accessing
> the registers if it is wrong though).
>
> Reviewers: emaste, clayborg
>
> Subscribers: aemerson, rengolin, beanz, mgorny, modocache, dmikulin,
> lldb-commits
>
> Differential Revision: https://reviews.llvm.org/D25947
>
> Added:
>     lldb/trunk/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.cpp
>       - copied, changed from r287896, lldb/trunk/source/Plugins/
> Process/Utility/RegisterContextLinux_arm64.cpp
>     lldb/trunk/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
>       - copied, changed from r287896, lldb/trunk/source/Plugins/
> Process/Utility/RegisterContextLinux_arm64.h
> Removed:
>     lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextFreeBSD_arm64.cpp
>     lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextFreeBSD_arm64.h
>     lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextLinux_arm64.cpp
>     lldb/trunk/source/Plugins/Process/Utility/RegisterContextLinux_arm64.h
> Modified:
>     lldb/trunk/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp
>     lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_
> arm64.cpp
>     lldb/trunk/source/Plugins/Process/Utility/CMakeLists.txt
>     lldb/trunk/source/Plugins/Process/elf-core/ThreadElfCore.cpp
>
> Modified: lldb/trunk/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Plugins/Process/FreeBSD/FreeBSDThread.cpp?rev=287916&
> r1=287915&r2=287916&view=diff
> ============================================================
> ==================
> --- lldb/trunk/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp (original)
> +++ lldb/trunk/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp Fri Nov
> 25 04:28:09 2016
> @@ -19,11 +19,11 @@
>  #include "FreeBSDThread.h"
>  #include "POSIXStopInfo.h"
>  #include "Plugins/Process/Utility/RegisterContextFreeBSD_arm.h"
> -#include "Plugins/Process/Utility/RegisterContextFreeBSD_arm64.h"
>  #include "Plugins/Process/Utility/RegisterContextFreeBSD_i386.h"
>  #include "Plugins/Process/Utility/RegisterContextFreeBSD_mips64.h"
>  #include "Plugins/Process/Utility/RegisterContextFreeBSD_powerpc.h"
>  #include "Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.h"
> +#include "Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h"
>  #include "Plugins/Process/Utility/UnwindLLDB.h"
>  #include "ProcessFreeBSD.h"
>  #include "ProcessMonitor.h"
> @@ -135,7 +135,7 @@ lldb::RegisterContextSP FreeBSDThread::G
>      assert(target_arch.GetTriple().getOS() == llvm::Triple::FreeBSD);
>      switch (target_arch.GetMachine()) {
>      case llvm::Triple::aarch64:
> -      reg_interface = new RegisterContextFreeBSD_arm64(target_arch);
> +      reg_interface = new RegisterInfoPOSIX_arm64(target_arch);
>        break;
>      case llvm::Triple::arm:
>        reg_interface = new RegisterContextFreeBSD_arm(target_arch);
>
> Modified: lldb/trunk/source/Plugins/Process/Linux/
> NativeRegisterContextLinux_arm64.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp?rev=287916&r1=
> 287915&r2=287916&view=diff
> ============================================================
> ==================
> --- lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp
> (original)
> +++ lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp
> Fri Nov 25 04:28:09 2016
> @@ -25,7 +25,7 @@
>  #include "Plugins/Process/Linux/NativeProcessLinux.h"
>  #include "Plugins/Process/Linux/Procfs.h"
>  #include "Plugins/Process/POSIX/ProcessPOSIXLog.h"
> -#include "Plugins/Process/Utility/RegisterContextLinux_arm64.h"
> +#include "Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h"
>
>  // System includes - They have to be included after framework includes
> because
>  // they define some
> @@ -138,7 +138,7 @@ NativeRegisterContextLinux_arm64::Native
>      const ArchSpec &target_arch, NativeThreadProtocol &native_thread,
>      uint32_t concrete_frame_idx)
>      : NativeRegisterContextLinux(native_thread, concrete_frame_idx,
> -                                 new RegisterContextLinux_arm64(target_arch))
> {
> +                                 new RegisterInfoPOSIX_arm64(target_arch))
> {
>    switch (target_arch.GetMachine()) {
>    case llvm::Triple::aarch64:
>      m_reg_info.num_registers = k_num_registers_arm64;
>
> Modified: lldb/trunk/source/Plugins/Process/Utility/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Plugins/Process/Utility/CMakeLists.txt?rev=287916&r1=
> 287915&r2=287916&view=diff
> ============================================================
> ==================
> --- lldb/trunk/source/Plugins/Process/Utility/CMakeLists.txt (original)
> +++ lldb/trunk/source/Plugins/Process/Utility/CMakeLists.txt Fri Nov 25
> 04:28:09 2016
> @@ -16,14 +16,12 @@ add_lldb_library(lldbPluginProcessUtilit
>    RegisterContextDarwin_x86_64.cpp
>    RegisterContextDummy.cpp
>    RegisterContextFreeBSD_arm.cpp
> -  RegisterContextFreeBSD_arm64.cpp
>    RegisterContextFreeBSD_i386.cpp
>    RegisterContextFreeBSD_mips64.cpp
>    RegisterContextFreeBSD_powerpc.cpp
>    RegisterContextFreeBSD_x86_64.cpp
>    RegisterContextHistory.cpp
>    RegisterContextLinux_arm.cpp
> -  RegisterContextLinux_arm64.cpp
>    RegisterContextLinux_i386.cpp
>    RegisterContextLinux_x86_64.cpp
>    RegisterContextLinux_mips64.cpp
> @@ -43,6 +41,7 @@ add_lldb_library(lldbPluginProcessUtilit
>    RegisterContextPOSIX_s390x.cpp
>    RegisterContextPOSIX_x86.cpp
>    RegisterContextThreadMemory.cpp
> +  RegisterInfoPOSIX_arm64.cpp
>    StopInfoMachException.cpp
>    ThreadMemory.cpp
>    UnwindLLDB.cpp
>
> Removed: lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextFreeBSD_arm64.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Plugins/Process/Utility/RegisterContextFreeBSD_arm64.
> cpp?rev=287915&view=auto
> ============================================================
> ==================
> --- lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextFreeBSD_arm64.cpp (original)
> +++ lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextFreeBSD_arm64.cpp (removed)
> @@ -1,95 +0,0 @@
> -//===-- RegisterContextFreeBSD_arm64.cpp ----------------------*- C++
> -*-===//
> -//
> -//                     The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
> -//===------------------------------------------------------
> ---------------===//
> -
> -#include "RegisterContextFreeBSD_arm64.h"
> -#include "RegisterContextPOSIX_arm64.h"
> -#include <vector>
> -
> -using namespace lldb;
> -
> -// Based on RegisterContextDarwin_arm64.cpp
> -#define GPR_OFFSET(idx) ((idx)*8)
> -#define GPR_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextFreeBSD_arm64::GPR, reg))
> -
> -#define FPU_OFFSET(idx) ((idx)*16 + sizeof(RegisterContextFreeBSD_
> arm64::GPR))
> -#define FPU_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextFreeBSD_arm64::FPU, reg))
> -
> -#define EXC_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextFreeBSD_arm64::EXC, reg) +
>        \
> -   sizeof(RegisterContextFreeBSD_arm64::GPR) +
>        \
> -   sizeof(RegisterContextFreeBSD_arm64::FPU))
> -#define DBG_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextFreeBSD_arm64::DBG, reg) +
>        \
> -   sizeof(RegisterContextFreeBSD_arm64::GPR) +
>        \
> -   sizeof(RegisterContextFreeBSD_arm64::FPU) +
>        \
> -   sizeof(RegisterContextFreeBSD_arm64::EXC))
> -
> -#define DEFINE_DBG(reg, i)
>      \
> -  #reg, NULL,
>       \
> -      sizeof(((RegisterContextFreeBSD_arm64::DBG *) NULL)->reg[i]),
>       \
> -              DBG_OFFSET_NAME(reg[i]), lldb::eEncodingUint,
> lldb::eFormatHex,  \
> -                              {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
>      \
> -                               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
>      \
> -                               dbg_##reg##i },
>      \
> -                               NULL, NULL, NULL, 0
> -#define REG_CONTEXT_SIZE
>      \
> -  (sizeof(RegisterContextFreeBSD_arm64::GPR) +
>        \
> -   sizeof(RegisterContextFreeBSD_arm64::FPU) +
>        \
> -   sizeof(RegisterContextFreeBSD_arm64::EXC))
> -
> -//---------------------------------------------------------
> --------------------
> -// Include RegisterInfos_arm64 to declare our g_register_infos_arm64
> structure.
> -//---------------------------------------------------------
> --------------------
> -#define DECLARE_REGISTER_INFOS_ARM64_STRUCT
> -#include "RegisterInfos_arm64.h"
> -#undef DECLARE_REGISTER_INFOS_ARM64_STRUCT
> -
> -static const lldb_private::RegisterInfo *
> -GetRegisterInfoPtr(const lldb_private::ArchSpec &target_arch) {
> -  switch (target_arch.GetMachine()) {
> -  case llvm::Triple::aarch64:
> -    return g_register_infos_arm64_le;
> -  default:
> -    assert(false && "Unhandled target architecture.");
> -    return nullptr;
> -  }
> -}
> -
> -static uint32_t
> -GetRegisterInfoCount(const lldb_private::ArchSpec &target_arch) {
> -  switch (target_arch.GetMachine()) {
> -  case llvm::Triple::aarch64:
> -    return static_cast<uint32_t>(sizeof(g_register_infos_arm64_le) /
> -                                 sizeof(g_register_infos_arm64_le[0]));
> -  default:
> -    assert(false && "Unhandled target architecture.");
> -    return 0;
> -  }
> -}
> -
> -RegisterContextFreeBSD_arm64::RegisterContextFreeBSD_arm64(
> -    const lldb_private::ArchSpec &target_arch)
> -    : RegisterInfoInterface(target_arch),
> -      m_register_info_p(GetRegisterInfoPtr(target_arch)),
> -      m_register_info_count(GetRegisterInfoCount(target_arch)) {}
> -
> -size_t RegisterContextFreeBSD_arm64::GetGPRSize() const {
> -  return sizeof(struct RegisterContextFreeBSD_arm64::GPR);
> -}
> -
> -const lldb_private::RegisterInfo *
> -RegisterContextFreeBSD_arm64::GetRegisterInfo() const {
> -  return m_register_info_p;
> -}
> -
> -uint32_t RegisterContextFreeBSD_arm64::GetRegisterCount() const {
> -  return m_register_info_count;
> -}
>
> Removed: lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextFreeBSD_arm64.h
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Plugins/Process/Utility/RegisterContextFreeBSD_arm64.
> h?rev=287915&view=auto
> ============================================================
> ==================
> --- lldb/trunk/source/Plugins/Process/Utility/RegisterContextFreeBSD_arm64.h
> (original)
> +++ lldb/trunk/source/Plugins/Process/Utility/RegisterContextFreeBSD_arm64.h
> (removed)
> @@ -1,69 +0,0 @@
> -//===-- RegisterContextFreeBSD_arm64.h --------------------------*- C++
> -*-===//
> -//
> -//                     The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
> -//===------------------------------------------------------
> ----------------===//
> -
> -#ifndef liblldb_RegisterContextFreeBSD_arm64_H_
> -#define liblldb_RegisterContextFreeBSD_arm64_H_
> -
> -#include "RegisterInfoInterface.h"
> -
> -class RegisterContextFreeBSD_arm64
> -    : public lldb_private::RegisterInfoInterface {
> -public:
> -  // based on RegisterContextDarwin_arm64.h
> -  struct GPR {
> -    uint64_t x[29]; // x0-x28
> -    uint64_t fp;    // x29
> -    uint64_t lr;    // x30
> -    uint64_t sp;    // x31
> -    uint64_t pc;    // pc
> -    uint32_t cpsr;  // cpsr
> -  };
> -
> -  // based on RegisterContextDarwin_arm64.h
> -  struct VReg {
> -    uint8_t bytes[16];
> -  };
> -
> -  // based on RegisterContextDarwin_arm64.h
> -  struct FPU {
> -    VReg v[32];
> -    uint32_t fpsr;
> -    uint32_t fpcr;
> -  };
> -
> -  // based on RegisterContextDarwin_arm64.h
> -  struct EXC {
> -    uint64_t far;       // Virtual Fault Address
> -    uint32_t esr;       // Exception syndrome
> -    uint32_t exception; // number of arm exception token
> -  };
> -
> -  // based on RegisterContextDarwin_arm64.h
> -  struct DBG {
> -    uint64_t bvr[16];
> -    uint64_t bcr[16];
> -    uint64_t wvr[16];
> -    uint64_t wcr[16];
> -    uint64_t mdscr_el1;
> -  };
> -
> -  RegisterContextFreeBSD_arm64(const lldb_private::ArchSpec
> &target_arch);
> -
> -  size_t GetGPRSize() const override;
> -
> -  const lldb_private::RegisterInfo *GetRegisterInfo() const override;
> -
> -  uint32_t GetRegisterCount() const override;
> -
> -private:
> -  const lldb_private::RegisterInfo *m_register_info_p;
> -  uint32_t m_register_info_count;
> -};
> -
> -#endif
>
> Removed: lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextLinux_arm64.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Plugins/Process/Utility/RegisterContextLinux_arm64.
> cpp?rev=287915&view=auto
> ============================================================
> ==================
> --- lldb/trunk/source/Plugins/Process/Utility/RegisterContextLinux_arm64.cpp
> (original)
> +++ lldb/trunk/source/Plugins/Process/Utility/RegisterContextLinux_arm64.cpp
> (removed)
> @@ -1,99 +0,0 @@
> -//===-- RegisterContextLinux_arm64.cpp -------------------------*- C++
> -*-===//
> -//
> -//                     The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
> -//===------------------------------------------------------
> ---------------===//
> -
> -#include <cassert>
> -#include <stddef.h>
> -#include <vector>
> -
> -#include "lldb/lldb-defines.h"
> -#include "llvm/Support/Compiler.h"
> -
> -#include "RegisterContextLinux_arm64.h"
> -
> -// Based on RegisterContextDarwin_arm64.cpp
> -#define GPR_OFFSET(idx) ((idx)*8)
> -#define GPR_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextLinux_arm64::GPR, reg))
> -
> -#define FPU_OFFSET(idx) ((idx)*16 + sizeof(RegisterContextLinux_
> arm64::GPR))
> -#define FPU_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextLinux_arm64::FPU, reg) +
>        \
> -   sizeof(RegisterContextLinux_arm64::GPR))
> -
> -#define EXC_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextLinux_arm64::EXC, reg) +
>        \
> -   sizeof(RegisterContextLinux_arm64::GPR) +
>        \
> -   sizeof(RegisterContextLinux_arm64::FPU))
> -#define DBG_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextLinux_arm64::DBG, reg) +
>        \
> -   sizeof(RegisterContextLinux_arm64::GPR) +
>        \
> -   sizeof(RegisterContextLinux_arm64::FPU) +
>        \
> -   sizeof(RegisterContextLinux_arm64::EXC))
> -
> -#define DEFINE_DBG(reg, i)
>      \
> -  #reg, NULL,
>       \
> -      sizeof(((RegisterContextLinux_arm64::DBG *) NULL)->reg[i]),
>       \
> -              DBG_OFFSET_NAME(reg[i]), lldb::eEncodingUint,
> lldb::eFormatHex,  \
> -                              {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
>      \
> -                               LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
>      \
> -                               dbg_##reg##i },
>      \
> -                               NULL, NULL, NULL, 0
> -#define REG_CONTEXT_SIZE
>      \
> -  (sizeof(RegisterContextLinux_arm64::GPR) +
>        \
> -   sizeof(RegisterContextLinux_arm64::FPU) +
>        \
> -   sizeof(RegisterContextLinux_arm64::EXC))
> -
> -//---------------------------------------------------------
> --------------------
> -// Include RegisterInfos_arm64 to declare our g_register_infos_arm64
> structure.
> -//---------------------------------------------------------
> --------------------
> -#define DECLARE_REGISTER_INFOS_ARM64_STRUCT
> -#include "RegisterInfos_arm64.h"
> -#undef DECLARE_REGISTER_INFOS_ARM64_STRUCT
> -
> -static const lldb_private::RegisterInfo *
> -GetRegisterInfoPtr(const lldb_private::ArchSpec &target_arch) {
> -  switch (target_arch.GetMachine()) {
> -  case llvm::Triple::aarch64:
> -    return g_register_infos_arm64_le;
> -  default:
> -    assert(false && "Unhandled target architecture.");
> -    return NULL;
> -  }
> -}
> -
> -static uint32_t
> -GetRegisterInfoCount(const lldb_private::ArchSpec &target_arch) {
> -  switch (target_arch.GetMachine()) {
> -  case llvm::Triple::aarch64:
> -    return static_cast<uint32_t>(sizeof(g_register_infos_arm64_le) /
> -                                 sizeof(g_register_infos_arm64_le[0]));
> -  default:
> -    assert(false && "Unhandled target architecture.");
> -    return 0;
> -  }
> -}
> -
> -RegisterContextLinux_arm64::RegisterContextLinux_arm64(
> -    const lldb_private::ArchSpec &target_arch)
> -    : lldb_private::RegisterInfoInterface(target_arch),
> -      m_register_info_p(GetRegisterInfoPtr(target_arch)),
> -      m_register_info_count(GetRegisterInfoCount(target_arch)) {}
> -
> -size_t RegisterContextLinux_arm64::GetGPRSize() const {
> -  return sizeof(struct RegisterContextLinux_arm64::GPR);
> -}
> -
> -const lldb_private::RegisterInfo *
> -RegisterContextLinux_arm64::GetRegisterInfo() const {
> -  return m_register_info_p;
> -}
> -
> -uint32_t RegisterContextLinux_arm64::GetRegisterCount() const {
> -  return m_register_info_count;
> -}
>
> Removed: lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextLinux_arm64.h
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Plugins/Process/Utility/RegisterContextLinux_arm64.h?rev=287915&view=auto
> ============================================================
> ==================
> --- lldb/trunk/source/Plugins/Process/Utility/RegisterContextLinux_arm64.h
> (original)
> +++ lldb/trunk/source/Plugins/Process/Utility/RegisterContextLinux_arm64.h
> (removed)
> @@ -1,70 +0,0 @@
> -//===-- RegisterContextLinux_arm64.h ----------------------------*- C++
> -*-===//
> -//
> -//                     The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
> -//===------------------------------------------------------
> ----------------===//
> -
> -#ifndef liblldb_RegisterContextLinux_arm64_H_
> -#define liblldb_RegisterContextLinux_arm64_H_
> -
> -#include "RegisterInfoInterface.h"
> -#include "lldb/Target/RegisterContext.h"
> -#include "lldb/lldb-private.h"
> -
> -class RegisterContextLinux_arm64 : public lldb_private::RegisterInfoInterface
> {
> -public:
> -  // based on RegisterContextDarwin_arm64.h
> -  struct GPR {
> -    uint64_t x[29]; // x0-x28
> -    uint64_t fp;    // x29
> -    uint64_t lr;    // x30
> -    uint64_t sp;    // x31
> -    uint64_t pc;    // pc
> -    uint32_t cpsr;  // cpsr
> -  };
> -
> -  // based on RegisterContextDarwin_arm64.h
> -  struct VReg {
> -    uint8_t bytes[16];
> -  };
> -
> -  // based on RegisterContextDarwin_arm64.h
> -  struct FPU {
> -    VReg v[32];
> -    uint32_t fpsr;
> -    uint32_t fpcr;
> -  };
> -
> -  // based on RegisterContextDarwin_arm64.h
> -  struct EXC {
> -    uint64_t far;       // Virtual Fault Address
> -    uint32_t esr;       // Exception syndrome
> -    uint32_t exception; // number of arm exception token
> -  };
> -
> -  // based on RegisterContextDarwin_arm64.h
> -  struct DBG {
> -    uint64_t bvr[16];
> -    uint64_t bcr[16];
> -    uint64_t wvr[16];
> -    uint64_t wcr[16];
> -    uint64_t mdscr_el1;
> -  };
> -
> -  RegisterContextLinux_arm64(const lldb_private::ArchSpec &target_arch);
> -
> -  size_t GetGPRSize() const override;
> -
> -  const lldb_private::RegisterInfo *GetRegisterInfo() const override;
> -
> -  uint32_t GetRegisterCount() const override;
> -
> -private:
> -  const lldb_private::RegisterInfo *m_register_info_p;
> -  uint32_t m_register_info_count;
> -};
> -
> -#endif
>
> Copied: lldb/trunk/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.cpp
> (from r287896, lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextLinux_arm64.cpp)
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Plugins/Process/Utility/RegisterInfoPOSIX_arm64.cpp?
> p2=lldb/trunk/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.cpp&
> p1=lldb/trunk/source/Plugins/Process/Utility/RegisterContextLinux_arm64.
> cpp&r1=287896&r2=287916&rev=287916&view=diff
> ============================================================
> ==================
> --- lldb/trunk/source/Plugins/Process/Utility/RegisterContextLinux_arm64.cpp
> (original)
> +++ lldb/trunk/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.cpp
> Fri Nov 25 04:28:09 2016
> @@ -1,4 +1,4 @@
> -//===-- RegisterContextLinux_arm64.cpp -------------------------*- C++
> -*-===//
> +//===-- RegisterInfoPOSIX_arm64.cpp ----------------------------*- C++
> -*-===//
>  //
>  //                     The LLVM Compiler Infrastructure
>  //
> @@ -14,40 +14,40 @@
>  #include "lldb/lldb-defines.h"
>  #include "llvm/Support/Compiler.h"
>
> -#include "RegisterContextLinux_arm64.h"
> +#include "RegisterInfoPOSIX_arm64.h"
>
>  // Based on RegisterContextDarwin_arm64.cpp
>  #define GPR_OFFSET(idx) ((idx)*8)
>  #define GPR_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextLinux_arm64::GPR, reg))
> +  (LLVM_EXTENSION offsetof(RegisterInfoPOSIX_arm64::GPR, reg))
>
> -#define FPU_OFFSET(idx) ((idx)*16 + sizeof(RegisterContextLinux_
> arm64::GPR))
> +#define FPU_OFFSET(idx) ((idx)*16 + sizeof(RegisterInfoPOSIX_arm64::GPR))
>  #define FPU_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextLinux_arm64::FPU, reg) +
>        \
> -   sizeof(RegisterContextLinux_arm64::GPR))
> +  (LLVM_EXTENSION offsetof(RegisterInfoPOSIX_arm64::FPU, reg) +
>       \
> +   sizeof(RegisterInfoPOSIX_arm64::GPR))
>
>  #define EXC_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextLinux_arm64::EXC, reg) +
>        \
> -   sizeof(RegisterContextLinux_arm64::GPR) +
>        \
> -   sizeof(RegisterContextLinux_arm64::FPU))
> +  (LLVM_EXTENSION offsetof(RegisterInfoPOSIX_arm64::EXC, reg) +
>       \
> +   sizeof(RegisterInfoPOSIX_arm64::GPR) +
>       \
> +   sizeof(RegisterInfoPOSIX_arm64::FPU))
>  #define DBG_OFFSET_NAME(reg)
>      \
> -  (LLVM_EXTENSION offsetof(RegisterContextLinux_arm64::DBG, reg) +
>        \
> -   sizeof(RegisterContextLinux_arm64::GPR) +
>        \
> -   sizeof(RegisterContextLinux_arm64::FPU) +
>        \
> -   sizeof(RegisterContextLinux_arm64::EXC))
> +  (LLVM_EXTENSION offsetof(RegisterInfoPOSIX_arm64::DBG, reg) +
>       \
> +   sizeof(RegisterInfoPOSIX_arm64::GPR) +
>       \
> +   sizeof(RegisterInfoPOSIX_arm64::FPU) +
>       \
> +   sizeof(RegisterInfoPOSIX_arm64::EXC))
>
>  #define DEFINE_DBG(reg, i)
>      \
>    #reg, NULL,
>       \
> -      sizeof(((RegisterContextLinux_arm64::DBG *) NULL)->reg[i]),
>       \
> +      sizeof(((RegisterInfoPOSIX_arm64::DBG *) NULL)->reg[i]),
>        \
>                DBG_OFFSET_NAME(reg[i]), lldb::eEncodingUint,
> lldb::eFormatHex,  \
>                                {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
>      \
>                                 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
>      \
>                                 dbg_##reg##i },
>      \
>                                 NULL, NULL, NULL, 0
>  #define REG_CONTEXT_SIZE
>      \
> -  (sizeof(RegisterContextLinux_arm64::GPR) +
>        \
> -   sizeof(RegisterContextLinux_arm64::FPU) +
>        \
> -   sizeof(RegisterContextLinux_arm64::EXC))
> +  (sizeof(RegisterInfoPOSIX_arm64::GPR) +
>       \
> +   sizeof(RegisterInfoPOSIX_arm64::FPU) +
>       \
> +   sizeof(RegisterInfoPOSIX_arm64::EXC))
>
>  //----------------------------------------------------------
> -------------------
>  // Include RegisterInfos_arm64 to declare our g_register_infos_arm64
> structure.
> @@ -79,21 +79,21 @@ GetRegisterInfoCount(const lldb_private:
>    }
>  }
>
> -RegisterContextLinux_arm64::RegisterContextLinux_arm64(
> +RegisterInfoPOSIX_arm64::RegisterInfoPOSIX_arm64(
>      const lldb_private::ArchSpec &target_arch)
>      : lldb_private::RegisterInfoInterface(target_arch),
>        m_register_info_p(GetRegisterInfoPtr(target_arch)),
>        m_register_info_count(GetRegisterInfoCount(target_arch)) {}
>
> -size_t RegisterContextLinux_arm64::GetGPRSize() const {
> -  return sizeof(struct RegisterContextLinux_arm64::GPR);
> +size_t RegisterInfoPOSIX_arm64::GetGPRSize() const {
> +  return sizeof(struct RegisterInfoPOSIX_arm64::GPR);
>  }
>
>  const lldb_private::RegisterInfo *
> -RegisterContextLinux_arm64::GetRegisterInfo() const {
> +RegisterInfoPOSIX_arm64::GetRegisterInfo() const {
>    return m_register_info_p;
>  }
>
> -uint32_t RegisterContextLinux_arm64::GetRegisterCount() const {
> +uint32_t RegisterInfoPOSIX_arm64::GetRegisterCount() const {
>    return m_register_info_count;
>  }
>
> Copied: lldb/trunk/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
> (from r287896, lldb/trunk/source/Plugins/Process/Utility/
> RegisterContextLinux_arm64.h)
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h?p2=
> lldb/trunk/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h&p1=
> lldb/trunk/source/Plugins/Process/Utility/RegisterContextLinux_arm64.h&
> r1=287896&r2=287916&rev=287916&view=diff
> ============================================================
> ==================
> --- lldb/trunk/source/Plugins/Process/Utility/RegisterContextLinux_arm64.h
> (original)
> +++ lldb/trunk/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
> Fri Nov 25 04:28:09 2016
> @@ -1,4 +1,4 @@
> -//===-- RegisterContextLinux_arm64.h ----------------------------*- C++
> -*-===//
> +//===-- RegisterInfoPOSIX_arm64.h -------------------------------*- C++
> -*-===//
>  //
>  //                     The LLVM Compiler Infrastructure
>  //
> @@ -14,7 +14,7 @@
>  #include "lldb/Target/RegisterContext.h"
>  #include "lldb/lldb-private.h"
>
> -class RegisterContextLinux_arm64 : public lldb_private::RegisterInfoInterface
> {
> +class RegisterInfoPOSIX_arm64 : public lldb_private::RegisterInfoInterface
> {
>  public:
>    // based on RegisterContextDarwin_arm64.h
>    struct GPR {
> @@ -54,7 +54,7 @@ public:
>      uint64_t mdscr_el1;
>    };
>
> -  RegisterContextLinux_arm64(const lldb_private::ArchSpec &target_arch);
> +  RegisterInfoPOSIX_arm64(const lldb_private::ArchSpec &target_arch);
>
>    size_t GetGPRSize() const override;
>
>
> Modified: lldb/trunk/source/Plugins/Process/elf-core/ThreadElfCore.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/
> Plugins/Process/elf-core/ThreadElfCore.cpp?rev=287916&
> r1=287915&r2=287916&view=diff
> ============================================================
> ==================
> --- lldb/trunk/source/Plugins/Process/elf-core/ThreadElfCore.cpp
> (original)
> +++ lldb/trunk/source/Plugins/Process/elf-core/ThreadElfCore.cpp Fri Nov
> 25 04:28:09 2016
> @@ -15,16 +15,15 @@
>  #include "lldb/Target/Unwind.h"
>
>  #include "Plugins/Process/Utility/RegisterContextFreeBSD_arm.h"
> -#include "Plugins/Process/Utility/RegisterContextFreeBSD_arm64.h"
>  #include "Plugins/Process/Utility/RegisterContextFreeBSD_i386.h"
>  #include "Plugins/Process/Utility/RegisterContextFreeBSD_mips64.h"
>  #include "Plugins/Process/Utility/RegisterContextFreeBSD_powerpc.h"
>  #include "Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.h"
>  #include "Plugins/Process/Utility/RegisterContextLinux_arm.h"
> -#include "Plugins/Process/Utility/RegisterContextLinux_arm64.h"
>  #include "Plugins/Process/Utility/RegisterContextLinux_i386.h"
>  #include "Plugins/Process/Utility/RegisterContextLinux_s390x.h"
>  #include "Plugins/Process/Utility/RegisterContextLinux_x86_64.h"
> +#include "Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h"
>  #include "ProcessElfCore.h"
>  #include "RegisterContextPOSIXCore_arm.h"
>  #include "RegisterContextPOSIXCore_arm64.h"
> @@ -86,7 +85,7 @@ ThreadElfCore::CreateRegisterContextForF
>      case llvm::Triple::FreeBSD: {
>        switch (arch.GetMachine()) {
>        case llvm::Triple::aarch64:
> -        reg_interface = new RegisterContextFreeBSD_arm64(arch);
> +        reg_interface = new RegisterInfoPOSIX_arm64(arch);
>          break;
>        case llvm::Triple::arm:
>          reg_interface = new RegisterContextFreeBSD_arm(arch);
> @@ -118,7 +117,7 @@ ThreadElfCore::CreateRegisterContextForF
>          reg_interface = new RegisterContextLinux_arm(arch);
>          break;
>        case llvm::Triple::aarch64:
> -        reg_interface = new RegisterContextLinux_arm64(arch);
> +        reg_interface = new RegisterInfoPOSIX_arm64(arch);
>          break;
>        case llvm::Triple::systemz:
>          reg_interface = new RegisterContextLinux_s390x(arch);
>
>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>



-- 
Tim <penryu at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20161126/c2ea6ed1/attachment-0001.html>


More information about the lldb-commits mailing list