From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 45275 invoked by alias); 4 Jun 2019 16:12:49 -0000 Mailing-List: contact gdb-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: , Sender: gdb-cvs-owner@sourceware.org List-Subscribe: Sender: gdb-cvs-owner@sourceware.org Received: (qmail 45242 invoked by uid 10018); 4 Jun 2019 16:12:49 -0000 Date: Tue, 04 Jun 2019 16:12:00 -0000 Message-ID: <20190604161249.45241.qmail@sourceware.org> Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Jose E.Marchesi To: bfd-cvs@sourceware.org, gdb-cvs@sourceware.org Subject: [binutils-gdb] libctf: work on platforms without O_CLOEXEC. X-Act-Checkin: binutils-gdb X-Git-Author: Nick Alcock X-Git-Refname: refs/heads/master X-Git-Oldrev: 6b22174ff163b828a2069f22353018ca97fc0fb4 X-Git-Newrev: ad118caa9f690114d11384b0813f30980cc333f3 X-SW-Source: 2019-06/txt/msg00009.txt.bz2 https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ad118caa9f690114d11384b0813f30980cc333f3 commit ad118caa9f690114d11384b0813f30980cc333f3 Author: Nick Alcock Date: Tue Jun 4 15:04:49 2019 +0100 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. Diff: --- libctf/ChangeLog | 7 +++++++ libctf/config.h.in | 3 +++ libctf/configure | 37 +++++++++++++++++++++++++++++++++++++ libctf/configure.ac | 16 ++++++++++++++++ libctf/ctf-decls.h | 4 ++++ 5 files changed, 67 insertions(+) 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 + * 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 + * 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 + #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 + #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))