jasonmolenda added a comment.
In D66250#1633455 <https://reviews.llvm.org/D66250#1633455>, @clayborg wrote:
> Why are we not just using ObjectFileJIT? I am guessing these breakpoint
> expressions create one of these by compiling the breakpoint expression and
> JIT'ing it just like any other expression. If this is the case, then why do
> we need to create a ObjectFileTrampoline? Seems like we could add .cfi
> directives to the assembly we use for the breakpoint condition function so
> that we can unwind out of it?
I hadn't looked at ObjectFileJIT, we should look at whether we can that
existing plugin. I agree they're conceptually doing the same thing, but one
difference is that the trampoline is only a function, it's not a mach-o binary
that we've written into memory. I think it would be possible to represent the
trampoline unwind plan in eh_frame using a DW_OP_addr encoding for the caller's
pc value, but we would have to manually write out the bytes of the eh_frame
header, CIE and FDE entries, then the DW_OP_addr. I think it's easier to stuff
in an UnwindPlan with this unwind rule added manually. Using the existing
eh_frame format is laudable but I think it hand-writing the binary format into
memory and then reading it back out again would be less maintainable IMO.
================
Comment at: lldb/source/Commands/CommandObjectTarget.cpp:3561
+ if (UnwindPlanSP plan_sp = func_unwinders_sp->GetTrampolineUnwindPlan())
{
+ result.GetOutputStream().Printf("Trampoline UnwindPlan:\n");
----------------
mib wrote:
> shafik wrote:
> > Curious I noticed you stuck this in the middle someplace, does the order
> > matter?
> Not in the `CommandObjectTarget` class but it does in the `FuncUnwinders`.
Yeah, in FuncUnwinders we don't want to give one of the traditional unwind
techniques to try to provide an UnwindPlan (e.g. assembly language instruction
scanning); they will not succeed. We must use an unwind plan that hardcodes
the return address.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D66250/new/
https://reviews.llvm.org/D66250
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits