ARM pdata Structures

The Microsoft Common Object File Format (COFF) specifies a .pdata section that contains an array of function table entries for exception handling. The exception table entry points to the .pdata section in the image data directory. The ARM Calling Sequence Specification supports a PDATA structure, _IMAGE_CE_RUNTIME_FUNCTION_ENTRY, to aid in stack walking at run-time. This structure assists with debugging and exception processing.

The following table shows the function-table entry format used for the ARM, MIPS and SH-4 platforms.

Offset Size Field Description
0 4 Begin Address Virtual address of the corresponding function.
4 8 bits Prolog Length Number of instructions in the functions prolog.
4 22 bits Function Length Number of instructions in the function.
4 1 bit 32-bit Flag Set if the function is comprised of 32-bit instructions, cleared for a 16-bit function.
4 1 bit Exception Flag Set if an exception handler exists for the function.

In the event that the ExceptionFlag member of PDATA is set, or the FuncLen member is set to zero, an additional PDATA_EH structure precedes the function in the .text section. The function uses PDATA_EH whenever the function has an associated exception handler or handler data.

In most cases, PDATA structure occupies only eight bytes per function. For functions that have an exception handler, the PDATA_EH structure requires an additional eight bytes.

The exception-handling data record and the prolog and function length record are both guaranteed to be 4-byte aligned. This implies that any function that is associated with one or ore of these records is 4-byte aligned.

See Also

ARM Calling Sequence Specification | What's New for the ARM Compiler | ARM Registers | ARM Stack Frame Layout | ARM Parameter Passing | ARM Return Values | ARM Prolog and Epilog | ARM Assembler Macros | _IMAGE_CE_RUNTIME_FUNCTION_ENTRY

 Last updated on Thursday, April 08, 2004

© 1992-2003 Microsoft Corporation. All rights reserved.