diff options
Diffstat (limited to 'lldb/source/Target/Process.cpp')
-rw-r--r-- | lldb/source/Target/Process.cpp | 62 |
1 files changed, 61 insertions, 1 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index 2a76e88f2bb..eb6db2521d5 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -23,6 +23,7 @@ #include "lldb/Core/State.h" #include "lldb/Core/StreamFile.h" #include "lldb/Expression/ClangUserExpression.h" +#include "lldb/Expression/IRDynamicChecks.h" #include "lldb/Host/ConnectionFileDescriptor.h" #include "lldb/Host/Host.h" #include "lldb/Host/HostInfo.h" @@ -33,8 +34,11 @@ #include "lldb/Symbol/Symbol.h" #include "lldb/Target/ABI.h" #include "lldb/Target/DynamicLoader.h" +#include "lldb/Target/InstrumentationRuntime.h" #include "lldb/Target/JITLoader.h" +#include "lldb/Target/JITLoaderList.h" #include "lldb/Target/MemoryHistory.h" +#include "lldb/Target/MemoryRegionInfo.h" #include "lldb/Target/OperatingSystem.h" #include "lldb/Target/LanguageRuntime.h" #include "lldb/Target/CPPLanguageRuntime.h" @@ -48,7 +52,7 @@ #include "lldb/Target/Thread.h" #include "lldb/Target/ThreadPlan.h" #include "lldb/Target/ThreadPlanBase.h" -#include "lldb/Target/InstrumentationRuntime.h" +#include "lldb/Target/UnixSignals.h" #include "Plugins/Process/Utility/InferiorCallPOSIX.h" using namespace lldb; @@ -2083,6 +2087,12 @@ Process::IsPossibleDynamicValue (ValueObject& in_value) return objc_runtime ? objc_runtime->CouldHaveDynamicValue(in_value) : false; } +void +Process::SetDynamicCheckers(DynamicCheckerFunctions *dynamic_checkers) +{ + m_dynamic_checkers_ap.reset(dynamic_checkers); +} + BreakpointSiteList & Process::GetBreakpointSiteList() { @@ -2979,6 +2989,33 @@ Process::ReadModuleFromMemory (const FileSpec& file_spec, return ModuleSP(); } +bool +Process::GetLoadAddressPermissions (lldb::addr_t load_addr, uint32_t &permissions) +{ + MemoryRegionInfo range_info; + permissions = 0; + Error error (GetMemoryRegionInfo (load_addr, range_info)); + if (!error.Success()) + return false; + if (range_info.GetReadable() == MemoryRegionInfo::eDontKnow + || range_info.GetWritable() == MemoryRegionInfo::eDontKnow + || range_info.GetExecutable() == MemoryRegionInfo::eDontKnow) + { + return false; + } + + if (range_info.GetReadable() == MemoryRegionInfo::eYes) + permissions |= lldb::ePermissionsReadable; + + if (range_info.GetWritable() == MemoryRegionInfo::eYes) + permissions |= lldb::ePermissionsWritable; + + if (range_info.GetExecutable() == MemoryRegionInfo::eYes) + permissions |= lldb::ePermissionsExecutable; + + return true; +} + Error Process::EnableWatchpoint (Watchpoint *watchpoint, bool notify) { @@ -3982,6 +4019,20 @@ Process::Signal (int signal) return error; } +void +Process::SetUnixSignals (const UnixSignalsSP &signals_sp) +{ + assert (signals_sp && "null signals_sp"); + m_unix_signals_sp = signals_sp; +} + +UnixSignals & +Process::GetUnixSignals () +{ + assert (m_unix_signals_sp && "null m_unix_signals_sp"); + return *m_unix_signals_sp; +} + lldb::ByteOrder Process::GetByteOrder () const { @@ -6280,6 +6331,15 @@ Process::ClearPreResumeActions () m_pre_resume_actions.clear(); } +ProcessRunLock & +Process::GetRunLock() +{ + if (m_private_state_thread.EqualsThread(Host::GetCurrentThread())) + return m_private_run_lock; + else + return m_public_run_lock; +} + void Process::Flush () { |