libctf: fix ELF-in-BFD checks in the presence of ASAN

The address sanitizer contains a redirector that captures dlopen calls,
so checks for dlopen with AC_SEARCH_LIBS will always conclude that
dlopen is present when the sanitizer is on.  This means it won't add
-ldl to LIBS even if needed, and the immediately-following attempt to
actually link with -lbfd will fail because libbfd also needs dlsym,
which ASAN does *not* contain a redirector for.

If we check for dlsym instead of dlopen, the check works whether ASAN is
on or off.  (bfd uses both in close proximity: if it needs one, it will
always need the other.)

libctf/ChangeLog
2021-03-25  Nick Alcock  <nick.alcock@oracle.com>

	* configure.ac: Check for dlsym, not dlopen.
	* configure: Regenerate.
This commit is contained in:
Nick Alcock 2021-03-25 16:32:46 +00:00
parent 15131809c2
commit 8f7b22ea2a
3 changed files with 18 additions and 13 deletions

View file

@ -68,7 +68,7 @@ ACX_PROG_CC_WARNING_OPTS([-Wall], [ac_libctf_warn_cflags])
AC_FUNC_MMAP
# Needed for BFD capability checks.
AC_SEARCH_LIBS(dlopen, dl)
AC_SEARCH_LIBS(dlsym, dl)
AM_ZLIB
GCC_ENABLE([libctf-hash-debugging], [no], [], [Enable expensive debugging of CTF deduplication type hashing])