地址0x000000处的指令崩溃

时间:2018-03-13 15:46:24

标签: segmentation-fault arm7

需要帮助:动态链接程序在地址0x0崩溃,恕我直言,代码的第一个可执行指令。该程序使用gcc:

进行交叉编译
arm-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/opt/cross/libexec/gcc/arm-linux-gnueabi/7.2.0/lto-wrapper
Target: arm-linux-gnueabi
Configured with: ../configure --prefix=/opt/cross --enable-bootstrap=no --build=x86_64-suse-linux --target=arm-linux-gnueabi --enable-languages=c,c++ --with-float=soft --disable-libmudflap --disable-multilib --with-cpu=arm7tdmi --with-float=soft
Thread model: posix
gcc version 7.2.0 (GCC)

在gdb下执行程序会导致立即分段错误:

Program received signal SIGSEGV, Segmentation fault.

0x00000000 in ?? ()

(gdb) info registers    
r0             0x0      0
r1             0xbefff767       3204446055    
r2             0x0      0    
r3             0x2a017000       704737280    
r4             0x0      0    
r5             0x0      0    
r6             0x0      0    
r7             0x0      0    
r8             0x0      0    
r9             0x0      0    
r10            0x0      0    
r11            0x0      0    
r12            0x0      0    
sp             0xbefff640       0xbefff640
lr             0x0      0    
pc             0x0      0x0    
cpsr           0x60000010       1610612752

可执行文件文件ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped

库位于公共路径(/ lib /)。

目标系统 uname -a Linux nanoPi 3.4.39-h3 #12 SMP PREEMPT Thu Mar 23 15:51:07 CST 2017 armv7l armv7l armv7l GNU/Linux

编译选项arm-linux-gnueabi-gcc -std=c99 -D_GNU_SOURCE=1 -D_POSIX_SOURCE=1 (... some source files ...) -O0 -g3 -pedantic -pedantic-errors -Wall -Wextra -Wconversion -c -fmessage-length=0 -MMD -MP -MF"src/options.d" -MT"src/options.o" -o "src/options.o" "../src/options.c"

静态链接,程序按预期工作。

我现在已经坚持这个问题几个小时了,没有想法要尝试什么或在哪里看得更远。谷歌搜索主要返回对解除引用空指针的引用,但我认为这是一个不同的情况。

任何提示都表示赞赏。

0 个答案:

没有答案