【发布时间】:2013-12-20 14:09:12
【问题描述】:
请帮助我使用 arm926ejs cpu 的 gnu 汇编器。
我尝试构建一个简单的程序(test.S):
.global _start
_start:
mov r0, #2
bx lr
并成功构建它:
arm-none-linux-gnueabi-as -mthumb -o test.o test.S
arm-none-linux-gnueabi-ld -o test test.o
但是当我在arm目标linux环境下运行程序时,出现错误:
./test
Segmentation fault
我做错了什么? _start 函数可以是拇指函数吗? 要么 总是arm func?
【问题讨论】:
-
您是否尝试过使用 gdb 获取堆栈跟踪?
-
(gdb) target remote 192.168.3.16:1234 在 ?? 中使用 192.168.3.16:1234 进行远程调试 0x00008054 () (gdb) 回溯 #0 0x00008054 in ?? () #1 0x00000000 在?? () (gdb) set arm fallback-mode thumb (gdb) x/i $pc => 0x8054: movs r0, #5 (gdb) si 0x00008056 in ?? () (gdb) x/i $pc => 0x8056: bx lr (gdb) si 0x00008056 in ?? () 无法在 0x0 (gdb) 回溯 #0 0x00008056 处插入单步断点?? () #1 0x00000000 在?? ()