Inconsistency between winnt.h header in /usr/include/w32api and the one supplied with the Microsoft SDK

Erik van der Kouwe vdkouwe@cs.vu.nl
Thu Sep 29 13:56:00 GMT 2011


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



More information about the Cygwin mailing list