From 5772d798236d493a0cdfd75b41520527e3129759 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sun, 1 Oct 2023 09:16:13 -0600 Subject: [PATCH] Move -lsocket check to common.m4 A user pointed out that the -lsocket check in gdb should also apply to gdbserver -- otherwise it can't find the Solaris socketpair. This patch makes the change. It also removes a couple of redundant function checks from gdb's configure.ac. This was tested by the person who reported the bug. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30927 Approved-By: Pedro Alves --- gdb/configure | 119 +++++++++++++++++++++---------------------- gdb/configure.ac | 7 +-- gdbserver/configure | 57 +++++++++++++++++++++ gdbsupport/common.m4 | 2 + gdbsupport/configure | 57 +++++++++++++++++++++ 5 files changed, 177 insertions(+), 65 deletions(-) diff --git a/gdb/configure b/gdb/configure index 1cbc356cb96..5361bf42952 100755 --- a/gdb/configure +++ b/gdb/configure @@ -19704,64 +19704,6 @@ if test "$ac_res" != no; then : fi -# Some systems (e.g. Solaris) have `socketpair' in libsocket. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socketpair" >&5 -$as_echo_n "checking for library containing socketpair... " >&6; } -if ${ac_cv_search_socketpair+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char socketpair (); -int -main () -{ -return socketpair (); - ; - return 0; -} -_ACEOF -for ac_lib in '' socket; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_socketpair=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_socketpair+:} false; then : - break -fi -done -if ${ac_cv_search_socketpair+:} false; then : - -else - ac_cv_search_socketpair=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socketpair" >&5 -$as_echo "$ac_cv_search_socketpair" >&6; } -ac_res=$ac_cv_search_socketpair -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - - # Link in zlib/zstd if we can. This allows us to read compressed debug # sections. @@ -23626,9 +23568,9 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h # ------------------------------ # for ac_func in getuid getgid \ - pipe pread pread64 pwrite resize_term \ + pread pread64 pwrite resize_term \ getpgid setsid \ - sigaction sigsetmask socketpair \ + sigsetmask \ ttrace wresize setlocale iconvlist libiconvlist btowc \ setrlimit getrlimit posix_madvise waitpid \ use_default_colors @@ -24473,6 +24415,63 @@ if test "x$ac_cv_func_fork_works" = xyes; then $as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h +fi + + # Some systems (e.g. Solaris) have `socketpair' in libsocket. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socketpair" >&5 +$as_echo_n "checking for library containing socketpair... " >&6; } +if ${ac_cv_search_socketpair+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socketpair (); +int +main () +{ +return socketpair (); + ; + return 0; +} +_ACEOF +for ac_lib in '' socket; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_socketpair=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_socketpair+:} false; then : + break +fi +done +if ${ac_cv_search_socketpair+:} false; then : + +else + ac_cv_search_socketpair=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socketpair" >&5 +$as_echo "$ac_cv_search_socketpair" >&6; } +ac_res=$ac_cv_search_socketpair +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + fi for ac_func in fdwalk getrlimit pipe pipe2 poll socketpair sigaction \ diff --git a/gdb/configure.ac b/gdb/configure.ac index 0264199b948..3912b77b27f 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -511,9 +511,6 @@ AC_CHECK_LIB(m, main) # Some systems (e.g. Solaris) have `gethostbyname' in libnsl. AC_SEARCH_LIBS(gethostbyname, nsl) -# Some systems (e.g. Solaris) have `socketpair' in libsocket. -AC_SEARCH_LIBS(socketpair, socket) - # Link in zlib/zstd if we can. This allows us to read compressed debug # sections. AM_ZLIB @@ -1349,9 +1346,9 @@ AC_C_BIGENDIAN # ------------------------------ # AC_CHECK_FUNCS([getuid getgid \ - pipe pread pread64 pwrite resize_term \ + pread pread64 pwrite resize_term \ getpgid setsid \ - sigaction sigsetmask socketpair \ + sigsetmask \ ttrace wresize setlocale iconvlist libiconvlist btowc \ setrlimit getrlimit posix_madvise waitpid \ use_default_colors]) diff --git a/gdbserver/configure b/gdbserver/configure index e807c60c08a..202043202cd 100755 --- a/gdbserver/configure +++ b/gdbserver/configure @@ -7135,6 +7135,63 @@ if test "x$ac_cv_func_fork_works" = xyes; then $as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h +fi + + # Some systems (e.g. Solaris) have `socketpair' in libsocket. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socketpair" >&5 +$as_echo_n "checking for library containing socketpair... " >&6; } +if ${ac_cv_search_socketpair+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socketpair (); +int +main () +{ +return socketpair (); + ; + return 0; +} +_ACEOF +for ac_lib in '' socket; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_socketpair=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_socketpair+:} false; then : + break +fi +done +if ${ac_cv_search_socketpair+:} false; then : + +else + ac_cv_search_socketpair=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socketpair" >&5 +$as_echo "$ac_cv_search_socketpair" >&6; } +ac_res=$ac_cv_search_socketpair +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + fi for ac_func in fdwalk getrlimit pipe pipe2 poll socketpair sigaction \ diff --git a/gdbsupport/common.m4 b/gdbsupport/common.m4 index 3909ec81ccb..baee66f7326 100644 --- a/gdbsupport/common.m4 +++ b/gdbsupport/common.m4 @@ -51,6 +51,8 @@ AC_DEFUN([GDB_AC_COMMON], [ AC_FUNC_MMAP AC_FUNC_FORK + # Some systems (e.g. Solaris) have `socketpair' in libsocket. + AC_SEARCH_LIBS(socketpair, socket) AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 poll socketpair sigaction \ ptrace64 sbrk setns sigaltstack sigprocmask \ setpgid setpgrp getrusage getauxval sigtimedwait]) diff --git a/gdbsupport/configure b/gdbsupport/configure index 9433ac41468..2c15e9df840 100755 --- a/gdbsupport/configure +++ b/gdbsupport/configure @@ -8151,6 +8151,63 @@ if test "x$ac_cv_func_fork_works" = xyes; then $as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h +fi + + # Some systems (e.g. Solaris) have `socketpair' in libsocket. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socketpair" >&5 +$as_echo_n "checking for library containing socketpair... " >&6; } +if ${ac_cv_search_socketpair+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socketpair (); +int +main () +{ +return socketpair (); + ; + return 0; +} +_ACEOF +for ac_lib in '' socket; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_socketpair=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_socketpair+:} false; then : + break +fi +done +if ${ac_cv_search_socketpair+:} false; then : + +else + ac_cv_search_socketpair=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socketpair" >&5 +$as_echo "$ac_cv_search_socketpair" >&6; } +ac_res=$ac_cv_search_socketpair +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + fi for ac_func in fdwalk getrlimit pipe pipe2 poll socketpair sigaction \ -- 2.30.2