From patchwork Sun Aug 28 21:36:28 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai Tietz X-Patchwork-Id: 111947 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id EA46AB6F72 for ; Mon, 29 Aug 2011 07:36:49 +1000 (EST) Received: (qmail 1645 invoked by alias); 28 Aug 2011 21:36:45 -0000 Received: (qmail 1629 invoked by uid 22791); 28 Aug 2011 21:36:44 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-qw0-f47.google.com (HELO mail-qw0-f47.google.com) (209.85.216.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 28 Aug 2011 21:36:29 +0000 Received: by qwh5 with SMTP id 5so3031488qwh.20 for ; Sun, 28 Aug 2011 14:36:28 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.28.200 with SMTP id n8mr4839166qcc.291.1314567388214; Sun, 28 Aug 2011 14:36:28 -0700 (PDT) Received: by 10.229.5.132 with HTTP; Sun, 28 Aug 2011 14:36:28 -0700 (PDT) In-Reply-To: <4E5AA6F8.3060300@oracle.com> References: <4E5A9E51.6030701@oracle.com> <4E5AA143.8030004@oracle.com> <4E5AA695.8020302@oracle.com> <4E5AA6F8.3060300@oracle.com> Date: Sun, 28 Aug 2011 23:36:28 +0200 Message-ID: Subject: Re: [patch libstdc++]: Add some missing errno-constants for mingw-targets From: Kai Tietz To: Paolo Carlini Cc: GCC Patches , "libstdc++" X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org 2011/8/28 Paolo Carlini : > Sorry,: >> >> Once more, I don't understand: didn't you suggest changing *only* ENOSPC >> and EPERM? Why are we now discussing other error-numbers like ECHILD, >> EAFNOSUPPORT and EBADMSG? Are the latter defined in errno.h? > > should have written: > > Once more, I don't understand: didn't you suggest changing *only* ECHILD, > ENOSPC and EPERM? Why are we now discussing other error-numbers like > EAFNOSUPPORT and EBADMSG? Are the former defined in errno.h? > > Paolo. Hi, So I altered the patch in the way you were suggesting. I verfied values supported in more detail and found that some other error-values should be handled for mingw host, too. The feared clash for E2BIG and EOVERFLOW doesn't happen, so I enabled them, too. Additionally in combination with winpthread, there are error-values ETIMEDOUT, ENOTSUP, and EWOULDBLOCK present. ChangeLog 2011-08-28 Kai Tietz * configure: Regenerated. * config.h.in: Regenerated. * acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR) Add checks for ECHILD, ENOSPC, EPERM, ETIMEDOUT, and EWOULDBLOCK. * config/os/mingw32/error_constants.h (errc): Add enumerator values no_child_process, no_space_on_device, not_supported, operation_not_permitted, operation_would_block, timed_out, and value_too_large, Regression tested for x86_64-w64-mingw32 and i686-w64-mingw32. Ok for apply? Regards, Kai Index: configure =================================================================== --- configure (revision 178145) +++ configure (working copy) @@ -17650,9 +17650,174 @@ $as_echo "#define HAVE_ETXTBSY 1" >>confdefs.h fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ECHILD" >&5 +$as_echo_n "checking for ECHILD... " >&6; } +if test "${glibcxx_cv_system_error15+set}" = set; then : + $as_echo_n "(cached) " >&6 +else +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int i = ECHILD; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + glibcxx_cv_system_error15=yes +else + glibcxx_cv_system_error15=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error15" >&5 +$as_echo "$glibcxx_cv_system_error15" >&6; } +if test x"$glibcxx_cv_system_error15" = x"yes"; then + +$as_echo "#define HAVE_ECHILD 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOSPC" >&5 +$as_echo_n "checking for ENOSPC... " >&6; } +if test "${glibcxx_cv_system_error16+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int i = ENOSPC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + glibcxx_cv_system_error16=yes +else + glibcxx_cv_system_error16=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error16" >&5 +$as_echo "$glibcxx_cv_system_error16" >&6; } +if test x"$glibcxx_cv_system_error16" = x"yes"; then + +$as_echo "#define HAVE_ENOSPC 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EPERM" >&5 +$as_echo_n "checking for EPERM... " >&6; } +if test "${glibcxx_cv_system_error17+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int i = EPERM; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + glibcxx_cv_system_error17=yes +else + glibcxx_cv_system_error17=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error17" >&5 +$as_echo "$glibcxx_cv_system_error17" >&6; } +if test x"$glibcxx_cv_system_error17" = x"yes"; then + +$as_echo "#define HAVE_EPERM 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ETIMEDOUT" >&5 +$as_echo_n "checking for ETIMEDOUT... " >&6; } +if test "${glibcxx_cv_system_error18+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int i = ETIMEDOUT; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + glibcxx_cv_system_error18=yes +else + glibcxx_cv_system_error18=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error18" >&5 +$as_echo "$glibcxx_cv_system_error18" >&6; } +if test x"$glibcxx_cv_system_error18" = x"yes"; then + +$as_echo "#define HAVE_ETIMEDOUT 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EWOULDBLOCK" >&5 +$as_echo_n "checking for EWOULDBLOCK... " >&6; } +if test "${glibcxx_cv_system_error19+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int i = EWOULDBLOCK; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + glibcxx_cv_system_error19=yes +else + glibcxx_cv_system_error19=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error19" >&5 +$as_echo "$glibcxx_cv_system_error19" >&6; } +if test x"$glibcxx_cv_system_error19" = x"yes"; then + +$as_echo "#define HAVE_EWOULDBLOCK 1" >>confdefs.h + +fi + + + # For the streamoff typedef. Index: config.h.in =================================================================== --- config.h.in (revision 178145) +++ config.h.in (working copy) @@ -60,6 +60,9 @@ /* Define if ECANCELED exists. */ #undef HAVE_ECANCELED +/* Define if ECHILD exists. */ +#undef HAVE_ECHILD + /* Define if EIDRM exists. */ #undef HAVE_EIDRM @@ -72,6 +75,9 @@ /* Define if ENOLINK exists. */ #undef HAVE_ENOLINK +/* Define if ENOSPC exists. */ +#undef HAVE_ENOSPC + /* Define if ENOSR exists. */ #undef HAVE_ENOSR @@ -90,15 +96,24 @@ /* Define if EOWNERDEAD exists. */ #undef HAVE_EOWNERDEAD +/* Define if EPERM exists. */ +#undef HAVE_EPERM + /* Define if EPROTO exists. */ #undef HAVE_EPROTO /* Define if ETIME exists. */ #undef HAVE_ETIME +/* Define if ETIMEDOUT exists. */ +#undef HAVE_ETIMEDOUT + /* Define if ETXTBSY exists. */ #undef HAVE_ETXTBSY +/* Define if EWOULDBLOCK exists. */ +#undef HAVE_EWOULDBLOCK + /* Define to 1 if you have the header file. */ #undef HAVE_EXECINFO_H Index: config/os/mingw32/error_constants.h =================================================================== --- config/os/mingw32/error_constants.h (revision 178145) +++ config/os/mingw32/error_constants.h (working copy) @@ -79,13 +79,17 @@ // network_reset = ENETRESET, // network_unreachable = ENETUNREACH, // no_buffer_space = ENOBUFS, -// no_child_process = ECHILD, +#ifdef HAVE_ECHILD + no_child_process = ECHILD, +#endif // no_link = ENOLINK, no_lock_available = ENOLCK, // no_message_available = ENODATA, // no_message = ENOMSG, // no_protocol_option = ENOPROTOOPT, -// no_space_on_device = ENOSPC, +#ifdef HAVE_ENOSPC + no_space_on_device = ENOSPC, +#endif // no_stream_resources = ENOSR, no_such_device_or_address = ENXIO, no_such_device = ENODEV, @@ -96,12 +100,18 @@ // not_a_stream = ENOSTR, // not_connected = ENOTCONN, not_enough_memory = ENOMEM, -// not_supported = ENOTSUP, +#ifdef HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif // operation_canceled = ECANCELED, // operation_in_progress = EINPROGRESS, -// operation_not_permitted = EPERM, +#ifdef HAVE_EPERM + operation_not_permitted = EPERM, +#endif // operation_not_supported = EOPNOTSUPP, -// operation_would_block = EWOULDBLOCK, +#ifdef EWOULDBLOCK + operation_would_block = EWOULDBLOCK, +#endif // owner_dead = EOWNERDEAD, permission_denied = EACCES, // protocol_error = EPROTO, @@ -113,12 +123,16 @@ // state_not_recoverable = ENOTRECOVERABLE, // stream_timeout = ETIME, // text_file_busy = ETXTBSY, -// timed_out = ETIMEDOUT, +#ifdef ETIMEDOUT + timed_out = ETIMEDOUT, +#endif too_many_files_open_in_system = ENFILE, too_many_files_open = EMFILE, too_many_links = EMLINK // too_many_symbolic_link_levels = ELOOP, - // value_too_large = EOVERFLOW, +#ifdef HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif // wrong_protocol_type = EPROTOTYPE }; Index: acinclude.m4 =================================================================== --- acinclude.m4 (revision 178145) +++ acinclude.m4 (working copy) @@ -1700,7 +1700,9 @@ m4_pushdef([n_syserr], [1])dnl m4_foreach([syserr], [EOWNERDEAD, ENOTRECOVERABLE, ENOLINK, EPROTO, ENODATA, ENOSR, ENOSTR, ETIME, EBADMSG, ECANCELED, - EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY], + EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY, + ECHILD, ENOSPC, EPERM, + ETIMEDOUT, EWOULDBLOCK], [m4_pushdef([SYSERR], m4_toupper(syserr))dnl AC_MSG_CHECKING([for syserr]) AC_CACHE_VAL([glibcxx_cv_system_error[]n_syserr], [