Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / lldb / source / Plugins / Process / MacOSX-Kernel / RegisterContextKDP_x86_64.cpp
blob9c47c22608bfa256e49ab3c3f978cda9d3010a25
1 //===-- RegisterContextKDP_x86_64.cpp -------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
9 #include "RegisterContextKDP_x86_64.h"
10 #include "ProcessKDP.h"
11 #include "ThreadKDP.h"
13 using namespace lldb;
14 using namespace lldb_private;
16 RegisterContextKDP_x86_64::RegisterContextKDP_x86_64(
17 ThreadKDP &thread, uint32_t concrete_frame_idx)
18 : RegisterContextDarwin_x86_64(thread, concrete_frame_idx),
19 m_kdp_thread(thread) {}
21 RegisterContextKDP_x86_64::~RegisterContextKDP_x86_64() = default;
23 int RegisterContextKDP_x86_64::DoReadGPR(lldb::tid_t tid, int flavor,
24 GPR &gpr) {
25 ProcessSP process_sp(CalculateProcess());
26 if (process_sp) {
27 Status error;
28 if (static_cast<ProcessKDP *>(process_sp.get())
29 ->GetCommunication()
30 .SendRequestReadRegisters(tid, GPRRegSet, &gpr, sizeof(gpr),
31 error)) {
32 if (error.Success())
33 return 0;
36 return -1;
39 int RegisterContextKDP_x86_64::DoReadFPU(lldb::tid_t tid, int flavor,
40 FPU &fpu) {
41 ProcessSP process_sp(CalculateProcess());
42 if (process_sp) {
43 Status error;
44 if (static_cast<ProcessKDP *>(process_sp.get())
45 ->GetCommunication()
46 .SendRequestReadRegisters(tid, FPURegSet, &fpu, sizeof(fpu),
47 error)) {
48 if (error.Success())
49 return 0;
52 return -1;
55 int RegisterContextKDP_x86_64::DoReadEXC(lldb::tid_t tid, int flavor,
56 EXC &exc) {
57 ProcessSP process_sp(CalculateProcess());
58 if (process_sp) {
59 Status error;
60 if (static_cast<ProcessKDP *>(process_sp.get())
61 ->GetCommunication()
62 .SendRequestReadRegisters(tid, EXCRegSet, &exc, sizeof(exc),
63 error)) {
64 if (error.Success())
65 return 0;
68 return -1;
71 int RegisterContextKDP_x86_64::DoWriteGPR(lldb::tid_t tid, int flavor,
72 const GPR &gpr) {
73 ProcessSP process_sp(CalculateProcess());
74 if (process_sp) {
75 Status error;
76 if (static_cast<ProcessKDP *>(process_sp.get())
77 ->GetCommunication()
78 .SendRequestWriteRegisters(tid, GPRRegSet, &gpr, sizeof(gpr),
79 error)) {
80 if (error.Success())
81 return 0;
84 return -1;
87 int RegisterContextKDP_x86_64::DoWriteFPU(lldb::tid_t tid, int flavor,
88 const FPU &fpu) {
89 ProcessSP process_sp(CalculateProcess());
90 if (process_sp) {
91 Status error;
92 if (static_cast<ProcessKDP *>(process_sp.get())
93 ->GetCommunication()
94 .SendRequestWriteRegisters(tid, FPURegSet, &fpu, sizeof(fpu),
95 error)) {
96 if (error.Success())
97 return 0;
100 return -1;
103 int RegisterContextKDP_x86_64::DoWriteEXC(lldb::tid_t tid, int flavor,
104 const EXC &exc) {
105 ProcessSP process_sp(CalculateProcess());
106 if (process_sp) {
107 Status error;
108 if (static_cast<ProcessKDP *>(process_sp.get())
109 ->GetCommunication()
110 .SendRequestWriteRegisters(tid, EXCRegSet, &exc, sizeof(exc),
111 error)) {
112 if (error.Success())
113 return 0;
116 return -1;