Browse Source

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.
binutils-2_33-branch
Nick Alcock 7 years ago
parent
commit
ad118caa9f
  1. 7
      libctf/ChangeLog
  2. 3
      libctf/config.h.in
  3. 37
      libctf/configure
  4. 16
      libctf/configure.ac
  5. 4
      libctf/ctf-decls.h

7
libctf/ChangeLog

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

3
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

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

16
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

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

Loading…
Cancel
Save