[M3devel] attempting to use cm3cg on Raspberry

mika at async.caltech.edu mika at async.caltech.edu
Sat Oct 19 02:44:16 CEST 2013


Jay,

Finally got around to attempting cm3cg on the Raspberry.  Lots of things compile, then...

RTHeapRep.ms: Assembler messages:
RTHeapRep.ms:449: Error: selected processor does not support ARM mode `sfmfd f4,4,[sp]!'
RTHeapRep.ms:661: Error: selected processor does not support ARM mode `lfmfd f4,4,[sp]!'
RTHeapRep.ms:721: Error: selected processor does not support ARM mode `sfmfd f4,4,[sp]!'
RTHeapRep.ms:1302: Error: selected processor does not support ARM mode `lfmfd f4,4,[sp]!'


I understand this has something to do with floating point.  There are a few other instructions
that show up.  Now if I write a little C program that uses floats and run gcc -v, I see this:

(173)raspberrypi:~>cc -v x.c
Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.3-14+rpi1' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 4.6.3 (Debian 4.6.3-14+rpi1) 
COLLECT_GCC_OPTIONS='-v' '-march=armv6' '-mfloat-abi=hard' '-mfpu=vfp'
 /usr/lib/gcc/arm-linux-gnueabihf/4.6/cc1 -quiet -v -imultilib . -imultiarch arm-linux-gnueabihf x.c -quiet -dumpbase x.c -march=armv6 -mfloat-abi=hard -mfpu=vfp -auxbase x -version -o /tmp/ccJfxZ1e.s
GNU C (Debian 4.6.3-14+rpi1) version 4.6.3 (arm-linux-gnueabihf)
        compiled by GNU C version 4.6.3, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9
GGC heuristics: --param ggc-min-expand=59 --param ggc-min-heapsize=56092
ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabihf"
ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../../arm-linux-gnueabihf/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/arm-linux-gnueabihf/4.6/include
 /usr/local/include
 /usr/lib/gcc/arm-linux-gnueabihf/4.6/include-fixed
 /usr/include/arm-linux-gnueabihf
 /usr/include
End of search list.
GNU C (Debian 4.6.3-14+rpi1) version 4.6.3 (arm-linux-gnueabihf)
        compiled by GNU C version 4.6.3, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9
GGC heuristics: --param ggc-min-expand=59 --param ggc-min-heapsize=56092
Compiler executable checksum: cf78bfe2d99d4ca6e0637950db1b4acd
COLLECT_GCC_OPTIONS='-v' '-march=armv6' '-mfloat-abi=hard' '-mfpu=vfp'
 as -march=armv6 -mfloat-abi=hard -mfpu=vfp -meabi=5 -o /tmp/ccirJ34v.o /tmp/ccJfxZ1e.s
COMPILER_PATH=/usr/lib/gcc/arm-linux-gnueabihf/4.6/:/usr/lib/gcc/arm-linux-gnueabihf/4.6/:/usr/lib/gcc/arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/4.6/:/usr/lib/gcc/arm-linux-gnueabihf/
LIBRARY_PATH=/usr/lib/gcc/arm-linux-gnueabihf/4.6/:/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../:/lib/arm-linux-gnueabihf/:/lib/:/usr/lib/arm-linux-gnueabihf/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-march=armv6' '-mfloat-abi=hard' '-mfpu=vfp'
 /usr/lib/gcc/arm-linux-gnueabihf/4.6/collect2 --sysroot=/ --build-id --no-add-needed --eh-frame-hdr -dynamic-linker /lib/ld-linux-armhf.so.3 -X --hash-style=both -m armelf_linux_eabi /usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf/crt1.o /usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf/crti.o /usr/lib/gcc/arm-linux-gnueabihf/4.6/crtbegin.o -L/usr/lib/gcc/arm-linux-gnueabihf/4.6 -L/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf -L/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../.. -L/lib/arm-linux-gnueabihf -L/usr/lib/arm-linux-gnueabihf /tmp/ccirJ34v.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/arm-linux-gnueabihf/4.6/crtend.o /usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf/crtn.o

But if I try to reproduce the same options with the CM3 tools I get this:

raspberrypi:/big/home2/mika/2/cm3-cvs/cm3/m3-libs/m3core/ARMEL_LINUX# /usr/local/cm3//bin/cm3cg -march=armv6 -mfloat-abi=hard -mfpu=vfp -auxbase x -mfloat-abi=hard -quiet -fno-reorder-blocks -funwind-tables -gstabs+ RTHeapRep.mc -o RTHeapRep.ms
cm3cg: sorry, unimplemented: -mfloat-abi=hard and VFP

I can get things to compile with "-mfloat-abi=soft" but I suspect performance will suffer a lot...

     Mika



More information about the M3devel mailing list