From 98a17ece013cb94cd602496b9efb92b8816b3953 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sun, 28 Oct 2018 20:14:24 +0100 Subject: [PATCH] GDB: Only build for "unix:" connections if AF_LOCAL is supported. Commit f19c7ff839d7a32ebb48482ae7d318fb46ca823d added a new member to the prefixes array which included a use of the symbol AF_LOCAL. Unfortunately, not all systems declare this symbol. This change only compiles the "unix:" member if the system knows about AF_LOCAL. gdb/ChangeLog: * configure.ac: New test HAVE_AF_LOCAL * common/netstuff.c (parse_connection_spec) [prefixes]: Only compile "unix:" if HAVE_AF_LOCAL is true. * configure: regenerate. * config.in: regenerate. --- gdb/ChangeLog | 8 ++++++++ gdb/common/netstuff.c | 2 ++ gdb/config.in | 3 +++ gdb/configure | 21 +++++++++++++++++++++ gdb/configure.ac | 10 ++++++++++ 5 files changed, 44 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6742fad014..2d89f83111 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2018-10-29 John Darrington + + * configure.ac: New test HAVE_AF_LOCAL + * common/netstuff.c (parse_connection_spec) [prefixes]: Only compile "unix:" + if HAVE_AF_LOCAL is true. + * configure: regenerate. + * config.in: regenerate. + 2018-10-28 Andrew Burgess * riscv-linux-nat.c (riscv_linux_nat_target::fetch_registers): diff --git a/gdb/common/netstuff.c b/gdb/common/netstuff.c index 11182c1e87..56bcdfca72 100644 --- a/gdb/common/netstuff.c +++ b/gdb/common/netstuff.c @@ -145,7 +145,9 @@ parse_connection_spec (const char *spec, struct addrinfo *hint) { "tcp4:", AF_INET, SOCK_STREAM }, { "udp6:", AF_INET6, SOCK_DGRAM }, { "tcp6:", AF_INET6, SOCK_STREAM }, +#if HAVE_AF_LOCAL { "unix:", AF_LOCAL, SOCK_STREAM }, +#endif }; for (const host_prefix prefix : prefixes) diff --git a/gdb/config.in b/gdb/config.in index f0d1414352..a9d7edc209 100644 --- a/gdb/config.in +++ b/gdb/config.in @@ -68,6 +68,9 @@ /* Define if self-testing features should be enabled */ #undef GDB_SELF_TEST +/* Define to 1 if AF_LOCAL is defined or declared by sys/socket.h. */ +#undef HAVE_AF_LOCAL + /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA diff --git a/gdb/configure b/gdb/configure index 3652455322..a2e7f026f3 100755 --- a/gdb/configure +++ b/gdb/configure @@ -13997,6 +13997,27 @@ _ACEOF fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main () +{ +int x = AF_LOCAL + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +$as_echo "#define HAVE_AF_LOCAL 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + if test "$cross_compiling" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether setpgrp takes no argument" >&5 $as_echo_n "checking whether setpgrp takes no argument... " >&6; } diff --git a/gdb/configure.ac b/gdb/configure.ac index b2343a90e5..7d5e027ada 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -1366,6 +1366,16 @@ GDB_AC_COMMON # Check the return and argument types of ptrace. GDB_AC_PTRACE +dnl Check to see if sys/socket.h knows about AF_LOCAL +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#include +]], + [[int x = AF_LOCAL]])], +[AC_DEFINE([HAVE_AF_LOCAL], [1], + [Define to 1 if AF_LOCAL is defined or declared by sys/socket.h.])]) + + dnl AC_FUNC_SETPGRP does not work when cross compiling dnl Instead, assume we will have a prototype for setpgrp if cross compiling. if test "$cross_compiling" = no; then -- 2.34.1