This page was produced by an automated import process, and may have formatting errors; feel free to fix.

Functions to Access Frame Data

These functions provide access to key registers and arguments in the stack frame.

Architecture Function: ''CORE_ADDR'' unwind_pc ''(struct gdbarch *''gdbarch'', struct frame_info *''next_frame'')''

This function is given a pointer to the NEXT stack frame (see All About Stack Frames, for how frames are represented) and returns the value of the program counter in the PREVIOUS frame (i.e. the frame of the function that called THIS one). This is commonly referred to as the return address.

The implementation, which must be frame agnostic (work with any frame), is typically no more than:

ULONGEST pc;
pc = frame_unwind_register_unsigned (next_frame, ''ARCH''_PC_REGNUM);
return gdbarch_addr_bits_remove (gdbarch, pc);
Architecture Function: ''CORE_ADDR'' unwind_sp ''(struct gdbarch *''gdbarch'', struct frame_info *''next_frame'')''

This function is given a pointer to the NEXT stack frame (see All About Stack Frames for how frames are represented) and returns the value of the stack pointer in the PREVIOUS frame (i.e. the frame of the function that called THIS one).

The implementation, which must be frame agnostic (work with any frame), is typically no more than:

ULONGEST sp;
sp = frame_unwind_register_unsigned (next_frame, ''ARCH''_SP_REGNUM);
return gdbarch_addr_bits_remove (gdbarch, sp);
Architecture Function: ''int'' frame_num_args ''(struct gdbarch *''gdbarch'', struct frame_info *''this_frame'')''

This function is given a pointer to THIS stack frame (see All About Stack Frames for how frames are represented), and returns the number of arguments that are being passed, or -1 if not known.

The default value is NULL (undefined), in which case the number of arguments passed on any stack frame is always unknown. For many architectures this will be a suitable default.

None: Internals Functions-to-Access-Frame-Data (last edited 2013-08-20 23:40:47 by StanShebs)

All content (C) 2008 Free Software Foundation. For terms of use, redistribution, and modification, please see the WikiLicense page.