如何禁用SVC ARM指令(gcc,uclibc,buildroot)?

时间:2013-03-28 09:42:57

标签: linux gcc arm buildroot uclibc

我正在使用buildroot。 编译工作正常,但目标系统上的二进制文件说“非法指令”

我用过strace:

  

execve(“/ opt / busybox”,[“/ opt / busybox”],[/ * 8 vars * /])= 0 brk(0)
  = 0   --- SIGILL {si_signo = SIGILL,si_code = ILL_ILLTRP,si_addr = 0xa3f20} ---   +++被SIGILL ++非法指令杀死

然后是IDA。

原因是SVC指令(si_addr在我试过的所有二进制文件中指向它)

如何防止GCC使用此说明?

1 个答案:

答案 0 :(得分:1)

看起来我已经解决了这个问题。

原因是EABI / OABI配置错误。感谢无艺术的噪音! 我需要OABI配置。

另外,我真的不知道为什么,但它只在GCC 4.3.x上开始工作。在gcc 4.7.x的默认buildroot配置eabi / oabi没有效果。

Finnaly,我设置了额外的GCC选项:

  

- with-march = armv5te --with-cpu = arm926ej-s --with-mtune = arm926ej-s --enable-multilib --disable-libssp --enable-languages = c,c ++