The .pdata section contains an array of function table entries used for exception handling and is pointed to by the exception table entry in the image data directory. The entries must be sorted according to the function addresses (the first field in each structure) before being emitted into the final image. The target platform determines which of the three variations described below is used.
For 32-bit MIPS and Alpha images the following structure is used:
Offset | Size | Field | Description |
0 | 4 | Begin Address | Virtual address of the corresponding function. |
4 | 4 | End Address | Virtual address of the end of the function. |
8 | 4 | Exception Handler | Pointer to the exception handler to be executed. |
12 | 4 | Handler Data | Pointer to additional information to be passed to the handler. |
16 | 4 | Prolog End Address | Virtual address of the end of the function’s prolog. |
For the ARM, PowerPC, SH3 and SH4 WindowsCE platforms, this function table entry format is used:
Offset | Size | Field | Description |
0 | 4 | Begin Address | Virtual address of the corresponding function. |
4 | 8 bits | Prolog Length | Number of instructions in the function’s 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. |
Finally, for ALPHA64 the pdata entry format is as follows:
Offset | Size | Field | Description |
0 | 8 | Begin Address | Virtual address of the corresponding function. |
8 | 8 | End Address | Virtual address of the end of the function. |
16 | 8 | Exception Handler | Pointer to the exception handler to be executed. |
24 | 8 | Handler Data | Pointer to additional information to be passed to the handler. |
32 | 8 | Prolog End Address | Virtual address of the end of the function’s prolog. |