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]

creating working PE file with BFD


Hello, I have yet another PE related question.

I made program using BFD for transformation of ELF files to our internal binary format (working name - COFF because it is text representation of binary formats similar to COFF) and backwards. It works fine and executable file created by conversion ELF->COFF->ELF is all right.

Now I would like to transform other binary formats, starting PE. I was very pleased when I found pei-i386 in BFD target list. So I made little change in coff2elf module like this:
--- m_pBfd = bfd_openw(m_sElfOutputFile.c_str(), "elf32-i386");
+++ m_pBfd = bfd_openw(m_sElfOutputFile.c_str(), "pei-i386");
and left everything other untouched. I transformed PE->COFF->PE and try to run output file. It didn't work but at least it created PE file not so different from original. Analysis shows that biggest differences are in "NT additional fields" and output PE has problem to get to Import Table in .idata section (objdump -p hello.exe).


Here are outputs by AnywherePEViewer:
http://www.2shared.com/file/abisocMJ/pe_view.html

So my questions are:
Is BFD able to create valid PE file in general ?
Has someone experience doing something similar, any advices ?
What other changes are nessesary except changing target ? and how is creating PE by BFD different from creating ELF ?
Do you know about some materials that can help ?


I would be really glad if it would be possible to use already programmed elf2coff and coff2elf modules with some changes instead of programing separate programs using pelib or something else.

Peter Matula


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