[Bug 237068] /usr/local/bin/ld: BFD (GNU Binutils) 2.30 assertion fail elflink.c:2824
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sun May 26 20:08:47 UTC 2019
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=237068
--- Comment #40 from Mark Millard <marklmi26-fbsd at yahoo.com> ---
(In reply to Dimitry Andric from comment #27)
(In reply to Antoine Brodin from comment #37)
I've not managed to get 32-bit powerpc FreeBSD to build
llvm60 (or other such) using a gcc8/g++8 related toolchain:
same assertion.
I have reduced a reproduction technique for the g++8 context
for 32-bit powerpc FreeBSD -r347549 down to:
/usr/local/bin/ld \
-Bshareable \
-o lib/libLLVM-6.0.so \
/usr/local/lib/gcc8/gcc/powerpc-portbld-freebsd13.0/8.3.0/crtbeginS.o \
--gc-sections \
-soname libLLVM-6.0.so \
--version-script
/wrkdirs/usr/ports/devel/llvm60/work/.build/./lib/tools/llvm-shlib/simple_version_script.map
\
--whole-archive \
lib/libLLVMSupport.a \
--no-whole-archive \
-ltinfo \
/usr/local/lib/gcc8/gcc/powerpc-portbld-freebsd13.0/8.3.0/crtendS.o
/usr/local/bin/ld \
-Bshareable \
-o lib/libLTO.so.6.0.1 \
/usr/local/lib/gcc8/gcc/powerpc-portbld-freebsd13.0/8.3.0/crtbeginS.o \
--gc-sections \
-soname \
libLTO.so.6 \
lib/libLLVM-6.0.so \
/usr/local/lib/gcc8/gcc/powerpc-portbld-freebsd13.0/8.3.0/crtendS.o
where lib/libLLVM-6.0.so ends up with:
# ldd lib/libLLVM-6.0.so
lib/libLLVM-6.0.so:
libncurses.so.8 => /lib/libncurses.so.8 (0x41e00000)
libc.so.7 => /lib/libc.so.7 (0x41862000)
# readelf -asW /lib/libncurses.so.8 | egrep '(bss|Symbol)'
01 .ctors .dtors .jcr .data.rel.ro .dynamic .data .got .sdata .sbss .plt
.bss
[21] .sbss NOBITS 00057448 047448 000070 00 WA 0 0
4
[23] .bss NOBITS 00058410 047448 00085c 00 WA 0 0
8
Symbol table (.dynsym) contains 725 entries:
474: 0000000000057448 0 NOTYPE GLOBAL DEFAULT ABS __bss_start
Symbol table (.symtab) contains 752 entries:
501: 0000000000057448 0 NOTYPE GLOBAL DEFAULT ABS __bss_start
(Note: __bss_start has the .sbss 00057448 .)
This ends up producing a lib/libLLVM-6.0.so with:
# readelf -asW lib/libLLVM-6.0.so | egrep '(bss|Symbol )'
01 .tbss .init_array .ctors .dtors .data.rel.ro .got2 .dynamic .data
.got .sdata .sbss .plt .bss
03 .tbss
[13] .tbss NOBITS 001522dc 1422dc 000004 00 WAT 0 0
4
[23] .sbss NOBITS 001574b8 1474b8 000025 00 WA 0 0
8
[25] .bss NOBITS 0015ac78 1474b8 001364 00 WA 0 0
8
Symbol table (.dynsym) contains 2510 entries:
1390: 00000000001574b8 0 NOTYPE GLOBAL DEFAULT 23
__bss_start@@LLVM_6.0 (2)
Symbol table (.symtab) contains 3680 entries:
2560: 00000000001574b8 0 NOTYPE GLOBAL DEFAULT 23 __bss_start
In other words, the .dynsym ends up with the @@LLVM_6.0 added.
Removing either lib/libLLVMSupport.a or -ltinfo no longer gets
the assert but does not include as much.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-toolchain
mailing list