This is the mail archive of the cygwin-developers mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: What you have to look for on 64 bit


Hi,

I would like to add some notes and tips about porting for the new
cygwin64 target, too.

First, the options -Wall and -Wextra should be turned on always for
compiling. And the warnings shown should be fixed, or at least looked
at in detail. My experience has shown that a lot of them are
indicating that there might be serious issues.

It is important to understand that cygwin64 and native windows 64-bit
targets are sharing same ABI, beside the size of the type 'long'. The
native version defines 'long' type as a 32-bit wide integer-scalar,
but for cygwin64 we choose to make it 64-bit wide as for most 64-bit
linux, too.

This difference becomes important when you begin to use the native
windows platform headers.  Here it is necessary that you are using
current trunk version of mingw-w64's platform-headers.  Those headers
are capable to handle this ABI-difference for cygwin64 proper.  Those
headers are supporting to translate Win32 ABI in regards of 'long'
type size for cygwin and native Windows 'long'.  E.g ,the platform
type LONG is not identical to 'long' type for cygwin64 target.  So
please use, if you are forced to use Win32 API, the platform
abstraction types instead of the standard C integer-types.

Well, this brings me to a side-note I would like to tell about. Please
avoid to talk about Win64. There is no Win64 API. There is only the
Win32 API.  The Win32 API exists for different architectures.  Two of
them are the Intel-architectures x64, and x86. So please avoid the
term "Win64 API", as it is simply misleading and wrong.

Regards,
Kai


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]