Closed m-gupta closed 4 months ago
Sorry for the trouble I caused. This is related to a nasty .symver
issue involving the assembler the linker. As the description said:
In lld, if it sees f
and f@v1
:
--version-script =(printf 'v1 {};') => f and f@v1
--version-script =(printf 'v1 { f; };') => f@v1 and f@@v1
It can be argued that @@@ added on 2000-11-13 corrected the @ and @@ mistake.
I hope we can handle .symver
in a clean way (not an indirect symbol as used in GNU ld).
Eventually I hope .symver
@ and @@ can be a rename as @@@ does. The way fuse and alsa-lib use .symver
may be less than ideal. Let me check if fuse and alsa-lib can be patched.
Reverted in r369790
Easier repro:
$ git clone https://github.com/libfuse/libfuse.git
$ mkdir libfuse/build && cd libfuse/build
$ CC=/path/to/clang CXX=/path/to/clang++ meson ..
Linker will error out with same errors:
clang -o lib/libfuse3.so.3.6.2 'lib/76b5a35@@fuse3@sha/fuse.c.o' 'lib/76b5a35@@fuse3@sha/fuse_loop.c.o' 'lib/76b5a35@@fuse3@sha/fuse_loop_mt.c.o' 'lib/76b5a35@@fuse3@sha/fuse_lowlevel.c.o' 'lib/76b5a35@@fuse3@sha/fuse_opt.c.o' 'lib/76b5a35@@fuse3@sha/fuse_signals.c.o' 'lib/76b5a35@@fuse3@sha/buffer.c.o' 'lib/76b5a35@@fuse3@sha/cuse_lowlevel.c.o' 'lib/76b5a35@@fuse3@sha/helper.c.o' 'lib/76b5a35@@fuse3@sha/modules_subdir.c.o' 'lib/76b5a35@@fuse3@sha/mount_util.c.o' 'lib/76b5a35@@fuse3@sha/mount.c.o' 'lib/76b5a35@@fuse3@sha/modules_iconv.c.o' -Wl,--no-undefined -Wl,--as-needed -shared -fPIC -Wl,--start-group -Wl,-soname,libfuse3.so.3 -Wl,--version-script,build/libfuse/lib/fuse_versionscript -ldl -lrt -Wl,--end-group -pthread
../lib/fuse.c:4538: error: undefined reference to 'fuse_session_loop_mt_32'
../lib/cuse_lowlevel.c:356: error: undefined reference to 'fuse_session_loop_mt_32'
../lib/helper.c:316: error: undefined reference to 'fuse_new_31'
../lib/helper.c:344: error: undefined reference to 'fuse_loop_mt_32'
Extended Description
Post r369233: [MC] Don't emit .symver redirected symbols to the symbol table (https://reviews.llvm.org/rL369233), some packages in Chrome OS fail to link with gold linker.
https://ci.chromium.org/p/chromeos/builders/general/Try/b8904712082539323888
Some error logs:
The working build logs with source files/old objects are at https://drive.google.com/drive/folders/1qD5uxkiCHCsh3GJG9M7ADCzHekaUkyrk?usp=sharing