Hello, all. I am trying to find some way for detection of function's entry and exit analyzing binary at runtime. It is possible to use Valgrind (www.valgrind.org) and detect all Basic Blocks (1 entry, multiple exits) that correspond to entry\exit of function.
As far as I understand, at the start of new function according to calling conventions of ARM we have return address in LR (r14). And if I will save LR at some place and then compare the address for each BB with saved LR I can find return from function. And my main question is it possible to rely on this fact when compiling with gcc and different levels of optimizations? Is it possible to generate some straightforward heuristic to detect this evens (with\without debug info)? Thank you in advance for any suggestions! -- Best Regards, Vasily