This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Inconsistency between winnt.h header in /usr/include/w32api and the one supplied with the Microsoft SDK
- From: Erik van der Kouwe <vdkouwe at cs dot vu dot nl>
- To: cygwin at cygwin dot com
- Date: Wed, 28 Sep 2011 09:40:40 +0200
- Subject: Inconsistency between winnt.h header in /usr/include/w32api and the one supplied with the Microsoft SDK
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