所选处理器不支持Thumb模式`swp r3,sl,[fp]'

时间:2013-09-05 04:38:34

标签: c++ arm embedded-linux odroid

我正在尝试使用Linaro 12.11在ODROID X2板上为ARM构建一个C ++程序。在编译过程中,我发现了这种类型的错误,我无法找到答案:

  

/tmp/ccsPcPGU.s:汇编程序消息:

     

/tmp/ccsPcPGU.s:5488:错误:所选处理器不支持Thumb模式`swp r3,sl,[fp]'

我甚至不记得在这里使用Thumb模式。有什么建议我怎么解决这个问题?

更新:

@auselen这是我为gcc -v得到的:

root@linaro-ubuntu-desktop:/# gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper Target: arm-linux-gnueabihf Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --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 --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16 --with-mode=thumb --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf Thread model: posix gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

当我尝试使用gcc -c编译每个项目构造函数文件时仍然遇到同样的问题,所以我将相信我的arm-linux-gnueabihf存在问题。

2 个答案:

答案 0 :(得分:1)

Thumb指令集中不存在SWP / SWPB指令。

如果Linaro 12.11工具链默认为Thumb,则可能在汇编代码中缺少(或具有不正确的)指令状态指令。

根据导致错误的原因(C中包含的内联asm语句或已预处理的.S文件),项目的全部或部分内容需要构建为ARM指令。

答案 1 :(得分:0)

似乎罪魁祸首是include/refmem/atomic.h并且更新编译器应该修复它:https://github.com/cmyth/cmyth/issues/11

编辑:根据this bug entry,此修复程序在libgc(1:6.8-1.2ubuntu2)中可用。