Hi all, Can this "STARTING_FRAME_OFFSET" macro be defined to be a non-constant value ( changes with the "current_function_args_size")?
As the target process has "FP+offset" with postive "offset"( stack grows upward, and parameters in stack grows downward), for example, call foo( arg1, arg2, arg3,arg4), after foo's prologue, the stack is like this: <---- low address |--------------------------------| | Incoming arg4 | <-------------FP |--------------------------------| | Incoming arg3 | |--------------------------------| | Incoming arg2 | |--------------------------------| | Incoming arg1 | <---------------ARG |--------------------------------| | return PC of foo | |--------------------------------| | saved regs | |--------------------------------| | old FP | |--------------------------------| | local var0 | |--------------------------------| <---- high address "STARTING_FRAME_OFFSET" means the offset between FP and the first local variable, in this situation, STARTING_FRAME_OFFSE = current_function_args_size+ size(PC in stack) + size(saved regs) + size(old FP). so, "STARTING_FRAME_OFFSET" depends on the "current_function_args_size", which is a GCC internal variable. Is this stack layout suitable? Thanks! redriver