File tree Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -365,6 +365,15 @@ class Language : public PluginInterface {
365
365
return false ;
366
366
}
367
367
368
+ // / Returns a boolean indicating whether two symbol contexts are equal for the
369
+ // / purposes of frame comparison. If the plugin has no opinion, it should
370
+ // / return nullopt.
371
+ virtual std::optional<bool >
372
+ AreEqualForFrameComparison (const SymbolContext &sc1,
373
+ const SymbolContext &sc2) const {
374
+ return {};
375
+ }
376
+
368
377
// / Returns true if this Language supports exception breakpoints on throw via
369
378
// / a corresponding LanguageRuntime plugin.
370
379
virtual bool SupportsExceptionBreakpointsOnThrow () const { return false ; }
Original file line number Diff line number Diff line change 11
11
#include " lldb/Symbol/CompileUnit.h"
12
12
#include " lldb/Symbol/Function.h"
13
13
#include " lldb/Symbol/LineTable.h"
14
+ #include " lldb/Target/Language.h"
14
15
#include " lldb/Target/Process.h"
15
16
#include " lldb/Target/RegisterContext.h"
16
17
#include " lldb/Target/Target.h"
@@ -101,6 +102,10 @@ void ThreadPlanStepOverRange::SetupAvoidNoDebug(
101
102
102
103
bool ThreadPlanStepOverRange::IsEquivalentContext (
103
104
const SymbolContext &context) {
105
+ if (Language *language = Language::FindPlugin (context.GetLanguage ()))
106
+ if (std::optional<bool > maybe_equivalent =
107
+ language->AreEqualForFrameComparison (context, m_addr_context))
108
+ return *maybe_equivalent;
104
109
// Match as much as is specified in the m_addr_context: This is a fairly
105
110
// loose sanity check. Note, sometimes the target doesn't get filled in so I
106
111
// left out the target check. And sometimes the module comes in as the .o
You can’t perform that action at this time.
0 commit comments