From 681f1b8b8f2e88f197ef2768d44ca0b5b79ff65f Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 24 Jan 2019 04:47:08 +0100 Subject: [PATCH] threadlib: Revert commit from 2018-06-25. We now have a better fix. * m4/threadlib.m4 (gl_THREADLIB_BODY): Don't attempt to defeat a preceding -Wl,--as-needed option. Don't check whether the linker supports --as-needed/--no-as-needed and --push-state/--pop-state. --- ChangeLog | 7 +++++ m4/threadlib.m4 | 82 +------------------------------------------------ 2 files changed, 8 insertions(+), 81 deletions(-) diff --git a/ChangeLog b/ChangeLog index f2006e57e5..babbbc88d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2019-01-23 Bruno Haible + + threadlib: Revert commit from 2018-06-25. We now have a better fix. + * m4/threadlib.m4 (gl_THREADLIB_BODY): Don't attempt to defeat a + preceding -Wl,--as-needed option. Don't check whether the linker + supports --as-needed/--no-as-needed and --push-state/--pop-state. + 2019-01-23 Bruno Haible thread: Force linking with -lpthread, even when --as-needed is in use. diff --git a/m4/threadlib.m4 b/m4/threadlib.m4 index f7841b6099..bfc3bac853 100644 --- a/m4/threadlib.m4 +++ b/m4/threadlib.m4 @@ -1,4 +1,4 @@ -# threadlib.m4 serial 15 +# threadlib.m4 serial 16 dnl Copyright (C) 2005-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -151,36 +151,6 @@ int main () *" -static "*) gl_cv_have_weak=no ;; esac ]) - dnl Check whether the linker supports the --as-needed/--no-as-needed options. - dnl Assume GCC, so that we can use the -Wl option. - AC_CACHE_CHECK([whether the linker supports --as-needed], - [gl_cv_linker_have_as_needed], - [if test -n "$GCC"; then - gl_saved_ldflags="$LDFLAGS" - LDFLAGS="$gl_saved_ldflags -Wl,--as-needed -Wl,--no-as-needed" - AC_LINK_IFELSE([AC_LANG_PROGRAM()], - [gl_cv_linker_have_as_needed=yes], - [gl_cv_linker_have_as_needed=no]) - LDFLAGS="$gl_saved_ldflags" - else - gl_cv_linker_have_as_needed=no - fi - ]) - dnl Check whether the linker supports the --push-state/--pop-state options. - dnl Assume GCC, so that we can use the -Wl option. - AC_CACHE_CHECK([whether the linker supports --push-state], - [gl_cv_linker_have_push_state], - [if test -n "$GCC"; then - gl_saved_ldflags="$LDFLAGS" - LDFLAGS="$gl_saved_ldflags -Wl,--push-state -Wl,--pop-state" - AC_LINK_IFELSE([AC_LANG_PROGRAM()], - [gl_cv_linker_have_push_state=yes], - [gl_cv_linker_have_push_state=no]) - LDFLAGS="$gl_saved_ldflags" - else - gl_cv_linker_have_push_state=no - fi - ]) if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. @@ -259,32 +229,6 @@ int main () [Define if references to the POSIX multithreading library should be made weak.]) LIBTHREAD= LTLIBTHREAD= - dnl On platforms where GCC enables --as-needed by default, attempt - dnl to make sure that LIBMULTITHREAD really links with -lpthread. - dnl Otherwise linking with LIBMULTITHREAD has no effect; then - dnl the weak symbols are not defined and thus evaluate to NULL. - case "$LIBMULTITHREAD" in - "") ;; - -pthread) - if test $gl_cv_linker_have_as_needed = yes; then - if test $gl_cv_linker_have_push_state = yes; then - LIBMULTITHREAD="$LIBMULTITHREAD -Wl,--push-state -Wl,--no-as-needed -lpthread -Wl,--pop-state" - else - LIBMULTITHREAD="$LIBMULTITHREAD -Wl,--no-as-needed -lpthread" - fi - fi - ;; - *) - if test $gl_cv_linker_have_as_needed = yes; then - if test $gl_cv_linker_have_push_state = yes; then - LIBMULTITHREAD="-Wl,--push-state -Wl,--no-as-needed $LIBMULTITHREAD -Wl,--pop-state" - else - LIBMULTITHREAD="-Wl,--no-as-needed $LIBMULTITHREAD" - fi - fi - ;; - esac - # TODO: May need to modify LTLIBMULTITHREAD similarly. fi fi fi @@ -317,18 +261,6 @@ int main () [Define if references to the old Solaris multithreading library should be made weak.]) LIBTHREAD= LTLIBTHREAD= - dnl On platforms where GCC enables --as-needed by default, attempt - dnl to make sure that LIBMULTITHREAD really links with -lthread. - dnl Otherwise linking with LIBMULTITHREAD has no effect; then - dnl the weak symbols are not defined and thus evaluate to NULL. - if test $gl_cv_linker_have_as_needed = yes; then - if test $gl_cv_linker_have_push_state = yes; then - LIBMULTITHREAD="-Wl,--push-state -Wl,--no-as-needed $LIBMULTITHREAD -Wl,--pop-state" - else - LIBMULTITHREAD="-Wl,--no-as-needed $LIBMULTITHREAD" - fi - fi - # TODO: May need to modify LTLIBMULTITHREAD similarly. fi fi fi @@ -357,18 +289,6 @@ int main () [Define if references to the GNU Pth multithreading library should be made weak.]) LIBTHREAD= LTLIBTHREAD= - dnl On platforms where GCC enables --as-needed by default, attempt - dnl to make sure that LIBMULTITHREAD really links with -lpth. - dnl Otherwise linking with LIBMULTITHREAD has no effect; then - dnl the weak symbols are not defined and thus evaluate to NULL. - if test $gl_cv_linker_have_as_needed = yes; then - if test $gl_cv_linker_have_push_state = yes; then - LIBMULTITHREAD="-Wl,--push-state -Wl,--no-as-needed $LIBMULTITHREAD -Wl,--pop-state" - else - LIBMULTITHREAD="-Wl,--no-as-needed $LIBMULTITHREAD" - fi - fi - # TODO: May need to modify LTLIBMULTITHREAD similarly. fi fi else -- 2.39.5