Thread (8 messages) 8 messages, 4 authors, 2012-12-12

Find out function arguments value from stack pointer

From: Fabio Pozzi <hidden>
Date: 2012-12-12 10:26:08

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help