背景
最近有个新需求,需要在很老的板(S3C2440)上运行,无奈有些程序只要有有函数指针就会报错Illegal instruction错误
用到的工具
- CLION 2020.2
- gdbserver
- gdb
- 开发板
测试代码
1 |
|
寻找问题
利用gdbserver 连接调试程序
1 | gdbserver :3000 fun_test |
连接gdbserver调试
1 | gdb 命令行中开启 |
点击继续运行会报错
如箭头所示,运行blx指令的时候报的非法指令错误
总结
问题找到了,查了一下S3C2440用的是armv4t指令集,其中不包含BLX命令,所以会运行错误,修改这个错误需要在编译的时候增加指令指定flag -march=armv4t
即可