Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

使用龙芯开源社区提供的glic2.28进行gcc12.4交叉编译工具链制作时报错 #52

Open
yunhai2009 opened this issue Jul 27, 2024 · 4 comments

Comments

@yunhai2009
Copy link

代码源路径:pkg.loongnix.cn/loongnix/pool/main/l/linux/

/build/elf/ld.so -Wl,--no-as-needed -Wl,--end-group
Dump relocate record:
stack top relocation name symbol
at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x375):
...
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x37b):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x381):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x387):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x38d):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x393):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x399):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x39f):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3a5):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3ab):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3b1):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3b7):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3bd):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3c3):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3cb):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3d6):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3e0):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3e9):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3f2):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x3fb):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x403):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x40d):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x416):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x41e):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x429):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.debug_line+0x42d):
0x0000000000000000 R_LARCH_ADD16 L0' 0x0000000000000000 R_LARCH_SUB16 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.eh_frame+0x1c):
0x0000000000000000 R_LARCH_32_PCREL `L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.eh_frame+0x20):
0x0000000000000000 R_LARCH_ADD32 L0' 0x0000000000000000 R_LARCH_SUB32 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.eh_frame+0x26):
0x0000000000000000 R_LARCH_ADD8 L0' 0x0000000000000000 R_LARCH_SUB8 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.eh_frame+0x34):
0x0000000000000000 R_LARCH_32_PCREL `L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.eh_frame+0x38):
0x0000000000000000 R_LARCH_ADD32 L0' 0x0000000000000000 R_LARCH_SUB32 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.eh_frame+0x3e):
0x0000000000000000 R_LARCH_ADD8 L0' 0x0000000000000000 R_LARCH_SUB8 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt_pic.a(librt-cancellation.os)(.eh_frame+0x46):
0x0000000000000000 R_LARCH_ADD6 L0' 0x0000000000000000 R_LARCH_SUB6 L0'

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/libc_nonshared.a(pthread_atfork.oS)(.text+0x0):
0x0000000000000000 R_LARCH_PCREL20_S2 __dso_handle' 0x0000000000000000 R_LARCH_RELAX '

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/libc_nonshared.a(pthread_atfork.oS)(.text+0x4):
0x0000000000000000 R_LARCH_NONE <nameless>' 0x0000000000000000 R_LARCH_RELAX '

at /home/ubuntu/Downloads/glibc/glibc-2.28/build/libc_nonshared.a(pthread_atfork.oS)(.text+0x8):
0x0000000000000000 R_LARCH_B26 __register_atfork@@GLIBC_2.27' 0x0000000000000000 R_LARCH_SOP_PUSH_ABSOLUTE ' + 131072(0x20000)
0x0000000000020000 R_LARCH_SOP_ADD `'

-- Record dump end --

/home/ubuntu/Downloads/glibc/glibc-2.28/build/libc_nonshared.a(pthread_atfork.oS): in function `__pthread_atfork':
/home/ubuntu/Downloads/glibc/glibc-2.28/nptl/../sysdeps/loongarch/pthread_atfork.c:51:(.text+0x8): Internal stack state is incorrect.
Want to push to full stack or pop from empty stack?
collect2: 閿欒锛歭d 杩斿洖 1
make[2]: *** [../Makerules:606锛?home/ubuntu/Downloads/glibc/glibc-2.28/build/rt/librt.so] 閿欒 1
make[2]: 绂诲紑鐩綍鈥?home/ubuntu/Downloads/glibc/glibc-2.28/rt鈥?make[1]: *** [Makefile:284锛歳t/others] 閿欒 2
make[1]: 绂诲紑鐩綍鈥?home/ubuntu/Downloads/glibc/

@sunhaiyong1978
Copy link
Owner

2.28这个版本太老了,还没有支持LoongArch 的 ABI 2.0

@yunhai2009
Copy link
Author

2.28这个版本太老了,还没有支持LoongArch 的 ABI 2.0

具体的ABI是什么样的没研究过,但这个2.28版本是从pkg.loongnix.cn/loongnix上边下载的2.28最新版本

@yunhai2009
Copy link
Author

另外发现一个问题,如果使用binutils-2.42 gcc12.4 glibc2.28生成的交叉编译工具链,生成的elf的标志(flags)为0x43,而龙芯官方公布的工具链编译生成的elf标志为0x3。请问是不是说binutils在新旧世界并不兼容?binutils-2.42只能生成新世界的elf,而龙芯公布的binutils-2.31.1只能生成旧世界的elf。 @sunhaiyong1978

@sunhaiyong1978
Copy link
Owner

另外发现一个问题,如果使用binutils-2.42 gcc12.4 glibc2.28生成的交叉编译工具链,生成的elf的标志(flags)为0x43,而龙芯官方公布的工具链编译生成的elf标志为0x3。请问是不是说binutils在新旧世界并不兼容?binutils-2.42只能生成新世界的elf,而龙芯公布的binutils-2.31.1只能生成旧世界的elf。 @sunhaiyong1978

是的,两者不兼容。

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants