[PATCH] fix objcopy PE -> ELF conversion
Christian Franke
Christian.Franke@t-online.de
Mon Oct 22 20:43:00 GMT 2007
H.J. Lu wrote:
> On Mon, Oct 22, 2007 at 09:02:39PM +0200, Christian Franke wrote:
>
>> Objcopy cannot convert pe-i386 to elf32-i386. The offsets of the
>> pc-relative relocation entries are not converted properly.
>> (http://sourceware.org/bugzilla/show_bug.cgi?id=970)
>>
>> I need some PE to ELF conversion for the Cygwin port of GRUB2. The first
>> working Cygwin patch for GRUB2 includes a workaround to load the broken
>> ELF modules produced by objcopy. It would be desirable to fix this in
>> objcopy itself.
>>
>>
>
> There is nothing wrong with objcopy. GRUB2 should be fixed instead.
>
The ELF loader of GRUB2 is IMO OK.
"objcopy -O elf32-i386 pe-file.o elf-file.o" definitly produces bad
pc-relative relocation with offset 4. There are some provisions in the
BFD COFF_WITH_PE code to fix the offset later in the executable. But
this has no effect when converting relocatable modules.
> You should be to link PECOFF .o files with ELF .o files to generate
> ELF executable.
>
>
GRUB2 requires relocatable (ld -r ...) ELF modules.
And ld does not support "--oformat elf32-i386" for PE input files
("ld: cannot perform PE operations on non PE output file ...")
Christian
More information about the Binutils
mailing list