This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
RE: PE+ and new COFF format for x86_64 target for XP64 and Vista binaries
- From: "Phil Lello" <phil dot lello at homecall dot co dot uk>
- To: "'Kai Tietz'" <Kai dot Tietz at onevision dot com>
- Cc: <binutils at sourceware dot org>
- Date: Fri, 8 Sep 2006 18:46:14 +0100
- Subject: RE: PE+ and new COFF format for x86_64 target for XP64 and Vista binaries
Hi Kai,
I notice that there is already some support for PE/PE+ in bfd/peXXigen.c,
which conditionally generates either peigen.c or pepigen.c by substituting
XX with either pe or pep via a sed script.
A similar approach might work here too.
Just my thoughts, I am new to the binutils source code.
Phil
> -----Original Message-----
> From: binutils-owner@sourceware.org
> [mailto:binutils-owner@sourceware.org] On Behalf Of Kai Tietz
> Sent: 08 September 2006 11:22
> To: Pedro Alves
> Cc: binutils@sourceware.org
> Subject: Re: PE+ and new COFF format for x86_64 target for
> XP64 and Vista binaries
>
> 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
> >
>
>
>
>
> __________ NOD32 1.1743 (20060907) Information __________
>
> This message was checked by NOD32 antivirus system.
> http://www.eset.com
>
>