Re: [lldb-dev] A problem with the arm64 unwind plans I'm looking at

2016-11-09 Thread Jason Molenda via lldb-dev
I like that idea. A bunch of other work just landed on my desk so it might be a bit before I do it, but I'll see how that patch looks. > On Nov 9, 2016, at 3:54 AM, Tamas Berghammer wrote: > > Based on your comments I have one more idea for a good heuristic. What if we > detect a dynamic bran

Re: [lldb-dev] A problem with the arm64 unwind plans I'm looking at

2016-11-09 Thread Tamas Berghammer via lldb-dev
Based on your comments I have one more idea for a good heuristic. What if we detect a dynamic branch (e.g. "br ", "tbb ...", etc...) and store the register state for that place. Then when we find a block with no unwind info for the first instruction then we use the one we saved for the dynamic bran

Re: [lldb-dev] A problem with the arm64 unwind plans I'm looking at

2016-11-08 Thread Jason Molenda via lldb-dev
Yeah I was thinking that maybe if we spot an epilogue instruction (ret, b ), and the next instruction doesn't have a reinstated register context, we could backtrack to the initial register context of this block of instructions (and if it's not the beginning of the function), re-instate that reg

Re: [lldb-dev] A problem with the arm64 unwind plans I'm looking at

2016-11-07 Thread Tamas Berghammer via lldb-dev
Hi Jason, I thought about this situation when implemented the original branch following code and haven't been able to come up with a really good solution. My only idea is the same what you mentioned. We should try to recognize all unconditional branches and returns (but not calls) and then if the

[lldb-dev] A problem with the arm64 unwind plans I'm looking at

2016-11-04 Thread Jason Molenda via lldb-dev
Hi Tamas & Pavel, I thought you might have some ideas so I wanted to show a problem I'm looking at right now. The arm64 instruction unwinder forwards the unwind state based on branch instructions within the function. So if one block of code ends in an epilogue, the next instruction (which is p