GDC D compiler for PocketPCs is here!

Manfred Hansen m.hansen at kielnet.net
Fri Aug 11 13:49:31 PDT 2006


Am Fri, 11 Aug 2006 15:59:47 -0400 schrieb Chad J:

> pedro alves wrote:
>> Frits van Bommel wrote:
>> 
>>> Chad J wrote:
>>>
>>>> Manfred Hansen wrote:
>>>>
>>>>>
>>>>> Hello,
>>>>>
>>>>> i have try to compile void main() {}
>>>>>
>>>>> but i get the following error message:
>>>>> hansen at manni-lx:~/dd$ arm-wince-pe-gdc hello_arm.d -o hello_arm
>>>>> /tmp/ccx3xcRb.s: Assembler messages:
>>>>> /tmp/ccx3xcRb.s:6: Error: junk at end of line, first unrecognized 
>>>>> character is `@'
>>>>> /tmp/ccx3xcRb.s:7: Error: junk at end of line, first unrecognized 
>>>>> character is `@'
>>>>> /tmp/ccx3xcRb.s:8: Error: too many memory references for `mov'
>>>>> /tmp/ccx3xcRb.s:9: Error: no such instruction: `stmfd 
>>>>> sp!,{fp,ip,lr,pc}'
>>>>> /tmp/ccx3xcRb.s:10: Error: too many memory references for `sub'
>>>>> /tmp/ccx3xcRb.s:11: Error: no such instruction: `bl __gccmain'
>>>>> /tmp/ccx3xcRb.s:12: Error: expecting operand after ','; got nothing
>>>>> /tmp/ccx3xcRb.s:13: Error: too many memory references for `mov'
>>>>> /tmp/ccx3xcRb.s:14: Error: no such instruction: `ldmfd sp,{fp,sp,pc}'
>>>>>
>>>>> Under debian sarge and under ubuntu 6.0.6 I have copy the 
>>>>> arm-wince-pe directory to /usr/local and i have extended
>>>>> the PATH Variavble.
>>>>>
>>>>> Manfred
>>>>
>>>>
>>>> Argh, I can't replicate it, even when I move it my other system.  The 
>>>> catch is that I've used both systems to develop this, so maybe there 
>>>> is a missing dependency that I don't know about.
>>>>
>>>> Btw, I compiled and used this on kubuntu 6.0.6.  The other system is 
>>>> coLinux running Debian.
>>>>
>>>> In a while I'll make another coLinux Debian w/ fresh filesystem, and 
>>>> see how that goes.
>>>>
>>>> Those error messages look like the ones I got when the arm-wince-pe 
>>>> assembler was given x86 assembly code.
>>>
>>>
>>> Now I'm no cross-compiling expert, but that last statement would back 
>>> up my first thought: did you build arm-wince-pe binutils to go with 
>>> your arm-wince-pe-gdc? In particular arm-wince-pe-gas?
>>> Maybe only on one system (that being the one where it works)?
>> 
>> 
>> That sure looks like it. That is arm assembly on the error log, and '@' 
>> is the comment char on arm assembly,
>> and it is also the first character the assembler is complaining about.
>> 
>> Isn't there a gdc -v switch to show what commands are being invoked?
>> 
>> Cheers,
>> Pedro Alves
> 
> hehe I was just about to ask for that.
> 
> Manfred, try
> arm-wince-pe-gdc -v hello_arm.d -o hello_arm
> and give us the output.
> 
> To answer your question Frits, the binutils come from a cegcc linux 
> binary prerelease.  As a result, the binutils were built on a computer 
> that is not my own, only the arm-wince-pe-gdc itself (and *-gcc and 
> *-g++) were built by me.  They are bundled with the compiler and have 
> worked for me.  It looks from the errors like the binutils are working 
> fine, they just can't turn x86 assembly into ARM machine code.

This is the with switch -v:

ansen at manni-lx:~/dd$ arm-wince-pe-gdc -v -c  hello_arm.d -o hello_arm
Using built-in specs.
Target: arm-wince-pe
Configured with: /gdc/18/configure --prefix=/usr/local/arm-wince-pe --disable-unix --with-newlib --enable-multilib=no --enable-languages=c,d,c++ --with-build-time-tools=/usr/local/arm-wince-pe/bin --with-as=/usr/local/arm-wince-pe/bin/arm-wince-pe-as --with-ld=/usr/local/arm-wince-pe/bin/arm-wince-pe-ld --with-sysroot=/usr/local/arm-wince-pe --target=arm-wince-pe --enable-phobos-config-dir=/usr/local/arm-wince-pe/phobos-config
Thread model: single
gcc version 4.0.3 (gdc 0.18, using dmd 0.149)
 /usr/local/arm-wince-pe/libexec/gcc/arm-wince-pe/4.0.3/cc1d hello_arm.d -quiet -dumpbase hello_arm.d -auxbase-strip hello_arm -version -o /tmp/ccJ0gw9a.sGNU D version 4.0.3 (gdc 0.18, using dmd 0.149) (arm-wince-pe)
        compiled by GNU C version 4.0.3 (Ubuntu 4.0.3-1ubuntu5).
GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64021
 as -o hello_arm /tmp/ccJ0gw9a.s
/tmp/ccJ0gw9a.s: Assembler messages:
/tmp/ccJ0gw9a.s:6: Error: junk at end of line, first unrecognized character is `@'
/tmp/ccJ0gw9a.s:7: Error: junk at end of line, first unrecognized character is `@'
/tmp/ccJ0gw9a.s:8: Error: too many memory references for `mov'
/tmp/ccJ0gw9a.s:9: Error: no such instruction: `stmfd sp!,{fp,ip,lr,pc}'
/tmp/ccJ0gw9a.s:10: Error: too many memory references for `sub'
/tmp/ccJ0gw9a.s:11: Error: no such instruction: `bl __gccmain'
/tmp/ccJ0gw9a.s:12: Error: expecting operand after ','; got nothing
/tmp/ccJ0gw9a.s:13: Error: too many memory references for `mov'
/tmp/ccJ0gw9a.s:14: Error: no such instruction: `ldmfd sp,{fp,sp,pc}'

On my debian system i have made a softlink from /usr/bin/as to 
/usr/local/arm-wince-pe/bin/arm-wince-pe-as 

Then it was possible to compile an object file.
I have delete the softlink and it is also posslible to make a 
object file. I dont't now why?
Here is the output:
n at localhost:~$ arm-wince-pe-gdc -v  hello_arm.d -o hello_arm
Es werden eingebaute Spezifikationen verwendet.
Lesen der Spezifikationen von /usr/local/arm-wince-pe/lib/gcc/arm-wince-pe/4.0.3/../../../../arm-wince-pe/lib/libgphobos.spec
Spezifikation wird von lib nach liborig umbenannt
Ziel: arm-wince-pe
Konfiguriert mit: /gdc/18/configure --prefix=/usr/local/arm-wince-pe --disable-unix --with-newlib --enable-multilib=no --enable-languages=c,d,c++ --with-build-time-tools=/usr/local/arm-wince-pe/bin --with-as=/usr/local/arm-wince-pe/bin/arm-wince-pe-as --with-ld=/usr/local/arm-wince-pe/bin/arm-wince-pe-ld --with-sysroot=/usr/local/arm-wince-pe --target=arm-wince-pe --enable-phobos-config-dir=/usr/local/arm-wince-pe/phobos-config
Thread-Modell: single
gcc-Version 4.0.3 (gdc 0.18, using dmd 0.149)
 /usr/local/arm-wince-pe/libexec/gcc/arm-wince-pe/4.0.3/cc1d hello_arm.d -quiet -dumpbase hello_arm.d -auxbase hello_arm -version -o /tmp/ccMvNpIe.s
GNU D version 4.0.3 (gdc 0.18, using dmd 0.149) (arm-wince-pe)
        compiled by GNU C version 4.0.3 (Ubuntu 4.0.3-1ubuntu5).
GGC-Heuristik: --param ggc-min-expand=47 --param ggc-min-heapsize=31989
 /usr/local/arm-wince-pe/bin/arm-wince-pe-as -o /tmp/ccuCDAcn.o /tmp/ccMvNpIe.s
 /usr/local/arm-wince-pe/libexec/gcc/arm-wince-pe/4.0.3/collect2 -Bdynamic -o hello_arm /usr/local/arm-wince-pe/lib/gcc/arm-wince-pe/4.0.3/../../../../arm-wince-pe/lib/crt0.o /usr/local/arm-wince-pe/lib/gcc/arm-wince-pe/4.0.3/../../../../arm-wince-pe/lib/crtst.o -L/usr/local/arm-wince-pe/lib/gcc/arm-wince-pe/4.0.3 -L/usr/local/arm-wince-pe/lib/gcc/arm-wince-pe/4.0.3/../../../../arm-wince-pe/lib -L/usr/local/arm-wince-pe/lib -L/usr/local/arm-wince-pe/usr/lib /tmp/ccuCDAcn.o -lgphobos -lm -lcegcc -lgcc -lm -lcoredll -lcegcc -lgcc
collect2: �ld� kann nicht gefunden werden

I looks much better.
Only one problem with collect2 .


Manfred














More information about the D.gnu mailing list