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
HISTORY
The return_address
() function first
appeared in NetBSD 6.0.
AUTHORS
David Young <dyoung@NetBSD.org>