diff options
author | Nick Alcock <nick.alcock@oracle.com> | 2019-06-04 15:04:49 +0100 |
---|---|---|
committer | Nick Alcock <nick.alcock@oracle.com> | 2019-06-04 17:05:08 +0100 |
commit | ad118caa9f690114d11384b0813f30980cc333f3 (patch) | |
tree | 3261c7175a31eb17ae72c2a8f0d107c4d1ad9f59 /libctf | |
parent | 6b22174ff163b828a2069f22353018ca97fc0fb4 (diff) | |
download | gdb-ad118caa9f690114d11384b0813f30980cc333f3.zip gdb-ad118caa9f690114d11384b0813f30980cc333f3.tar.gz gdb-ad118caa9f690114d11384b0813f30980cc333f3.tar.bz2 |
libctf: work on platforms without O_CLOEXEC.
(Not tested on any such platforms, since I don't have access to any at
the moment. Testing encouraged.)
libctf/
* configure.ac: Check for O_CLOEXEC.
* ctf-decls.h (O_CLOEXEC): Define (to 0), if need be.
* config.h.in: Regenerate.
Diffstat (limited to 'libctf')
-rw-r--r-- | libctf/ChangeLog | 7 | ||||
-rw-r--r-- | libctf/config.h.in | 3 | ||||
-rwxr-xr-x | libctf/configure | 37 | ||||
-rw-r--r-- | libctf/configure.ac | 16 | ||||
-rw-r--r-- | libctf/ctf-decls.h | 4 |
5 files changed, 67 insertions, 0 deletions
diff --git a/libctf/ChangeLog b/libctf/ChangeLog index c51efea..52c2e1e 100644 --- a/libctf/ChangeLog +++ b/libctf/ChangeLog @@ -1,5 +1,12 @@ 2019-06-04 Nick Alcock <nick.alcock@oracle.com> + * configure.ac: Check for O_CLOEXEC. + * ctf-decls.h (O_CLOEXEC): Define (to 0), if need be. + * config.h.in: Regenerate. + * configure: Likewise. + +2019-06-04 Nick Alcock <nick.alcock@oracle.com> + * qsort_r.c: Rename to... * ctf-qsort_r.c: ... this. (_quicksort): Define to ctf_qsort_r. diff --git a/libctf/config.h.in b/libctf/config.h.in index d81c500..3f45cd6 100644 --- a/libctf/config.h.in +++ b/libctf/config.h.in @@ -24,6 +24,9 @@ /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP +/* Whether the platform has a definition of O_CLOEXEC. */ +#undef HAVE_O_CLOEXEC + /* Define to 1 if you have the `pread' function. */ #undef HAVE_PREAD diff --git a/libctf/configure b/libctf/configure index d485b1a..31f1667 100755 --- a/libctf/configure +++ b/libctf/configure @@ -6462,6 +6462,43 @@ else fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for O_CLOEXEC" >&5 +$as_echo_n "checking for O_CLOEXEC... " >&6; } +if ${ac_cv_libctf_macro_O_CLOEXEC+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <fcntl.h> + #ifndef O_CLOEXEC + choke me; + #endif + +int +main () +{ +return O_CLOEXEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_libctf_macro_O_CLOEXEC=yes +else + ac_cv_libctf_macro_O_CLOEXEC=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libctf_macro_O_CLOEXEC" >&5 +$as_echo "$ac_cv_libctf_macro_O_CLOEXEC" >&6; } + +if test $ac_cv_libctf_macro_O_CLOEXEC = yes; then + +$as_echo "#define HAVE_O_CLOEXEC 1" >>confdefs.h + +fi + ac_config_files="$ac_config_files Makefile" ac_config_headers="$ac_config_headers config.h" diff --git a/libctf/configure.ac b/libctf/configure.ac index beb90ba..2a1a80b 100644 --- a/libctf/configure.ac +++ b/libctf/configure.ac @@ -133,6 +133,22 @@ esac AM_CONDITIONAL(NEED_CTF_QSORT_R, test "${ac_cv_libctf_qsort_r_signature}" = unknown) +AC_CACHE_CHECK([for O_CLOEXEC], [ac_cv_libctf_macro_O_CLOEXEC], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include <fcntl.h> + #ifndef O_CLOEXEC + choke me; + #endif + ]], + [[return O_CLOEXEC;]])], + [ac_cv_libctf_macro_O_CLOEXEC=yes], + [ac_cv_libctf_macro_O_CLOEXEC=no])]) + +if test $ac_cv_libctf_macro_O_CLOEXEC = yes; then + AC_DEFINE([HAVE_O_CLOEXEC], 1, + [Whether the platform has a definition of O_CLOEXEC.]) +fi + AC_CONFIG_FILES(Makefile) AC_CONFIG_HEADERS(config.h) AC_OUTPUT diff --git a/libctf/ctf-decls.h b/libctf/ctf-decls.h index d12409e..c840b79 100644 --- a/libctf/ctf-decls.h +++ b/libctf/ctf-decls.h @@ -62,6 +62,10 @@ void ctf_qsort_r (void *base, size_t nmemb, size_t size, void *arg); #endif +#ifndef HAVE_O_CLOEXEC +# define O_CLOEXEC 0 +#endif + #undef MAX #undef MIN #define MAX(a, b) ((a) > (b) ? (a) : (b)) |