使用动态链接的libc开始调试32位ARM程序集时,gdb挂起

时间:2020-11-04 23:35:45

标签: assembly arm gdb libc

我正在Raspberry Pi4(带有Cortex-A72的armv7l架构)上运行Ubuntu 20.04 32位服务器。我有一个简单的程序,return.s如下:

        .section .text
        .global _start
_start: mov r0, #1
        mov r7, #1
        swi 0

如果排除libc,我可以在本地组装,运行和调试程序:

as -g return.s -o return.o
ld return.o -o return
./return; echo $?  # result is "1"
gdb return
start              # breaks at first line

但是如果我将libc包含为动态链接库,则调试会挂起:

ld return.o -o return -lc-2.31 \
    -dynamic-linker=/usr/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
./return; echo $?  # result is "1"
gdb return
start              # hangs

如果我使用Ctrl-C中断调试器,则会看到以下回溯信息:

#0  0xb6fe12fe in ?? () from /usr/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
#1  0xb6fd81e4 in ?? () from /usr/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

知道发生了什么吗?是否可以使用链接库调试程序?如果没有,是否有可用的静态库?

0 个答案:

没有答案
相关问题