summaryrefslogtreecommitdiff
path: root/include/lldb/Target/Process.h
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-01-19 10:06:29 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-01-19 10:06:29 +0000
commit94994d372d014ce4c8758b9605d63fae651bd8aa (patch)
tree51c0b708bd59f205d6b35cb2a8c24d62f0c33d77 /include/lldb/Target/Process.h
parent39be7ce23363d12ae3e49aeb1fdb2bfeb892e836 (diff)
Notes
Diffstat (limited to 'include/lldb/Target/Process.h')
-rw-r--r--include/lldb/Target/Process.h52
1 files changed, 42 insertions, 10 deletions
diff --git a/include/lldb/Target/Process.h b/include/lldb/Target/Process.h
index 66ac5a692522..be72b9a9c747 100644
--- a/include/lldb/Target/Process.h
+++ b/include/lldb/Target/Process.h
@@ -12,10 +12,8 @@
#include "lldb/Host/Config.h"
-// C Includes
#include <limits.h>
-// C++ Includes
#include <chrono>
#include <list>
#include <memory>
@@ -24,13 +22,8 @@
#include <unordered_set>
#include <vector>
-// Other libraries and framework includes
-// Project includes
#include "lldb/Breakpoint/BreakpointSiteList.h"
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/Communication.h"
-#include "lldb/Core/Event.h"
-#include "lldb/Core/Listener.h"
#include "lldb/Core/LoadedModuleInfoList.h"
#include "lldb/Core/PluginInterface.h"
#include "lldb/Core/ThreadSafeValue.h"
@@ -47,6 +40,9 @@
#include "lldb/Target/QueueList.h"
#include "lldb/Target/ThreadList.h"
#include "lldb/Utility/ArchSpec.h"
+#include "lldb/Utility/Broadcaster.h"
+#include "lldb/Utility/Event.h"
+#include "lldb/Utility/Listener.h"
#include "lldb/Utility/NameMatches.h"
#include "lldb/Utility/Status.h"
#include "lldb/Utility/StructuredData.h"
@@ -319,7 +315,7 @@ public:
NameMatch process_name_match_type)
: m_match_info(), m_name_match_type(process_name_match_type),
m_match_all_users(false) {
- m_match_info.GetExecutableFile().SetFile(process_name, false,
+ m_match_info.GetExecutableFile().SetFile(process_name,
FileSpec::Style::native);
}
@@ -402,7 +398,8 @@ class ProcessModID {
public:
ProcessModID()
: m_stop_id(0), m_last_natural_stop_id(0), m_resume_id(0), m_memory_id(0),
- m_last_user_expression_resume(0), m_running_user_expression(false) {}
+ m_last_user_expression_resume(0), m_running_user_expression(false),
+ m_running_utility_function(0) {}
ProcessModID(const ProcessModID &rhs)
: m_stop_id(rhs.m_stop_id), m_memory_id(rhs.m_memory_id) {}
@@ -431,6 +428,10 @@ public:
m_last_user_expression_resume = m_resume_id;
}
+ bool IsRunningUtilityFunction() const {
+ return m_running_utility_function > 0;
+ }
+
uint32_t GetStopID() const { return m_stop_id; }
uint32_t GetLastNaturalStopID() const { return m_last_natural_stop_id; }
uint32_t GetMemoryID() const { return m_memory_id; }
@@ -467,6 +468,17 @@ public:
m_running_user_expression--;
}
+ void SetRunningUtilityFunction(bool on) {
+ if (on)
+ m_running_utility_function++;
+ else {
+ assert(m_running_utility_function > 0 &&
+ "Called SetRunningUtilityFunction(false) without calling "
+ "SetRunningUtilityFunction(true) before?");
+ m_running_utility_function--;
+ }
+ }
+
void SetStopEventForLastNaturalStopID(lldb::EventSP event_sp) {
m_last_natural_stop_event = event_sp;
}
@@ -484,6 +496,7 @@ private:
uint32_t m_memory_id;
uint32_t m_last_user_expression_resume;
uint32_t m_running_user_expression;
+ uint32_t m_running_utility_function;
lldb::EventSP m_last_natural_stop_event;
};
@@ -2068,7 +2081,7 @@ public:
/// An error value.
//------------------------------------------------------------------
virtual Status
- GetMemoryRegions(std::vector<lldb::MemoryRegionInfoSP> &region_list);
+ GetMemoryRegions(lldb_private::MemoryRegionInfos &region_list);
virtual Status GetWatchpointSupportInfo(uint32_t &num) {
Status error;
@@ -2554,6 +2567,7 @@ public:
virtual bool StopNoticingNewThreads() { return true; }
void SetRunningUserExpression(bool on);
+ void SetRunningUtilityFunction(bool on);
//------------------------------------------------------------------
// lldb::ExecutionContextScope pure virtual functions
@@ -3225,6 +3239,24 @@ private:
DISALLOW_COPY_AND_ASSIGN(Process);
};
+//------------------------------------------------------------------
+/// RAII guard that should be aquired when an utility function is called within
+/// a given process.
+//------------------------------------------------------------------
+class UtilityFunctionScope {
+ Process *m_process;
+
+public:
+ UtilityFunctionScope(Process *p) : m_process(p) {
+ if (m_process)
+ m_process->SetRunningUtilityFunction(true);
+ }
+ ~UtilityFunctionScope() {
+ if (m_process)
+ m_process->SetRunningUtilityFunction(false);
+ }
+};
+
} // namespace lldb_private
#endif // liblldb_Process_h_