[PATCH 1/5] ntdll: Test exception codes on x86-64.
Zebediah Figura
z.figura12 at gmail.com
Mon Mar 12 22:14:15 CDT 2018
On 12/03/18 22:00, Dmitry Timoshkov wrote:
> Zebediah Figura <z.figura12 at gmail.com> wrote:
>
>> +typedef enum _UNWIND_OP_CODES
>> +{
>> + UWOP_PUSH_NONVOL = 0,
>> + UWOP_ALLOC_LARGE,
>> + UWOP_ALLOC_SMALL,
>> + UWOP_SET_FPREG,
>> + UWOP_SAVE_NONVOL,
>> + UWOP_SAVE_NONVOL_FAR,
>> + UWOP_SAVE_XMM128,
>> + UWOP_SAVE_XMM128_FAR,
>> + UWOP_PUSH_MACHFRAME
>> +} UNWIND_CODE_OPS;
>
> This typedef is confusing (different tag and type names) and not used.
>
>> +typedef union _UNWIND_CODE
>> +{
>> + struct
>> + {
>> + BYTE CodeOffset;
>> + BYTE UnwindOp : 4;
>> + BYTE OpInfo : 4;
>> + } u;
>
> 'u' is confusing as an embedded structure name.
>
>> + USHORT FrameOffset;
>> +} UNWIND_CODE, *PUNWIND_CODE;
>
> PUNWIND_CODE is not used.
>
>> +typedef struct _UNWIND_INFO
>> +{
>> + BYTE Version : 3;
>> + BYTE Flags : 5;
>> + BYTE SizeOfProlog;
>> + BYTE CountOfCodes;
>> + BYTE FrameRegister : 4;
>> + BYTE FrameOffset : 4;
>> + UNWIND_CODE UnwindCode[1]; /* actually CountOfCodes (aligned) */
>> +/*
>> + * union
>> + * {
>> + * OPTIONAL ULONG ExceptionHandler;
>> + * OPTIONAL ULONG FunctionEntry;
>> + * };
>> + * OPTIONAL ULONG ExceptionData[];
>> + */
>> +} UNWIND_INFO, *PUNWIND_INFO;
>
> PUNWIND_INFO is not used.
Thanks for the comments; I didn't realize these weren't used.
>
>> + buf[16] = 0xff;
>> + buf[17] = 0x25;
>> + *(ULONG *)&buf[18] = 0;
>> + *(void **)&buf[22] = handler;
>
> It would be helpful to provide an assembler mnemonic for the generated
> code above in the comment (/* jmp near */ in this case).
>
Will do, thanks.
More information about the wine-devel
mailing list