加载库依赖项时出现分段错误

时间:2020-12-30 04:21:20

标签: segmentation-fault ld openssh sshd

我已经为 mips64_Cavium 平台交叉编译了 openssh-8.4p1,同时与 openssl-1.1.1h 和 zlib_v1.2.11 动态链接。这里的问题是,这样创建的二进制文件在我尝试运行时立即获得以下 SigSEGV:

--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x575749a0} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault

使用LD_DEBUG=files调试加载时崩溃日志如下:

     31232:
     31232:     file=libc.so.6 [0];  needed by /mnt/cf/sshd_dyn [0]
     31232:     file=libc.so.6 [0];  generating link map
     31232:       dynamic: 0x2b3091b0  base: 0x2b309000   size: 0x00164c00
     31232:         entry: 0x2b31fb58  phdr: 0x2b309034  phnum:         11
     31232:
Segmentation fault (core dumped)

... 并且使用 LD_DEBUG=symbols 崩溃日志如下:

     31271:     symbol=islower;  lookup in file=/lib32/octeon2/libpthread.so.0 [0]
     31271:     symbol=islower;  lookup in file=/mnt/cf/libc.so.6 [0]
     31271:     symbol=EVP_aes_256_ctr;  lookup in file=/mnt/cf/sshd_dyn [0]
     31271:     symbol=EVP_aes_256_ctr;  lookup in file=/lib32/octeon2/libresolv.so.2 [0]
     31271:     symbol=EVP_aes_256_ctr;  lookup in file=/mnt/cf/libcrypto.so.1.1 [0]
Segmentation fault (core dumped)

我不知道为什么会发生崩溃。

注意 zlib的编译是用

完成的
CFLAGS="-mabi=n32 -fPIC"

openssl 配置的地方

CFLAGS="-mabi=n32" ./Configure no-hw linux-generic64 shared

OpenSSH8.4 配置了

CC="mips64-octeon-linux-gnu-gcc" --with-cflags="-mabi=n32" --with-ldflags="-mabi=n32 -pthread"

0 个答案:

没有答案