clayborg added a comment.

So made a "sbt" command in a Python module as a way to get a backtrace when our 
backtracing fails because Android almost never makes it back to the first frame 
for any stacks. This code just grabs the current SP, looks up the memory region 
using the SP, and then it uses this as the address range (current SP back to 
the base of the stack) to scan for any pointers with an address aligned address 
that falls into executable sections. What it doesn't do, is to try and backup 
one instruction from the potential RA values to see if there is a branch to the 
current function. This avoids having to know anything about stack parameter 
sizes and just scan the stack for all executable memory region pointers, and 
then ask each architecture to backup one instruction from each proposed RA and 
see if there is a function call to the current function. For ARM this is easy: 
backup by 4 for ARM and 2 or 4 for Thumb and see if there is a branch and link. 
For x64, it would be trickier, but it might be as easy as backup up by 1 + 
address size and looking for a callq. If we can successfully do this, we could 
really improve stack backtracing for all architectures and OSs. Thoughts?


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

https://reviews.llvm.org/D66638



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

Reply via email to