ARM-ELF -> PE-COFF with objcopy
pps
i-love-spam@yandex.ru
Tue Apr 28 15:46:00 GMT 2009
Dave Korn wrote:
> Ian Lance Taylor wrote:
>
>> I don't really understand what you are trying to do or why you are using
>> ELF at all. Why not just compile your code into PE format in the first
>> place?
It's all simple, I wrote an optimized version of a voice codec (amr-nb)
for arm. In our project performance of the codec is *very* important,
because on a simple mobile we need to decode and encode realtime
multiple speech streams simultaneously (project requirement). We
obtained a commercial product from one of the companies and they charge
for it around 15-25K for optimized version for arm-wince. I have lots of
experience working with voice codecs and I was given a task to try to
optimize it even more. So far, I already beat the comercial version by
around 20% while my implementation is more conformant to the specs (bit
exact).
With MS compiler I'm quite limited in ARM instructionset, it even
rejects some of the asm functions and it doesn't support inline
assembler in wince. While inspecting produced assembly listing I see
some room for improvement. So, I decided to try some other compilers and
see if the results are worse or better. I didn't even try gcc-ce yet,
because I don't think it would be able to beat ms compiler in
optimizations; the RVCT from arm.com seems to be a good choice in my
case - it's ARM only compiler and optimized for arm architecture. I also
was curious myself which one of them would generate better code. The
only problem is that it generates ELF binaries and in wince I need
pe-coff. I wrote my code in a way that it doesn't have any dependencies,
it's a bunch of static const tables with data and a few functions. It
doesn't allocate/free any memory dynamically also. So, I was thinking
that all I need is to somehow extract the binary code and try to run it :)
I also tried to produce assembly listing with RVCT, but ms assembler for
arm rejects some of the instructions. Maybe I should try gnu assembler
from cegcc for that?
>> The only realistic way that you can create a PE DLL is to compile code
>> with a PE compiler. Otherwise you aren't going to get the right code
>> sequences and relocations. It is theoretically possible to pursue other
>> paths but they are all going to be complex and difficult.
>
> What about this whole ELF->PE post-linking stuff that symbian arm-eabi
> targets apparently do? Could that be adapted for wince?
>
Maybe that was on older devices, but right now I checked binaries
produced for symbian and they are elf, not PE (I check it by opening in
notepad to see ELF at the beginning :))
What surprises me is this: gcc is able to take lots of lots c++ files,
preprocess them, compile etc... then link produced object files. It
understands all the formats, so, why not to take produced object code
from an ELF object and link it... producing a PE-coff executable??
More information about the Binutils
mailing list