Improve instruction emulation based stack unwinding on ARM
- Add and fix the emulation of several instruction.
- Disable frame pointer usage on Android.
- Specify return address register for the unwind plan instead of explicit tracking the value of RA.
- Replace prologue detection heuristics (unreliable in several cases) with a logic to follow the branch instructions and restore the CFI value based on them. The target address for a branch should have the same CFI as the source address (if they are in the same function).
- Handle symbols in ELF files where the symbol size is not specified with calculating their size based on the next symbol (already done in MachO files).
- Fix architecture in FuncUnwinders with filling up the information missing from the object file with the architecture of the target.
- Add code to read register when the value is set to "IsSame" as it means the value of a register in the parent frame is the same as the value in the current frame.
I think you mean "current CFI information" here. The "I" in CFI stands for information, but it's one of those annoying aspects of english where it looks weird without "information" after it. :)