[Lldb-commits] [PATCH] D96839: Add a callout to the LanguageRuntime to override the normal UnwindPlan used for a frame
Greg Clayton via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Feb 17 13:15:26 PST 2021
clayborg added a comment.
Can each real stack frame inject N frames in the middle of a stack frame for these asynchronous functions? Or is this like the libdispatch stuff that show more frames at the end of a normal stack trace? Can you attach some sample backtraces with some annotations?
================
Comment at: lldb/include/lldb/Target/LanguageRuntime.h:21
#include "lldb/Target/ExecutionContextScope.h"
+#include "lldb/Target/RegisterContext.h"
#include "lldb/Target/Runtime.h"
----------------
I don't think we need this in the header file as we only use pointers to a RegisterContext. So move this to the .cpp file?
================
Comment at: lldb/include/lldb/Target/LanguageRuntime.h:188
+ GetAsyncedFrameUnwindPlan(lldb_private::Thread &thread,
+ lldb_private::RegisterContext *regctx);
+
----------------
Any reason we are passing in the register context and the thread instead of a stack frame? a stack frame has access to the register context and to the thread it belongs to. Or is this register context just a raw register context that was extracted from somewhere in memory?
================
Comment at: lldb/include/lldb/Target/LanguageRuntime.h:192
+ virtual lldb::UnwindPlanSP
+ GetAsyncedFrameForThisLanguage(lldb_private::Thread &thread,
+ lldb_private::RegisterContext *regctx) {
----------------
What does "ThisLanguage" this mean? Is it the language of the stack frame that owns "regctx"? Should we pass in the current stack frame instead of a register context?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96839/new/
https://reviews.llvm.org/D96839
More information about the lldb-commits
mailing list