If sys-devel/lld is installed, mysql-connector-c will by default attempt to link using it. When using a recent GCC (tested on both GCC 9 and 10 at least), this fails to link due to a relocation lld does not support (build failures below). Turning off the USE_LD_LLD flag in cmake fixes the build. This does not appear to affect the AMD64 build (this was seen during a cross compile for the x86 ABI). This issue occurs on at least version 8.0.22 and 8.0.23. [183/230] : && /usr/bin/x86_64-pc-linux-gnu-g++ -m32 -pipe -mstackrealign -O3 -march=native -ggdb3 -fno-omit-frame-pointer -Wall -Wextra -Wformat-security -Wvla -Wundef -Woverloaded-virtual -Wcast-qual -Wimplicit-fallthrough=2 -Wstringop-truncation -Wsuggest-override -Wlogical-op -DDBUG_OFF -DNDEBUG -fuse-ld=lld -Wl,-O1 -Wl,--as-needed utilities/CMakeFiles/comp_err.dir/comp_err.cc.o -o runtime_output_directory/comp_err -lpthread archive_output_directory/libmysys.a archive_output_directory/libstrings.a archive_output_directory/libmysys.a archive_output_directory/libstrings.a archive_output_directory/libmytime.a /usr/lib/libz.so /usr/lib/libzstd.so -lm -lrt /usr/lib/libssl.so /usr/lib/libcrypto.so -ldl -lpthread && : FAILED: runtime_output_directory/comp_err : && /usr/bin/x86_64-pc-linux-gnu-g++ -m32 -pipe -mstackrealign -O3 -march=native -ggdb3 -fno-omit-frame-pointer -Wall -Wextra -Wformat-security -Wvla -Wundef -Woverloaded-virtual -Wcast-qual -Wimplicit-fallthrough=2 -Wstringop-truncation -Wsuggest-override -Wlogical-op -DDBUG_OFF -DNDEBUG -fuse-ld=lld -Wl,-O1 -Wl,--as-needed utilities/CMakeFiles/comp_err.dir/comp_err.cc.o -o runtime_output_directory/comp_err -lpthread archive_output_directory/libmysys.a archive_output_directory/libstrings.a archive_output_directory/libmysys.a archive_output_directory/libstrings.a archive_output_directory/libmytime.a /usr/lib/libz.so /usr/lib/libzstd.so -lm -lrt /usr/lib/libssl.so /usr/lib/libcrypto.so -ldl -lpthread && : ld.lld: error: my_default.cc:(.debug_info+0xC0FD0): has non-ABS relocation R_386_GOTOFF against symbol 'default_paths' ld.lld: error: ctype-uca.cc:(.debug_info+0x191E03): has non-ABS relocation R_386_GOTOFF against symbol '.LC4' collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed.
The failure happens because you also have -ggdb3, otherwise lld works on x86 (either native or abi_x86_32). But the added -fuse-ld=lld not respecting users' settings is its own issue. It seems to be a default as long as LTO is not enabled.
(In reply to Ionen Wolkens from comment #1) > The failure happens because you also have -ggdb3, otherwise lld works on x86 > (either native or abi_x86_32). True, though I don't think that option should break packages normally? Also in case anyone else stumbles on this bug, this occurred when I tested just -g. > > But the added -fuse-ld=lld not respecting users' settings is its own issue. > It seems to be a default as long as LTO is not enabled. What would be the best way to fix this issue then? Would it make sense to have a use flag like "lld" that enables/disables this option, along with an appropriate dependency? The CMake file already has the necessary bits, and I could try to make a patch for the ebuild if that's the case.
*** This bug has been marked as a duplicate of bug 710272 ***
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a8da48ae6ee2878605bd985a9be773a095c03203 commit a8da48ae6ee2878605bd985a9be773a095c03203 Author: Sam James <sam@gentoo.org> AuthorDate: 2023-12-18 06:56:05 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2023-12-18 06:56:05 +0000 dev-db/mysql-connector-c: fix automagic LLD usage The build system automagically uses LLD (via -fuse-ld=lld) when gcc + no LTO. Fix that. Closes: https://bugs.gentoo.org/710272 Closes: https://bugs.gentoo.org/775845 Signed-off-by: Sam James <sam@gentoo.org> dev-db/mysql-connector-c/mysql-connector-c-8.0.32-r1.ebuild | 2 ++ 1 file changed, 2 insertions(+)