mirror of git://sourceware.org/git/glibc.git
GCC 9 has a bug (PR90731) 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,
| ^~~~~~~
Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
|
||
|---|---|---|
| .. | ||
| arpa | ||
| bits | ||
| gnu | ||
| net | ||
| netinet | ||
| programs | ||
| protocols | ||
| rpc | ||
| rpcsvc | ||
| sys | ||
| aio.h | ||
| aliases.h | ||
| alloc_buffer.h | ||
| alloca.h | ||
| allocate_once.h | ||
| ar.h | ||
| argp-fmtstream.h | ||
| argp.h | ||
| argz.h | ||
| array_length.h | ||
| assert.h | ||
| atomic.h | ||
| byteswap.h | ||
| complex.h | ||
| cpio.h | ||
| crypt.h | ||
| ctype.h | ||
| des.h | ||
| dirent.h | ||
| dlfcn.h | ||
| dso_handle.h | ||
| elf.h | ||
| endian.h | ||
| envz.h | ||
| err.h | ||
| errno.h | ||
| error.h | ||
| execinfo.h | ||
| fcntl.h | ||
| features.h | ||
| fenv.h | ||
| file_change_detection.h | ||
| float.h | ||
| fmtmsg.h | ||
| fnmatch.h | ||
| fpu_control.h | ||
| fstab.h | ||
| fts.h | ||
| ftw.h | ||
| gconv.h | ||
| getopt.h | ||
| getopt_int.h | ||
| glob.h | ||
| gmp.h | ||
| gnu-versions.h | ||
| grp-merge.h | ||
| grp.h | ||
| gshadow.h | ||
| iconv.h | ||
| ifaddrs.h | ||
| ifreq.h | ||
| ifunc-impl-list.h | ||
| inline-hashtab.h | ||
| intprops.h | ||
| inttypes.h | ||
| langinfo.h | ||
| lastlog.h | ||
| libc-diag.h | ||
| libc-internal.h | ||
| libc-pointer-arith.h | ||
| libc-symbols.h | ||
| libgen.h | ||
| libintl.h | ||
| limits.h | ||
| link.h | ||
| list.h | ||
| list_t.h | ||
| locale.h | ||
| loop_unroll.h | ||
| malloc.h | ||
| math-narrow-eval.h | ||
| math.h | ||
| mcheck.h | ||
| memory.h | ||
| mntent.h | ||
| monetary.h | ||
| mqueue.h | ||
| netdb.h | ||
| netgroup.h | ||
| nl_types.h | ||
| nss.h | ||
| nsswitch.h | ||
| obstack.h | ||
| plural-exp.h | ||
| poll.h | ||
| printf.h | ||
| pthread.h | ||
| pty.h | ||
| pwd.h | ||
| random-bits.h | ||
| re_comp.h | ||
| regex.h | ||
| regexp.h | ||
| resolv.h | ||
| rounding-mode.h | ||
| rtld-malloc.h | ||
| sched.h | ||
| scratch_buffer.h | ||
| search.h | ||
| set-hooks.h | ||
| setjmp.h | ||
| sgtty.h | ||
| shadow.h | ||
| shlib-compat.h | ||
| signal.h | ||
| spawn.h | ||
| stab.h | ||
| stackinfo.h | ||
| stap-probe.h | ||
| stdc-predef.h | ||
| stdint.h | ||
| stdio.h | ||
| stdio_ext.h | ||
| stdlib.h | ||
| string.h | ||
| strings.h | ||
| struct___timespec64.h | ||
| stubs-prologue.h | ||
| syscall.h | ||
| sysexits.h | ||
| syslog.h | ||
| tar.h | ||
| termios.h | ||
| tgmath.h | ||
| time.h | ||
| ttyent.h | ||
| uchar.h | ||
| ucontext.h | ||
| ulimit.h | ||
| unistd.h | ||
| utime.h | ||
| utmp.h | ||
| values.h | ||
| verify.h | ||
| wait.h | ||
| wchar.h | ||
| wctype.h | ||
| wordexp.h | ||