[HEADSUP] Please try to build your packages for 64 bit

Corinna Vinschen corinna-cygwin@cygwin.com
Fri Apr 19 18:51:00 GMT 2013


Hi Achim,

On Apr 19 20:00, Achim Gratz wrote:
> Corinna Vinschen writes:
> > the 64 bit Cygwin seems to be quite stable now.  We're still suffering
> > from a gcc problem which seems to affect C++ inline methods using
> > templates, so some C++ packages might not be buildable yet(*), but other
> > than that it looks pretty good.
> 
> I'll update my 64bit installation over the weekend and build my
> packages.  While upx builds and works fine with 64bit, it doesn't handle
> the PE+ executable format, so it is unfortunately useless for 64bit
> executables.  Is there any documentation how this format differs from
> the PE format so that I might look into adding support for 64bit when
> time permits?

Strange that nobody did it so far.  It should be rather trivial,
actually.  The only noticable difference between PE and PE+ are a few
different values in some of the header fields and the slightly different
layout of the IMAGE_OPTIONAL_HEADER structure.

For the different values in IMAGE_FILE_HEADER(*), note the fields

- Machine (IMAGE_FILE_MACHINE_AMD64 instead of IMAGE_FILE_MACHINE_I386)
- Characteristics (No IMAGE_FILE_32BIT_MACHINE flag)

in IMAGE_OPTIONAL_HEADER(**), see

- Magic (IMAGE_NT_OPTIONAL_HDR64_MAGIC vs. IMAGE_NT_OPTIONAL_HDR32_MAGIC)
- SizeOfHeaders (don't know the right values off the top of my head here)

As for the different IMAGE_OPTIONAL_HEADER structure layout:

- BaseOfData has been removed
- ImageBase, SizeOfStackReserve, SizeOfStackCommit, SizeOfHeapReserve,
  and SizeOfHeapCommit are 8 byte values now.

I don't know how upx works under the hood, but I assume you also need
the unpacker code in 64 bit.  If it's not written in assembler, the
32 bit code should more or less do the right thing already.


Corinna


(*) http://msdn.microsoft.com/en-us/library/windows/desktop/ms680313%28v=vs.85%29.aspx
(**) http://msdn.microsoft.com/en-us/library/windows/desktop/ms680339%28v=vs.85%29.aspx

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat



More information about the Cygwin-apps mailing list