These functions may be used to get information about the callers of a function.
0yields the return address of the current function, a value of
1yields the return address of the caller of the current function, and so forth. The level argument must be a constant integer. On some machines it may be impossible to determine the return address of any function other than the current one; in such cases, or when the top of the stack has been reached, this function will return
0. This function should only be used with a non-zero argument for debugging purposes.
__builtin_return_address, but it returns the address of the function frame rather than the return address of the function. Calling
__builtin_frame_addresswith a value of
0yields the frame address of the current function, a value of
1yields the frame address of the caller of the current function, and so forth. The frame is the area on the stack which holds local variables and saved registers. The frame address is normally the address of the first word pushed on to the stack by the function. However, the exact definition depends upon the processor and the calling convention. If the processor has a dedicated frame pointer register, and the function has a frame, then
__builtin_frame_addresswill return the value of the frame pointer register. The caveats that apply to
__builtin_return_addressapply to this function as well.