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 lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits