[PATCH v3 1/6] ldbl-128ibm-compat: workaround GCC 9 C++ BZ 90731

Paul E Murphy murphyp@linux.ibm.com
Wed Apr 15 14:20:55 GMT 2020



On 4/6/20 2:12 PM, Paul E. Murphy via Libc-alpha wrote:
> GCC 9 has a bug (BZ 90731) whereby __typeof does not correctly copy
> exception specifiers[1].  Surprisingly, this can be quieted by declaring
> "#pragma system_header", or if the headers are installed in a system
> directory.
> 
> Work around this by using the pragma for any gcc version between
> 9.0 and 9.2 to ensure tests continue to compile.
> 
> [1] Example error from g++ 9.2.1:
> 
> In file included from ../include/sys/cdefs.h:3,
>                   from ../include/features.h:465,
>                   from ../bits/libc-header-start.h:33,
>                   from ../math/math.h:27,
>                   from ../include/math.h:7,
>                   from test-math-isinff.cc:21:
> ../libio/bits/stdio-ldbl.h:25:20: error: declaration of ‘int sprintf(char*, const char*, ...)’ has a different exception specifier
>     25 | __LDBL_REDIR_DECL (sprintf)
>        |                    ^~~~~~~
> ../misc/sys/cdefs.h:461:26: note: in definition of macro ‘__LDBL_REDIR_DECL’
>    461 |   extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128"));
>        |                          ^~~~
> In file included from ../include/stdio.h:5,
>                   from test-math-isinff.cc:22:
> ../libio/stdio.h:334:12: note: from previous declaration ‘int sprintf(char*, const char*, ...) throw ()’
>    334 | extern int sprintf (char *__restrict __s,
>        |            ^~~~~~~
> ---
>   include/monetary.h |  8 ++++++++
>   include/printf.h   |  8 ++++++++
>   include/stdio.h    | 10 ++++++++++
>   include/stdlib.h   |  9 +++++++++
>   include/wchar.h    |  9 +++++++++
>   5 files changed, 44 insertions(+)

Ping?


More information about the Libc-alpha mailing list