From 7dc7771cd58ee9079a035be5e445c69ec1bba808 Mon Sep 17 00:00:00 2001 From: Ewan Crawford Date: Thu, 10 Sep 2015 10:08:48 +0000 Subject: New RenderScript command to break on all kernels Patch adds a command to RenderScript plugin allowing users to automatically set breakpoints on every RS kernel. Command syntax is 'language renderscript kernel breakpoint all .' Enable sets breakpoints on all currently loaded kernels, and any kernels which will be loaded in future. Disable results in breakpoints no longer being set on loaded kernels, but doesn't affect existing breakpoints. Current command 'language renderscript kernel breakpoint' is changed to 'language renderscript kernel breakpoint set' Reviewed by: clayborg, jingham Subscribers: lldb-commits, ADodds, domipheus Differential Revision: http://reviews.llvm.org/D12728 llvm-svn: 247262 --- .../RenderScriptRuntime/RenderScriptRuntime.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h') diff --git a/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h b/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h index 755d33da88d..7b9f6cf24ee 100644 --- a/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h +++ b/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h @@ -200,6 +200,8 @@ class RenderScriptRuntime : public lldb_private::CPPLanguageRuntime void AttemptBreakpointAtKernelName(Stream &strm, const char *name, Error &error, lldb::TargetSP target); + void SetBreakAllKernels(bool do_break, lldb::TargetSP target); + void Status(Stream &strm) const; virtual size_t GetAlternateManglings(const ConstString &mangled, std::vector &alternates) { @@ -213,10 +215,20 @@ class RenderScriptRuntime : public lldb_private::CPPLanguageRuntime void Initiate(); protected: + + void InitSearchFilter(lldb::TargetSP target) + { + if (!m_filtersp) + m_filtersp.reset(new SearchFilterForUnconstrainedSearches(target)); + } void FixupScriptDetails(lldb_renderscript::RSModuleDescriptorSP rsmodule_sp); void LoadRuntimeHooks(lldb::ModuleSP module, ModuleKind kind); + + lldb::BreakpointSP CreateKernelBreakpoint(const ConstString& name); + + void BreakOnModuleKernels(const lldb_renderscript::RSModuleDescriptorSP rsmodule_sp); struct RuntimeHook; typedef void (RenderScriptRuntime::*CaptureStateFn)(RuntimeHook* hook_info, ExecutionContext &context); // Please do this! @@ -257,8 +269,11 @@ class RenderScriptRuntime : public lldb_private::CPPLanguageRuntime std::map m_scriptMappings; std::map m_runtimeHooks; + lldb::SearchFilterSP m_filtersp; // Needed to create breakpoints through Target API + bool m_initiated; bool m_debuggerPresentFlagged; + bool m_breakAllKernels; static const HookDefn s_runtimeHookDefns[]; static const size_t s_runtimeHookCount; -- cgit v1.2.3