return_address(9) - NetBSD Manual Pages

Command: Section: Arch: Collection:  
RETURN_ADDRESS(9)    NetBSD/i386 Kernel Developer's Manual   RETURN_ADDRESS(9)


NAME
return_address -- return address from call stack
SYNOPSIS
#include <i386/return.h> void * return_address(unsigned int level);
DESCRIPTION
The return_address() function evaluates to the first return address on the call stack if level equals 0, or else to the return address for the stack frame level frames down. This function is intended to be called by diagnostic code to record the call stack. A special fault handler stops return_address() from crashing the kernel by examining a non-existent or corrupt stack frame. Kernel compilation options affect both the ability of return_address() to locate return addresses on the stack, and the programmer's ability to interpret the addresses. The compiler may optimize away the stack frame pointers that return_address() depends on. To use return_address() effecively, try a kernel configuration option such as makeoptions DEBUG="-g -fno-omit-frame-pointer \ -fno-optimize-sibling-calls -O0"
RETURN VALUES
The return_address() function returns the requested return address, or NULL if it cannot dissect the call stack.
CODE REFERENCES
sys/arch/i386/i386/copy.S, sys/arch/i386/include/return.h
REFERENCES
config(5)
HISTORY
The return_address() function first appeared in NetBSD 6.0.
AUTHORS
David Young <dyoung@NetBSD.org> NetBSD 9.0 May 5, 2010 NetBSD 9.0
Powered by man-cgi 1.15, Panagiotis Christias
Modified for NetBSD by Kimmo Suominen