[committed] libstdc++: Test errno macros directly, not via autoconf [PR 93151]

Jakub Jelinek jakub@redhat.com
Thu Apr 1 14:27:01 GMT 2021


On Thu, Apr 01, 2021 at 03:25:56PM +0100, Jonathan Wakely via Gcc-patches wrote:
> On 01/04/21 16:04 +0200, Eric Botcazou wrote:
> > > Oops, and I also forgot to update the other headers that were using
> > > those autoconf-generated macros!
> > > 
> > > Fixed by this patch. Tested on mingw-w64, pushed to trunk.
> > 
> > The original patch was apparently backported onto the gcc-10 branch, but not
> > this follow-up fix, so Windows builds are now broken on the branch.
> 
> Sorry. I did try to test a mingw-w64 cross, but I think I probably
> tested it against trunk not the branch. So didn't test it at all.
> 
> It should be fixed by the attached patch for gcc-10. I'm testing it
> now on linux and mingw.
> 
> I'll wait for RM approval before pushing.

Ok for 10.3, thanks.

> commit 03a430a55093d2ea5b80db3273c3a7134367272a
> Author: Jonathan Wakely <jwakely@redhat.com>
> Date:   Thu Dec 17 13:27:04 2020 +0000
> 
>     libstdc++: Test errno macros directly for all targets [PR 93151]
>     
>     This applies the same changes to the djgpp and mingw versions of
>     error_constants.h as r11-6137 did for the generic version.
>     
>     All of these constants are defined as macros by <errno.h> on these
>     targets, so we can just test the macro directly instead of checking for
>     it at configure time.
>     
>     libstdc++-v3/ChangeLog:
>     
>             * config.h.in: Regenerate.
>             * config/os/djgpp/error_constants.h: Test POSIX errno macros
>             directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
>             * config/os/mingw32-w64/error_constants.h: Likewise.
>             * config/os/mingw32/error_constants.h: Likewise.
>             * configure: Regenerate.
>     
>     (cherry picked from commit 217d5beaff9987a9845155fc796322b5f8bb876d)
> 
> diff --git a/libstdc++-v3/config/os/djgpp/error_constants.h b/libstdc++-v3/config/os/djgpp/error_constants.h
> index e0a67bc8d6d..8f947e69e37 100644
> --- a/libstdc++-v3/config/os/djgpp/error_constants.h
> +++ b/libstdc++-v3/config/os/djgpp/error_constants.h
> @@ -48,7 +48,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        bad_address = 				EFAULT,
>        bad_file_descriptor = 			EBADF,
>  
> -#ifdef _GLIBCXX_HAVE_EBADMSG
> +#ifdef EBADMSG
>        bad_message = 				EBADMSG,
>  #endif
>  
> @@ -68,7 +68,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        function_not_supported = 			ENOSYS,
>  //    host_unreachable = 			EHOSTUNREACH,
>  
> -#ifdef _GLIBCXX_HAVE_EIDRM
> +#ifdef EIDRM
>        identifier_removed = 			EIDRM,
>  #endif
>  
> @@ -86,13 +86,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>  //    no_buffer_space = 			ENOBUFS,
>        no_child_process = 			ECHILD,
>  
> -#ifdef _GLIBCXX_HAVE_ENOLINK
> +#ifdef ENOLINK
>        no_link = 				ENOLINK,
>  #endif
>  
>        no_lock_available = 			ENOLCK,
>  
> -#ifdef _GLIBCXX_HAVE_ENODATA
> +#ifdef ENODATA
>        no_message_available = 			ENODATA,
>  #endif
>  
> @@ -100,7 +100,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>  //    no_protocol_option = 			ENOPROTOOPT,
>        no_space_on_device = 			ENOSPC,
>  
> -#ifdef _GLIBCXX_HAVE_ENOSR
> +#ifdef ENOSR
>        no_stream_resources = 			ENOSR,
>  #endif
>  
> @@ -111,18 +111,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        not_a_directory = 			ENOTDIR,
>  //    not_a_socket = 				ENOTSOCK,
>  
> -#ifdef _GLIBCXX_HAVE_ENOSTR
> +#ifdef ENOSTR
>        not_a_stream = 				ENOSTR,
>  #endif
>  
>  //    not_connected = 				ENOTCONN,
>        not_enough_memory = 			ENOMEM,
>  
> -#ifdef _GLIBCXX_HAVE_ENOTSUP
> +#ifdef ENOTSUP
>        not_supported = 				ENOTSUP,
>  #endif
>  
> -#ifdef _GLIBCXX_HAVE_ECANCELED
> +#ifdef ECANCELED
>        operation_canceled = 			ECANCELED,
>  #endif
>  
> @@ -131,13 +131,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>  //    operation_not_supported = 		EOPNOTSUPP,
>  //    operation_would_block = 			EWOULDBLOCK,
>  
> -#ifdef _GLIBCXX_HAVE_EOWNERDEAD
> +#ifdef EOWNERDEAD
>        owner_dead = 				EOWNERDEAD,
>  #endif
>  
>        permission_denied = 			EACCES,
>  
> -#ifdef _GLIBCXX_HAVE_EPROTO
> +#ifdef EPROTO
>        protocol_error = 				EPROTO,
>  #endif
>  
> @@ -147,15 +147,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        resource_unavailable_try_again = 		EAGAIN,
>        result_out_of_range = 			ERANGE,
>  
> -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE
> +#ifdef ENOTRECOVERABLE
>        state_not_recoverable = 			ENOTRECOVERABLE,
>  #endif
>  
> -#ifdef _GLIBCXX_HAVE_ETIME
> +#ifdef ETIME
>        stream_timeout = 				ETIME,
>  #endif
>  
> -#ifdef _GLIBCXX_HAVE_ETXTBSY
> +#ifdef ETXTBSY
>        text_file_busy = 				ETXTBSY,
>  #endif
>  
> @@ -165,7 +165,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        too_many_links = 				EMLINK,
>        too_many_symbolic_link_levels = 		ELOOP,
>  
> -#ifdef _GLIBCXX_HAVE_EOVERFLOW
> +#ifdef EOVERFLOW
>        value_too_large = 			EOVERFLOW,
>  #endif
>  
> diff --git a/libstdc++-v3/config/os/mingw32-w64/error_constants.h b/libstdc++-v3/config/os/mingw32-w64/error_constants.h
> index 72422299def..3534c3e11b7 100644
> --- a/libstdc++-v3/config/os/mingw32-w64/error_constants.h
> +++ b/libstdc++-v3/config/os/mingw32-w64/error_constants.h
> @@ -49,7 +49,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        argument_out_of_domain = 			EDOM,
>        bad_address = 				EFAULT,
>        bad_file_descriptor = 			EBADF,
> -#ifdef _GLIBCXX_HAVE_EBADMSG
> +#ifdef EBADMSG
>        bad_message = 				EBADMSG,
>  #endif
>        broken_pipe = 				EPIPE,
> @@ -67,7 +67,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        filename_too_long = 			ENAMETOOLONG,
>        function_not_supported = 			ENOSYS,
>        host_unreachable = 			EHOSTUNREACH,
> -#ifdef _GLIBCXX_HAVE_EIDRM
> +#ifdef EIDRM
>        identifier_removed = 			EIDRM,
>  #endif
>        illegal_byte_sequence = 			EILSEQ,
> @@ -82,24 +82,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        network_reset = 				ENETRESET,
>        network_unreachable = 			ENETUNREACH,
>        no_buffer_space = 			ENOBUFS,
> -#ifdef _GLIBCXX_HAVE_ECHILD
> +#ifdef ECHILD
>        no_child_process = 			ECHILD,
>  #endif
> -#ifdef _GLIBCXX_HAVE_ENOLINK
> +#ifdef ENOLINK
>        no_link = 				ENOLINK,
>  #endif
>        no_lock_available = 			ENOLCK,
> -#ifdef _GLIBCXX_HAVE_ENODATA
> +#ifdef ENODATA
>        no_message_available = 			ENODATA,
>  #endif
> -#ifdef _GLIBCXX_HAVE_ENOMSG
> +#ifdef ENOMSG
>        no_message = 				ENOMSG,
>  #endif
>        no_protocol_option = 			ENOPROTOOPT,
> -#ifdef _GLIBCXX_HAVE_ENOSPC
> +#ifdef ENOSPC
>        no_space_on_device = 			ENOSPC,
>  #endif
> -#ifdef _GLIBCXX_HAVE_ENOSR
> +#ifdef ENOSR
>        no_stream_resources = 			ENOSR,
>  #endif
>        no_such_device_or_address = 		ENXIO,
> @@ -108,24 +108,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        no_such_process = 			ESRCH,
>        not_a_directory = 			ENOTDIR,
>        not_a_socket = 				ENOTSOCK,
> -#ifdef _GLIBCXX_HAVE_ENOSTR
> +#ifdef ENOSTR
>        not_a_stream = 				ENOSTR,
>  #endif
>        not_connected = 				ENOTCONN,
>        not_enough_memory = 			ENOMEM,
> -#ifdef _GLIBCXX_HAVE_ENOTSUP
> +#ifdef ENOTSUP
>        not_supported = 				ENOTSUP,
>  #endif
>        operation_canceled = 			ECANCELED,
>        operation_in_progress = 			EINPROGRESS,
> -#ifdef _GLIBCXX_HAVE_EPERM
> +#ifdef EPERM
>        operation_not_permitted = 		EPERM,
>  #endif
>        operation_not_supported = 		EOPNOTSUPP,
> -#ifdef _GLIBCXX_HAVE_EWOULDBLOCK
> +#ifdef EWOULDBLOCK
>        operation_would_block = 			EWOULDBLOCK,
>  #endif
> -#ifdef _GLIBCXX_HAVE_EOWNERDEAD
> +#ifdef EOWNERDEAD
>        owner_dead = 				EOWNERDEAD,
>  #endif
>        permission_denied = 			EACCES,
> @@ -135,23 +135,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        resource_deadlock_would_occur = 		EDEADLK,
>        resource_unavailable_try_again = 		EAGAIN,
>        result_out_of_range = 			ERANGE,
> -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE
> +#ifdef ENOTRECOVERABLE
>        state_not_recoverable = 			ENOTRECOVERABLE,
>  #endif
> -#ifdef _GLIBCXX_HAVE_ETIME
> +#ifdef ETIME
>        stream_timeout = 				ETIME,
>  #endif
> -#ifdef _GLIBCXX_HAVE_ETXTBSY
> +#ifdef ETXTBSY
>        text_file_busy = 				ETXTBSY,
>  #endif
> -#ifdef _GLIBCXX_HAVE_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,
> -#ifdef _GLIBCXX_HAVE_EOVERFLOW
> +#ifdef EOVERFLOW
>        value_too_large = 			EOVERFLOW,
>  #endif
>        wrong_protocol_type = 			EPROTOTYPE
> diff --git a/libstdc++-v3/config/os/mingw32/error_constants.h b/libstdc++-v3/config/os/mingw32/error_constants.h
> index 68ac72a78fb..2222c5227c4 100644
> --- a/libstdc++-v3/config/os/mingw32/error_constants.h
> +++ b/libstdc++-v3/config/os/mingw32/error_constants.h
> @@ -78,7 +78,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>  //    network_reset = 				ENETRESET,
>  //    network_unreachable = 			ENETUNREACH,
>  //    no_buffer_space = 			ENOBUFS,
> -#ifdef _GLIBCXX_HAVE_ECHILD
> +#ifdef ECHILD
>        no_child_process = 			ECHILD,
>  #endif
>  //    no_link = 				ENOLINK,
> @@ -86,7 +86,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>  //    no_message_available = 			ENODATA,
>  //    no_message = 				ENOMSG,
>  //    no_protocol_option = 			ENOPROTOOPT,
> -#ifdef _GLIBCXX_HAVE_ENOSPC
> +#ifdef ENOSPC
>        no_space_on_device = 			ENOSPC,
>  #endif
>  //    no_stream_resources = 			ENOSR,
> @@ -99,16 +99,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>  //    not_a_stream = 				ENOSTR,
>  //    not_connected = 				ENOTCONN,
>        not_enough_memory = 			ENOMEM,
> -#ifdef _GLIBCXX_HAVE_ENOTSUP
> +#ifdef ENOTSUP
>        not_supported = 				ENOTSUP,
>  #endif
>  //    operation_canceled = 			ECANCELED,
>  //    operation_in_progress = 			EINPROGRESS,
> -#ifdef _GLIBCXX_HAVE_EPERM
> +#ifdef EPERM
>        operation_not_permitted = 		EPERM,
>  #endif
>  //    operation_not_supported = 		EOPNOTSUPP,
> -#ifdef _GLIBCXX_HAVE_EWOULDBLOCK
> +#ifdef EWOULDBLOCK
>        operation_would_block = 			EWOULDBLOCK,
>  #endif
>  //    owner_dead = 				EOWNERDEAD,
> @@ -122,14 +122,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>  //    state_not_recoverable = 			ENOTRECOVERABLE,
>  //    stream_timeout = 				ETIME,
>  //    text_file_busy = 				ETXTBSY,
> -#ifdef _GLIBCXX_HAVE_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,
> -#ifdef _GLIBCXX_HAVE_EOVERFLOW
> +#ifdef EOVERFLOW
>  	,
>        value_too_large = 			EOVERFLOW
>  #endif


	Jakub



More information about the Libstdc++ mailing list