labath added a comment.

In D82378#2109467 <https://reviews.llvm.org/D82378#2109467>, @jankratochvil 
wrote:

> In D82378#2109330 <https://reviews.llvm.org/D82378#2109330>, @labath wrote:
>
> > Now this situation is not actually handled by lldb's "augmenter", so the 
> > example somewhat shaky, but it does show that there are gaps in clang/llvm 
> > modelling of unwind info.
>
>
> Good to know but ... I do not see how is this `stdcall` unwinding bug related 
> to this issue whether to use `.eh_frame` or not - 
> `UnwindAssembly_x86::AugmentUnwindPlanFromCallSite` cannot verify any 
> `.eh_frame` is 100% valid.


It's not related, at least not directly.  I was mainly responding to the claim 
that all (current) compilers produce asynchronous unwind tables. This example 
disproves that (well, one could claim that this is an asynchronous unwind 
table, but that it is an incorrect one, but I don't think that distinction is 
relevant).

And if there's one bug/incompleteness, there could very well be others, so I 
was also alluding to the fact that we might need to have some sort of an 
"augmentation framework" for the forseeable future. However, it could very well 
be the case that we no longer need to augment epilogue data, and if that's the 
case deleting the code for doing that would be great (but for that someone 
would need to investigate the epilogue behavior of different compilers more 
closely).

> 
> 
>> As for the DW_AT_producer idea, the main gotcha I see there is that 
>> eh/debug_frame is supposed to be usable even without the rest of the debug 
>> info.
> 
> Producer is also recorded in `.gnu.build.attributes` which is in the main 
> binary (not in external `.debug` info):

Well... I don't think that's an improvement. :/ This section seems to be 
present only on some flavours of linux (my distro doesn't have it), so one 
cannot even apply it to linux universally, much less other operating systems.  
So, I don't see the reason for changing the current detection algorithm. I 
think that a much more worthwhile use of time would be to check whether even 
need to detect something in the first place.

In D82378#2109924 <https://reviews.llvm.org/D82378#2109924>, @jankratochvil 
wrote:

> I do not understand why the testcase has **two** epilogues.  The 
> `UnwindAssembly_x86::AugmentUnwindPlanFromCallSite()` code tests only 
> beginning and end of CFI, it does not read anything in between.
>  The simplified testcase works the same for me: 
> https://people.redhat.com/jkratoch/D82378.patch


True. The reason I did that was because in the single-epilogue case, we would 
unwind correctly using pretty much any method (e.g. the instruction emulation 
method, which was used before this patch). But you're right that that is not 
important for this patch. I'll use the simplified version.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D82378/new/

https://reviews.llvm.org/D82378



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to