Dear all,

I found that the definition of the IMAGE_RUNTIME_FUNCTION_ENTRY structure differs between the winnt.h header supplied with Cygwin and the one supplied from the Microsoft SDK (v7.1).

Cygwin gives me this in /usr/include/w32api/winnt.h:



typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
        DWORD BeginAddress;
        DWORD EndAddress;
        PVOID ExceptionHandler;
        PVOID HandlerData;
        DWORD PrologEndAddress;
} IMAGE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_RUNTIME_FUNCTION_ENTRY;



In "C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\WinNT.h", on the other hand, I find:



typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
    DWORD BeginAddress;
    DWORD EndAddress;
    DWORD UnwindInfoAddress;
} _IMAGE_RUNTIME_FUNCTION_ENTRY, *_PIMAGE_RUNTIME_FUNCTION_ENTRY;

...

typedef  _IMAGE_RUNTIME_FUNCTION_ENTRY  IMAGE_RUNTIME_FUNCTION_ENTRY;
typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY;



Clearly, these definitions are incompatible. Binary dumping of the .pdata section of a PE image strongly suggests that the Windows SDK is correct on this one.

Any idea where Cygwin's version came from? Should it be corrected/could you correct it? And while it hasn't been corrected, is there some easy way to use the SDK's version of the headers or should I just copy the definition?

With kind regards,
Erik

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply via email to