From 3cba8b6c93ab8c573ba4678255df11486de61c54 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 5 Apr 2018 15:31:41 -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. bfd/ PR gas/22318 * configure: Regenerated. binutils/ PR gas/22318 * configure: Regenerated. gas/ PR gas/22318 * configure: Regenerated. gprof/ PR gas/22318 * configure: Regenerated. ld/ PR gas/22318 * configure: Regenerated. --- bfd/ChangeLog | 5 +++++ bfd/configure | 24 ++++++++++++------------ binutils/ChangeLog | 5 +++++ binutils/configure | 24 ++++++++++++------------ gas/ChangeLog | 5 +++++ gas/configure | 24 ++++++++++++------------ gprof/ChangeLog | 5 +++++ gprof/configure | 24 ++++++++++++------------ ld/ChangeLog | 5 +++++ ld/configure | 24 ++++++++++++------------ 10 files changed, 85 insertions(+), 60 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c7fce7dc8a7..58ec0ce83e5 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2018-04-05 H.J. Lu + + PR gas/22318 + * configure: Regenerated. + 2018-04-05 Alan Modra * elf-hppa.h (elf_hppa_info_to_howto): Init howto to NULL. diff --git a/bfd/configure b/bfd/configure index d1fe335530c..667f001f6c5 100755 --- a/bfd/configure +++ b/bfd/configure @@ -11828,9 +11828,9 @@ else fi if test "$plugins" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if test "${ac_cv_search_dlopen+set}" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlsym" >&5 +$as_echo_n "checking for library containing dlsym... " >&6; } +if test "${ac_cv_search_dlsym+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS @@ -11843,11 +11843,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char dlopen (); +char dlsym (); int main () { -return dlopen (); +return dlsym (); ; return 0; } @@ -11860,25 +11860,25 @@ for ac_lib in '' dl; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_dlopen=$ac_res + ac_cv_search_dlsym=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test "${ac_cv_search_dlopen+set}" = set; then : + if test "${ac_cv_search_dlsym+set}" = set; then : break fi done -if test "${ac_cv_search_dlopen+set}" = set; then : +if test "${ac_cv_search_dlsym+set}" = set; then : else - ac_cv_search_dlopen=no + ac_cv_search_dlsym=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } -ac_res=$ac_cv_search_dlopen +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlsym" >&5 +$as_echo "$ac_cv_search_dlsym" >&6; } +ac_res=$ac_cv_search_dlsym if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" diff --git a/binutils/ChangeLog b/binutils/ChangeLog index a577978df09..0d8bbc04902 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2018-04-05 H.J. Lu + + PR gas/22318 + * configure: Regenerated. + 2018-04-05 Maciej W. Rozycki * testsuite/binutils-all/strip-13mips64.s: Use `.dc.l' rather diff --git a/binutils/configure b/binutils/configure index e11c43fc394..374605d36da 100755 --- a/binutils/configure +++ b/binutils/configure @@ -11622,9 +11622,9 @@ else fi if test "$plugins" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if test "${ac_cv_search_dlopen+set}" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlsym" >&5 +$as_echo_n "checking for library containing dlsym... " >&6; } +if test "${ac_cv_search_dlsym+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS @@ -11637,11 +11637,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char dlopen (); +char dlsym (); int main () { -return dlopen (); +return dlsym (); ; return 0; } @@ -11654,25 +11654,25 @@ for ac_lib in '' dl; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_dlopen=$ac_res + ac_cv_search_dlsym=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test "${ac_cv_search_dlopen+set}" = set; then : + if test "${ac_cv_search_dlsym+set}" = set; then : break fi done -if test "${ac_cv_search_dlopen+set}" = set; then : +if test "${ac_cv_search_dlsym+set}" = set; then : else - ac_cv_search_dlopen=no + ac_cv_search_dlsym=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } -ac_res=$ac_cv_search_dlopen +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlsym" >&5 +$as_echo "$ac_cv_search_dlsym" >&6; } +ac_res=$ac_cv_search_dlsym if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" diff --git a/gas/ChangeLog b/gas/ChangeLog index 17d1b17c6e0..f7dc5e5cc1d 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2018-04-05 H.J. Lu + + PR gas/22318 + * configure: Regenerated. + 2018-04-04 H.J. Lu PR binutils/23025 diff --git a/gas/configure b/gas/configure index 73092c2a38b..0504104295f 100755 --- a/gas/configure +++ b/gas/configure @@ -11383,9 +11383,9 @@ else fi if test "$plugins" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if test "${ac_cv_search_dlopen+set}" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlsym" >&5 +$as_echo_n "checking for library containing dlsym... " >&6; } +if test "${ac_cv_search_dlsym+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS @@ -11398,11 +11398,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char dlopen (); +char dlsym (); int main () { -return dlopen (); +return dlsym (); ; return 0; } @@ -11415,25 +11415,25 @@ for ac_lib in '' dl; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_dlopen=$ac_res + ac_cv_search_dlsym=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test "${ac_cv_search_dlopen+set}" = set; then : + if test "${ac_cv_search_dlsym+set}" = set; then : break fi done -if test "${ac_cv_search_dlopen+set}" = set; then : +if test "${ac_cv_search_dlsym+set}" = set; then : else - ac_cv_search_dlopen=no + ac_cv_search_dlsym=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } -ac_res=$ac_cv_search_dlopen +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlsym" >&5 +$as_echo "$ac_cv_search_dlsym" >&6; } +ac_res=$ac_cv_search_dlsym if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" diff --git a/gprof/ChangeLog b/gprof/ChangeLog index bfe1f27ddec..da15c98fa6d 100644 --- a/gprof/ChangeLog +++ b/gprof/ChangeLog @@ -1,3 +1,8 @@ +2018-04-05 H.J. Lu + + PR gas/22318 + * configure: Regenerated. + 2018-03-01 Alan Modra * configure.ac (ALL_LINGUAS): Add it, ro, ru, uk. Sort. diff --git a/gprof/configure b/gprof/configure index 58e6b15058c..9b084cf2e75 100755 --- a/gprof/configure +++ b/gprof/configure @@ -11298,9 +11298,9 @@ else fi if test "$plugins" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if test "${ac_cv_search_dlopen+set}" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlsym" >&5 +$as_echo_n "checking for library containing dlsym... " >&6; } +if test "${ac_cv_search_dlsym+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS @@ -11313,11 +11313,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char dlopen (); +char dlsym (); int main () { -return dlopen (); +return dlsym (); ; return 0; } @@ -11330,25 +11330,25 @@ for ac_lib in '' dl; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_dlopen=$ac_res + ac_cv_search_dlsym=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test "${ac_cv_search_dlopen+set}" = set; then : + if test "${ac_cv_search_dlsym+set}" = set; then : break fi done -if test "${ac_cv_search_dlopen+set}" = set; then : +if test "${ac_cv_search_dlsym+set}" = set; then : else - ac_cv_search_dlopen=no + ac_cv_search_dlsym=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } -ac_res=$ac_cv_search_dlopen +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlsym" >&5 +$as_echo "$ac_cv_search_dlsym" >&6; } +ac_res=$ac_cv_search_dlsym if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" diff --git a/ld/ChangeLog b/ld/ChangeLog index 5ac7f53254d..b2fd135a52a 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2018-04-05 H.J. Lu + + PR gas/22318 + * configure: Regenerated. + 2018-04-05 Nick Clifton PR 23030 diff --git a/ld/configure b/ld/configure index fdefba249ca..1157299c33e 100755 --- a/ld/configure +++ b/ld/configure @@ -15139,9 +15139,9 @@ else fi if test "$plugins" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if test "${ac_cv_search_dlopen+set}" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlsym" >&5 +$as_echo_n "checking for library containing dlsym... " >&6; } +if test "${ac_cv_search_dlsym+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS @@ -15154,11 +15154,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char dlopen (); +char dlsym (); int main () { -return dlopen (); +return dlsym (); ; return 0; } @@ -15171,25 +15171,25 @@ for ac_lib in '' dl; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_dlopen=$ac_res + ac_cv_search_dlsym=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test "${ac_cv_search_dlopen+set}" = set; then : + if test "${ac_cv_search_dlsym+set}" = set; then : break fi done -if test "${ac_cv_search_dlopen+set}" = set; then : +if test "${ac_cv_search_dlsym+set}" = set; then : else - ac_cv_search_dlopen=no + ac_cv_search_dlsym=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } -ac_res=$ac_cv_search_dlopen +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlsym" >&5 +$as_echo "$ac_cv_search_dlsym" >&6; } +ac_res=$ac_cv_search_dlsym if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -- 2.30.2