ARM calling conventions generated in gcc with different optimizations

2013-09-23 Thread Vasily Golubev
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


Re: ARM calling conventions generated in gcc with different optimizations

2013-09-23 Thread Vasily Golubev
Thank you a lot for your answer, Mr. Radhakrishnan!

I think it was my mistake to use phrase "I will save LR at some
place"... I mean I can catch the first instruction of any function
precisely. And save LR value at that time to my local storage. And I
also can catch the first instruction after exit from any function
precisely. And will compare the address of this instruction with
stored LR.

So, is it possible for gcc to generate code that will not save return
address in LR before some call on ARM? Or it is forbidden?

Vasily

On Mon, Sep 23, 2013 at 7:07 PM, Ramana Radhakrishnan
 wrote:
>> And my main question is it possible to rely on this fact when
>> compiling with gcc and different levels of optimizations?
>
> No it is not , the compiler (especially trunk) is free to use LR as a
> temporary after epilogue has been generated at higher optimization
> levels.
>
>
>> Is it
>> possible to generate some straightforward heuristic to detect this
>> evens (with\without debug info)?
>
> With debug information you could in theory work this out but not
> without it especially if LR were used as a temporary.
>
> regards
> Ramana
>
>
>>
>> Thank you in advance for any suggestions!
>>
>> --
>> Best Regards,
>> Vasily



-- 
Best Regards,
Vasily