slibtool: 0.5.29 libtool: 2.4.6 bind: https://gitlab.isc.org/isc-projects/bind9/-/commit/0a8fc4062da68ae11796a7705728e99863c2bc15
0.5.29
2.4.6
When building the bind main branch with slibtool it will fail with an undefined reference to lt_libltdlc_LTX_preloaded_symbols while it succeeds with libtool.
lt_libltdlc_LTX_preloaded_symbols
rdlibtool --tag=CC --mode=link clang -Wall -Wextra -Wwrite-strings -Wcast-qual -Wpointer-arith -Wno-missing-field-initializers -Wformat -Wshadow -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=format-security -Werror=parentheses -Werror=implicit -Werror=strict-prototypes -fno-strict-aliasing -fno-delete-null-pointer-checks -fdiagnostics-show-option -g -O2 -pthread -o resolve resolve.o ../../lib/isc/libisc.la ../../lib/irs/libirs.la ../../lib/dns/libdns.la rdlibtool: link: clang resolve.o -Wall -Wextra -Wwrite-strings -Wcast-qual -Wpointer-arith -Wno-missing-field-initializers -Wformat -Wshadow -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=format-security -Werror=parentheses -Werror=implicit -Werror=strict-prototypes -fno-strict-aliasing -fno-delete-null-pointer-checks -fdiagnostics-show-option -g -O2 -pthread -L../../lib/isc/.libs -lisc -ldl -luv -ldl -lcrypto -lz -ljson-c -lxml2 -L../../lib/irs/.libs -lirs -L../../lib/irs/../../lib/isc/.libs -lisc -ldl -luv -lcrypto -lz -ljson-c -lxml2 -L../../lib/irs/../../lib/dns/.libs -ldns -L../../lib/irs/../../lib/dns/../../lib/isc/.libs -lisc -ldl -luv -lcrypto -lz -ljson-c -lxml2 -llmdb -L../../lib/irs/../../lib/isccfg/.libs -lisccfg -L../../lib/irs/../../lib/isccfg/../../lib/isc/.libs -lisc -ldl -luv -lcrypto -lz -ljson-c -lxml2 -L../../lib/irs/../../lib/isccfg/../../lib/dns/.libs -ldns -L../../lib/irs/../../lib/isccfg/../../lib/dns/../../lib/isc/.libs -llmdb -L../../lib/dns/.libs -L../../lib/dns/../../lib/isc/.libs -o .libs/resolve /usr/bin/ld: ../../lib/isc/.libs/libisc.so: undefined reference to `lt_libltdlc_LTX_preloaded_symbols' clang-10: error: linker command failed with exit code 1 (use -v to see invocation) rdlibtool: exec error upon slbt_exec_link_create_executable(), line 1606: (see child process error messages). rdlibtool: < returned to > slbt_exec_link(), line 1893. make[3]: *** [Makefile:552: resolve] Error 2 make[3]: Leaving directory '/tmp/bind9/lib/samples' make[2]: *** [Makefile:530: all-recursive] Error 1 make[2]: Leaving directory '/tmp/bind9/lib' make[1]: *** [Makefile:646: all-recursive] Error 1 make[1]: Leaving directory '/tmp/bind9' make: *** [Makefile:550: all] Error 2
Reproduction:
0a8fc4062da68ae11796a7705728e99863c2bc15
rdlibtool log: http://slackless.raccoons.tech/logs/bind-rdlibtool-1.log libtool log: http://slackless.raccoons.tech/logs/bind-libtool.log
Relevant lines from the libtool log.
/bin/sh ../../libtool --tag=CC --mode=link clang -Wall -Wextra -Wwrite-strings -Wcast-qual -Wpointer-arith -Wno-missing-field-initializers -Wformat -Wshadow -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=format-security -Werror=parentheses -Werror=implicit -Werror=strict-prototypes -fno-strict-aliasing -fno-delete-null-pointer-checks -fdiagnostics-show-option -g -O2 -pthread -o resolve resolve.o ../../lib/isc/libisc.la ../../lib/irs/libirs.la ../../lib/dns/libdns.la libtool: link: clang -Wall -Wextra -Wwrite-strings -Wcast-qual -Wpointer-arith -Wno-missing-field-initializers -Wformat -Wshadow -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=format-security -Werror=parentheses -Werror=implicit -Werror=strict-prototypes -fno-strict-aliasing -fno-delete-null-pointer-checks -fdiagnostics-show-option -g -O2 -pthread -o .libs/resolve resolve.o ../../lib/isc/.libs/libisc.so ../../lib/irs/.libs/libirs.so /tmp/bind9/lib/isccfg/.libs/libisccfg.so /tmp/bind9/lib/dns/.libs/libdns.so ../../lib/dns/.libs/libdns.so /tmp/bind9/lib/isc/.libs/libisc.so -luv -ldl -lz -lcrypto -ljson-c -lxml2 -llmdb -pthread -Wl,-rpath -Wl,/usr/local/lib
Confirmed; required -dlpreopen to be more than just a no-op:-)
Same for pulseaudio:
/usr/src/debug/pulseaudio/13.0-r0/build/src/../../pulseaudio-13.0/src/daemon/main.c:539: undefined reference to `lt__PROGRAM__LTX_preloaded_symbols'
I just want to add I can still reproduce this with pulseaudio-14.0, but bind-9.16.10 now fails with an unrelated error.
pulseaudio-14.0
bind-9.16.10
rdlibtool: error: output file prefix does not match its (shared library) suffix; the expected prefix was 'lib'
Fixed upstream when libltdl was removed in this commit.
https://gitlab.isc.org/isc-projects/bind9/-/commit/37b9511ce1dd9ba66a6620c5ff617016eb81188f
Metadata Update from @orbea: - Issue status updated to: Closed (was: Open)
Metadata Update from @orbea: - Issue status updated to: Open (was: Closed)
libltdl fails with the same error, see this downstream issue.
https://bugs.gentoo.org/775596
More downstream issue.
https://bugs.gentoo.org/778434 https://bugs.gentoo.org/778515
Another one.
https://bugs.gentoo.org/778896
And yet another one:
https://bugs.gentoo.org/778989
As of commit 39aef65 -dlopen and -dlpreopen are both implemented and all known examples in Gentoo work.
-dlopen
-dlpreopen
Login to comment on this ticket.