我正在使用buildroot。 編制工作正常,但目標系統上的二進制表示, 「非法指令」如何禁用SVC ARM指令(gcc,uclibc,buildroot)?
我用strace的:
的execve( 「/選擇/ busybox的」,[ 「/選擇/ busybox的」],[/ * 8變量* /])= 0 brk(0)
= 0 --- SIGILL {si_signo = SIGILL,si_code = ILL_ILLTRP,si_addr = 0xa3f20} --- +++死於SIGILL +++非法指令
然後是IDA。
原因是SVC指令(si_addr指出,它在所有的二進制我試過)
我應該怎麼做,以防止使用GCC該指令?
這就是'SuperVisor Call',用於進行系統調用 - 您將需要它。問題可能是內核和你正在嘗試構建的內容之間的不匹配。 – auselen 2013-03-28 09:57:23
是的。內核已經編譯和安裝。我現在不能改變它:(我也沒有從exesting內核的源/配置 – HardRock 2013-03-28 10:11:44
我重新簽署了Linux(而不是SVC),這是一些微軟web服務器的東西,我試圖[更新wiki](http:// stackoverflow .com/review/suggested-edits/1590553)。我將調查* EABI *與* OABI *,這會改變'SVC/SWI'調用接口。請參閱[trap.c](https://git.kernel.org /cgit/linux/kernel/git/stable/linux-stable.git/tree/arch/arm/kernel/traps.c)你可以在kernel *命令行中用'user_debug = 0xff'啓動。 – 2013-03-28 14:27:15