Find out function arguments value from stack pointer
Manavendra Nath Manav
mnm.kernel at gmail.com
Wed Dec 12 05:32:32 EST 2012
On Wed, Dec 12, 2012 at 3:56 PM, Fabio Pozzi <pozzi.fabio at gmail.com> wrote:
>> Why function arguments are stored from offset 12 of SP? Also notice
>> values at offset 0 to 10 are always same, and value at offset 11
>> increases by 20 on each invocation of function foo().
>
> You have to consider that local variables are allocated on the stack,
> thus both i, stackptr and sp are allocated on
> the stack, so if you print all the stack records you will find this
> variables, then the return pointer, the saved frame pointer (if saved)
> and then the function parameters.
> See http://en.wikipedia.org/wiki/Call_stack for a better explanation.
> If you want to access immediately to the function call parameters you
> should start from the frame pointer address (if there's one).
> To play with backtraces you may find useful the backtrace function[1]
> and libraries like libunwind[2] which take care of this details for
> you.
>
> [1] http://tdistler.com/2008/11/15/how-to-print-a-stack-backtrace-programatically-in-linux
> [2] http://www.nongnu.org/libunwind/
>
> --
> Saluti,
> Fabio Pozzi
Thanks Fabio,
You solved a lot of doubts for me. How to get the frame pointer address?
--
Manavendra Nath Manav
More information about the Kernelnewbies
mailing list