summaryrefslogtreecommitdiff
path: root/gdb/common
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2013-05-23 18:36:59 +0000
committerPedro Alves <palves@redhat.com>2013-05-23 18:36:59 +0000
commit67bd2c9af4e5366af4ecab5e18ab3d2defce4af1 (patch)
tree5c97735e528b9de3e3da0d95c916bcf15e3fa36a /gdb/common
parentc9e6e004ed57006e3756f42d987922b48e7c6eac (diff)
downloadgdb-67bd2c9af4e5366af4ecab5e18ab3d2defce4af1.tar.gz
common/filestuff.c: No sockets on DJGPP.
Building gdb with --host=i586-pc-msdosdjgpp ends up with: i586-pc-msdosdjgpp-gcc -g -O2 -I../../src/gdb/config/djgpp -I. -I../../src/gdb -I../../src/gdb/common -I../../src/gdb/config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I../../src/gdb/../include/opcode -I../../src/gdb/../opcodes/.. -I../../src/gdb/../readline/.. -I../bfd -I../../src/gdb/../bfd -I../../src/gdb/../include -I../libdecnumber -I../../src/gdb/../libdecnumber -I./../intl -I../../src/gdb/gnulib/import -Ibuild-gnulib/import -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wpointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wmissing-prototypes -Wdeclaration-after-statement -Wempty-body -Werror -c -o filestuff.o -MT filestuff.o -MMD -MP -MF .deps/filestuff.Tpo ../../src/gdb/common/filestuff.c ../../src/gdb/common/filestuff.c:38:24: fatal error: sys/socket.h: No such file or directory There are no sockets on djgpp. This #ifdef's out the bits in the file that use sockets, depending on whether winsock or sys/socket.h is available. As alternative approach, given ser-tcp.c, ser-pipe.c, etc. are split into separate files, and which to use is selected by configure.ac: dnl Figure out which of the many generic ser-*.c files the _host_ supports. SER_HARDWIRE="ser-base.o ser-unix.o ser-pipe.o ser-tcp.o" case ${host} in *go32* ) SER_HARDWIRE=ser-go32.o ;; *djgpp* ) SER_HARDWIRE=ser-go32.o ;; *mingw32*) SER_HARDWIRE="ser-base.o ser-tcp.o ser-mingw.o" ;; esac AC_SUBST(SER_HARDWIRE) ... I considered splitting filestuff.c similarly. But I quickly gave up on the idea, as it looked like a lot more complication over this approach, for no real gain. Plus, there are uses of these functions outside the ser*.c framework. gdbserver's configure.ac is already checking for sys/socket.h. gdb/ 2013-05-23 Pedro Alves <palves@redhat.com> * common/filestuff.c [USE_WIN32API]: Define HAVE_SOCKETS. [HAVE_SYS_SOCKET_H]: Define HAVE_SOCKETS. (socket_mark_cloexec, gdb_socketpair_cloexec, gdb_socket_cloexec): Only define if HAVE_SOCKETS is defined. * configure.ac: Check for sys/socket.h. * config.in, configure: Regenerate.
Diffstat (limited to 'gdb/common')
-rw-r--r--gdb/common/filestuff.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gdb/common/filestuff.c b/gdb/common/filestuff.c
index e7af3a5cf4a..daf96d9655c 100644
--- a/gdb/common/filestuff.c
+++ b/gdb/common/filestuff.c
@@ -34,10 +34,12 @@
#ifdef USE_WIN32API
#include <winsock2.h>
#include <windows.h>
-#else
+#define HAVE_SOCKETS 1
+#elif defined HAVE_SYS_SOCKET_H
#include <sys/socket.h>
/* Define HAVE_F_GETFD if we plan to use F_GETFD. */
#define HAVE_F_GETFD F_GETFD
+#define HAVE_SOCKETS 1
#endif
#ifdef HAVE_SYS_RESOURCE_H
@@ -277,6 +279,8 @@ maybe_mark_cloexec (int fd)
mark_cloexec (fd);
}
+#ifdef HAVE_SOCKETS
+
/* Like maybe_mark_cloexec, but for callers that use SOCK_CLOEXEC. */
static void
@@ -286,6 +290,8 @@ socket_mark_cloexec (int fd)
mark_cloexec (fd);
}
+#endif
+
/* See filestuff.h. */
@@ -335,6 +341,7 @@ gdb_fopen_cloexec (const char *filename, const char *opentype)
return result;
}
+#ifdef HAVE_SOCKETS
/* See filestuff.h. */
int
@@ -367,6 +374,7 @@ gdb_socket_cloexec (int namespace, int style, int protocol)
return result;
}
+#endif
/* See filestuff.h. */