On Wed, Feb 21, 2018 at 3:02 AM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Wed, Oct 18, 2017 at 5:25 PM, H.J. Lu <hjl.to...@gmail.com> wrote: >> config/plugins.m4 has >> >> if test "$plugins" = "yes"; then >> AC_SEARCH_LIBS([dlopen], [dl]) >> fi >> >> Plugin uses dlsym, but libasan.so only intercepts dlopen, not dlsym: >> >> [hjl@gnu-tools-1 binutils-text]$ nm -D /lib64/libasan.so.4| grep " dl" >> 0000000000038580 W dlclose >> U dl_iterate_phdr >> 000000000004dc50 W dlopen >> U dlsym >> U dlvsym >> [hjl@gnu-tools-1 binutils-text]$ >> >> Testing dlopen for libdl leads to false negative when -fsanitize=address >> is used. It results in link failure: >> >> ../bfd/.libs/libbfd.a(plugin.o): undefined reference to symbol >> 'dlsym@@GLIBC_2.16' >> >> dlsym should be used to check if libdl is needed for plugin. >> >> OK for master? >> >> H.J. >> --- >> bfd/ >> >> PR gas/22318 >> * configure: Regenerated. >> >> binutils/ >> >> PR gas/22318 >> * configure: Regenerated. >> >> config/ >> >> * plugins.m4 (AC_PLUGINS): Use dlsym to check if libdl is needed. >> >> gas/ >> >> PR gas/22318 >> * configure: Regenerated. >> >> gprof/ >> >> PR gas/22318 >> * configure: Regenerated. >> >> ld/ >> >> PR gas/22318 >> * configure: Regenerated.
PING. -- H.J.
From 8157f3e03107e77b8306d4ab1388a63548a13470 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" <hjl.to...@gmail.com> Date: Wed, 18 Oct 2017 17:18:37 -0700 Subject: [PATCH] Use dlsym to check if libdl is needed for plugin config/plugins.m4 has if test "$plugins" = "yes"; then AC_SEARCH_LIBS([dlopen], [dl]) fi Plugin uses dlsym, but libasan.so only intercepts dlopen, not dlsym: [hjl@gnu-tools-1 binutils-text]$ nm -D /lib64/libasan.so.4| grep " dl" 0000000000038580 W dlclose U dl_iterate_phdr 000000000004dc50 W dlopen U dlsym U dlvsym [hjl@gnu-tools-1 binutils-text]$ Testing dlopen for libdl leads to false negative when -fsanitize=address is used. It results in link failure: ../bfd/.libs/libbfd.a(plugin.o): undefined reference to symbol 'dlsym@@GLIBC_2.16' dlsym should be used to check if libdl is needed for plugin. * plugins.m4 (AC_PLUGINS): Use dlsym to check if libdl is needed. diff --git a/config/plugins.m4 b/config/plugins.m4 index 513c690e1b..c6acebc1ca 100644 --- a/config/plugins.m4 +++ b/config/plugins.m4 @@ -16,6 +16,6 @@ AC_DEFUN([AC_PLUGINS], [plugins=$maybe_plugins] ) if test "$plugins" = "yes"; then - AC_SEARCH_LIBS([dlopen], [dl]) + AC_SEARCH_LIBS([dlsym], [dl]) fi ])