PE+ and new COFF format for x86_64 target for XP64 and Vista binaries

Kai Tietz Kai.Tietz@onevision.com
Fri Sep 8 10:23:00 GMT 2006


Hi Pedro,

Thank you for your sugestions.

Yes you are right, that the major changes are the sizes for .idata$ for 
the changed thumb sizes. The reason for the duplication of the code is 
that otherwise pe and pe+ won't be linkable into one ld binary reasoned by 
global method names and variables. It is more the question about 
supporting both targets together or not.
The other solution would be to make out of pep_dll.c a stub file simply 
defining the different global names and pack the implementation within 
pe_dll.c. This solution leads to a macro desert code, but it would help.

Regards,
i.A. Kai Tietz




Pedro Alves <pedro_alves@portugalmail.pt> 
Sent by: binutils-owner@sourceware.org
08.09.2006 11:50

To
Kai Tietz <Kai.Tietz@onevision.com>
cc
binutils@sourceware.org
Subject
Re: PE+ and new COFF format for x86_64 target for XP64 and Vista  binaries






Hi Kai,

I'm no binutils maintainer, but I got a few sugestions.

Kai Tietz wrote:
> Hallo,
> 
> This is a port of binutils-2.17 for COFF-format x86-64 (AMD64) and the 
PE+ 
> for Windows XP64 and Vista EXE/DLL. The target is named 
x86_64-pc-mingw64. 

To get this into binutils, you will need to forward port your changes
to the current version in CVS. The 2.17 branch should only take
important bug fixes.


> I enabled windres and dlltool for this target. For the tool objdump the 
> processing and printing methods for DLL-imports are adjusted (they are 
now 
> 8 bytes long :( )
> 


> I made a copy of the pe_dll(.c&.h) as pep_dll(.c&.h) to minimize 
> intersections. 

Looking and diffing at the pep_dll.{c|h} and pep.em files, I notice that 
the changes related to pe_dll.{c|h} and pe.em, excluding the pe_* to
pep_* renamings, could be minimized to just a few places.
We should avoid duplicating files this size. I haven't looked at the 
other parts of the patch, but possibly, the same could apply.

>May these files can be merged.
> 

I would say, yes please.


Hope this helps,
Cheers,
Pedro Alves


> In the "include/coff/external.h" I introduced the proper PE+ external 
> aouthdr structure without the data_start member. Because this 
non-existing 
> member breaks the
> size of the PEPAOUT structure in include/coff/pe.h.
> 
> For the bfd/pexxigen.c template I used the pex64 name alias for 
> generation.
> 
> I added the following new files:
>         bfd/coff-x86_64.c
>         bfd/pe-x86_64.c
>         bfd/pei-x86_64.c
>         gas/config/te-pep.h
>         include/coff/x86_54.h
>         ld/pep_dll.c
>         ld/pep_dll.h
>         ld/emulparams/i386pep.sh
>         ld/emultempl/pep.em
>         ld/scripttempl/pep.sc
> 
> 
> I tested the ld of this target by MSVC object-files and by (a patched) 
gcc 
> object-files (using this gas) linking against MS-Runtime-libraries.
> 
> i.A. Kai Tietz
> 





More information about the Binutils mailing list