#2 bind build failure: undefined reference to 'lt_libltdlc_LTX_preloaded_symbols'
Closed 2 months ago by orbea. Opened 3 years ago by orbea.

slibtool: 0.5.29
libtool: 2.4.6
bind: https://gitlab.isc.org/isc-projects/bind9/-/commit/0a8fc4062da68ae11796a7705728e99863c2bc15

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.

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:

  1. Clone the bind9 commit 0a8fc4062da68ae11796a7705728e99863c2bc15.
  2. export MAKEFLAGS='LIBTOOL=rdlibtool V=1'
  3. autoreconf -fi
  4. ./configure
  5. make

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.

rdlibtool: error: output file prefix does not match its (shared library) suffix; the expected prefix was 'lib'

Metadata Update from @orbea:
- Issue status updated to: Closed (was: Open)

3 years ago

Metadata Update from @orbea:
- Issue status updated to: Open (was: Closed)

3 years ago

libltdl fails with the same error, see this downstream issue.

https://bugs.gentoo.org/775596

Metadata Update from @orbea:
- Issue status updated to: Closed (was: Open)

3 years ago

Metadata Update from @orbea:
- Issue status updated to: Open (was: Closed)

3 years ago

As of commit 39aef65 -dlopen and -dlpreopen are both implemented and all known examples in Gentoo work.

Metadata Update from @orbea:
- Issue status updated to: Closed (was: Open)

2 months ago

Login to comment on this ticket.

Metadata