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.
This commit is contained in:
Nick Alcock 2019-06-04 15:04:49 +01:00
parent 6b22174ff1
commit ad118caa9f
5 changed files with 67 additions and 0 deletions

View file

@ -1,3 +1,10 @@
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...

View file

@ -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

37
libctf/configure vendored
View file

@ -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"

View file

@ -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

View file

@ -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))