1*18a9135dSAdrian McCarthy //===-- ProcessWindows.cpp --------------------------------------*- C++ -*-===// 2*18a9135dSAdrian McCarthy // 3*18a9135dSAdrian McCarthy // The LLVM Compiler Infrastructure 4*18a9135dSAdrian McCarthy // 5*18a9135dSAdrian McCarthy // This file is distributed under the University of Illinois Open Source 6*18a9135dSAdrian McCarthy // License. See LICENSE.TXT for details. 7*18a9135dSAdrian McCarthy // 8*18a9135dSAdrian McCarthy //===----------------------------------------------------------------------===// 9*18a9135dSAdrian McCarthy 10*18a9135dSAdrian McCarthy #include "ProcessWindows.h" 11*18a9135dSAdrian McCarthy 12*18a9135dSAdrian McCarthy // Other libraries and framework includes 13*18a9135dSAdrian McCarthy #include "lldb/Core/Module.h" 14*18a9135dSAdrian McCarthy #include "lldb/Core/ModuleSpec.h" 15*18a9135dSAdrian McCarthy #include "lldb/Core/PluginManager.h" 16*18a9135dSAdrian McCarthy #include "lldb/Core/Section.h" 17*18a9135dSAdrian McCarthy #include "lldb/Core/State.h" 18*18a9135dSAdrian McCarthy #include "lldb/Target/DynamicLoader.h" 19*18a9135dSAdrian McCarthy #include "lldb/Target/MemoryRegionInfo.h" 20*18a9135dSAdrian McCarthy #include "lldb/Target/Target.h" 21*18a9135dSAdrian McCarthy 22*18a9135dSAdrian McCarthy using namespace lldb; 23*18a9135dSAdrian McCarthy using namespace lldb_private; 24*18a9135dSAdrian McCarthy 25*18a9135dSAdrian McCarthy namespace lldb_private 26*18a9135dSAdrian McCarthy { 27*18a9135dSAdrian McCarthy 28*18a9135dSAdrian McCarthy //------------------------------------------------------------------------------ 29*18a9135dSAdrian McCarthy // Constructors and destructors. 30*18a9135dSAdrian McCarthy 31*18a9135dSAdrian McCarthy ProcessWindows::ProcessWindows(lldb::TargetSP target_sp, Listener &listener) 32*18a9135dSAdrian McCarthy : lldb_private::Process(target_sp, listener) 33*18a9135dSAdrian McCarthy { 34*18a9135dSAdrian McCarthy } 35*18a9135dSAdrian McCarthy 36*18a9135dSAdrian McCarthy ProcessWindows::~ProcessWindows() 37*18a9135dSAdrian McCarthy { 38*18a9135dSAdrian McCarthy } 39*18a9135dSAdrian McCarthy 40*18a9135dSAdrian McCarthy size_t 41*18a9135dSAdrian McCarthy ProcessWindows::GetSTDOUT(char *buf, size_t buf_size, Error &error) 42*18a9135dSAdrian McCarthy { 43*18a9135dSAdrian McCarthy error.SetErrorString("GetSTDOUT unsupported on Windows"); 44*18a9135dSAdrian McCarthy return 0; 45*18a9135dSAdrian McCarthy } 46*18a9135dSAdrian McCarthy 47*18a9135dSAdrian McCarthy size_t 48*18a9135dSAdrian McCarthy ProcessWindows::GetSTDERR(char *buf, size_t buf_size, Error &error) 49*18a9135dSAdrian McCarthy { 50*18a9135dSAdrian McCarthy error.SetErrorString("GetSTDERR unsupported on Windows"); 51*18a9135dSAdrian McCarthy return 0; 52*18a9135dSAdrian McCarthy } 53*18a9135dSAdrian McCarthy 54*18a9135dSAdrian McCarthy size_t 55*18a9135dSAdrian McCarthy ProcessWindows::PutSTDIN(const char *buf, size_t buf_size, Error &error) 56*18a9135dSAdrian McCarthy { 57*18a9135dSAdrian McCarthy error.SetErrorString("PutSTDIN unsupported on Windows"); 58*18a9135dSAdrian McCarthy return 0; 59*18a9135dSAdrian McCarthy } 60*18a9135dSAdrian McCarthy 61*18a9135dSAdrian McCarthy //------------------------------------------------------------------------------ 62*18a9135dSAdrian McCarthy // ProcessInterface protocol. 63*18a9135dSAdrian McCarthy 64*18a9135dSAdrian McCarthy 65*18a9135dSAdrian McCarthy lldb::addr_t 66*18a9135dSAdrian McCarthy ProcessWindows::GetImageInfoAddress() 67*18a9135dSAdrian McCarthy { 68*18a9135dSAdrian McCarthy Target &target = GetTarget(); 69*18a9135dSAdrian McCarthy ObjectFile *obj_file = target.GetExecutableModule()->GetObjectFile(); 70*18a9135dSAdrian McCarthy Address addr = obj_file->GetImageInfoAddress(&target); 71*18a9135dSAdrian McCarthy if (addr.IsValid()) 72*18a9135dSAdrian McCarthy return addr.GetLoadAddress(&target); 73*18a9135dSAdrian McCarthy else 74*18a9135dSAdrian McCarthy return LLDB_INVALID_ADDRESS; 75*18a9135dSAdrian McCarthy } 76*18a9135dSAdrian McCarthy 77*18a9135dSAdrian McCarthy } 78