GDC D compiler for PocketPCs is here!
Chad J
gamerChad at _spamIsBad_gmail.com
Fri Aug 11 14:50:09 PDT 2006
Manfred Hansen wrote:
> 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
>
Ah it seems to be the opposite of what I though, it is using an x86
assembler to assemble ARM code. Notice that in the top log it invokes
'as' instead of /usr/local/arm-wince-pe/bin/arm-wince-pe-as. In the
bottom log it seems to be unable to find 'ld', when it should be using
arm-wince-pe-ld.
I am wondering if it can't find the files in */bin for some reason, and
ends up falling back on the local system files that are used for x86. I
also have a hunch this could be something to do with permissions.
If you don't need to restrict access to the compiler, try this:
cd /usr/local
chmod -R a=rwx arm-wince-pe
Then try compiling.
More information about the D.gnu
mailing list