This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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: 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
> 
> 


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