diff -Nrcpad gcc-8.4.0/ChangeLog gcc-8.5.0/ChangeLog
*** gcc-8.4.0/ChangeLog Wed Mar 4 08:30:30 2020
--- gcc-8.5.0/ChangeLog Fri May 14 08:42:08 2021
***************
*** 1,3 ****
--- 1,11 ----
+ 2021-05-14 Release Manager
+
+ * GCC 8.5.0 released.
+
+ 2020-06-02 Martin Liska
+
+ * -: Remove.
+
2020-03-04 Release Manager
* GCC 8.4.0 released.
diff -Nrcpad gcc-8.4.0/INSTALL/binaries.html gcc-8.5.0/INSTALL/binaries.html
*** gcc-8.4.0/INSTALL/binaries.html Wed Mar 4 08:32:15 2020
--- gcc-8.5.0/INSTALL/binaries.html Fri May 14 08:42:30 2021
*************** A GNU Manual
*** 19,25 ****
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
!
aarch64*-*-*
Binutils pre 2.24 does not have support for selecting -mabi and
does not support ILP32. If it is used to build GCC 4.9 or later, GCC will
not support option -mabi=ilp32.
--- 170,176 ----
!
aarch64*-*-*
Binutils pre 2.24 does not have support for selecting -mabi and
does not support ILP32. If it is used to build GCC 4.9 or later, GCC will
not support option -mabi=ilp32.
*************** The workaround is disabled by default if
*** 207,214 ****
--disable-fix-cortex-a53-843419 is given at configure time.
!
!
alpha*-*-*
This section contains general configuration information for all
Alpha-based platforms using ELF. In addition to reading this
section, please read all other sections that match your target.
--- 197,203 ----
--disable-fix-cortex-a53-843419 is given at configure time.
!
alpha*-*-*
This section contains general configuration information for all
Alpha-based platforms using ELF. In addition to reading this
section, please read all other sections that match your target.
*************** debugging information, not the least of
*** 219,245 ****
shared libraries.
!
!
amd64-*-solaris2.1[0-9]*
This is a synonym for ‘x86_64-*-solaris2.1[0-9]*’.
!
!
arc-*-elf32
Use ‘configure --target=arc-elf32 --with-cpu=cpu --enable-languages="c,c++"’
to configure GCC, with cpu being one of ‘arc600’, ‘arc601’,
or ‘arc700’.
!
!
arc-linux-uclibc
Use ‘configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"’ to configure GCC.
!
!
arm-*-eabi
ARM-family processors.
Building the Ada frontend commonly fails (an infinite loop executing
--- 208,230 ----
shared libraries.
!
amd64-*-solaris2.1[0-9]*
This is a synonym for ‘x86_64-*-solaris2.1[0-9]*’.
!
arc-*-elf32
Use ‘configure --target=arc-elf32 --with-cpu=cpu --enable-languages="c,c++"’
to configure GCC, with cpu being one of ‘arc600’, ‘arc601’,
or ‘arc700’.
!
arc-linux-uclibc
Use ‘configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"’ to configure GCC.
!
arm-*-eabi
ARM-family processors.
Building the Ada frontend commonly fails (an infinite loop executing
*************** or ‘arc700’.
*** 247,254 ****
GNAT 4.6, 4.9 or 5 release branches are known to succeed.
!
!
avr
ATMEL AVR-family micro controllers. These are used in embedded
applications. There are no standard Unix configurations.
See “AVR Options” in the main manual
--- 232,238 ----
GNAT 4.6, 4.9 or 5 release branches are known to succeed.
!
avr
ATMEL AVR-family micro controllers. These are used in embedded
applications. There are no standard Unix configurations.
See “AVR Options” in the main manual
*************** can also be obtained from:
*** 265,279 ****
The following error:
!
!
Error: register required
indicates that you should upgrade to a newer version of the binutils.
!
!
Blackfin
The Blackfin processor, an Analog Devices DSP.
See “Blackfin Options” in the main manual
--- 249,262 ----
The following error:
!
!
Error: register required
indicates that you should upgrade to a newer version of the binutils.
!
Blackfin
The Blackfin processor, an Analog Devices DSP.
See “Blackfin Options” in the main manual
You cannot install GCC by itself on MSDOS; it will not compile under
*************** compilation package DJGPP, which include
*** 332,345 ****
and includes all the necessary compilation tools and libraries.
!
!
epiphany-*-elf
Adapteva Epiphany.
This configuration is intended for embedded systems.
!
!
*-*-freebsd*
Support for FreeBSD 1 was discontinued in GCC 3.2. Support for
FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
discontinued in GCC 4.0.
--- 312,323 ----
and includes all the necessary compilation tools and libraries.
!
epiphany-*-elf
Adapteva Epiphany.
This configuration is intended for embedded systems.
!
*-*-freebsd*
Support for FreeBSD 1 was discontinued in GCC 3.2. Support for
FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
discontinued in GCC 4.0.
*************** properly on FreeBSD prior to the FreeBSD
*** 374,387 ****
after 2.16.1.
!
!
ft32-*-elf
The FT32 processor.
This configuration is intended for embedded systems.
!
!
h8300-hms
Renesas H8/300 series of processors.
Please have a look at the binaries page.
--- 352,363 ----
after 2.16.1.
!
ft32-*-elf
The FT32 processor.
This configuration is intended for embedded systems.
!
h8300-hms
Renesas H8/300 series of processors.
Please have a look at the binaries page.
*************** first three arguments in function calls
*** 392,399 ****
longer a multiple of 2 bytes.
!
!
hppa*-hp-hpux*
Support for HP-UX version 9 and older was discontinued in GCC 3.4.
We require using gas/binutils on all hppa platforms. Version 2.19 or
--- 368,374 ----
longer a multiple of 2 bytes.
!
hppa*-hp-hpux*
Support for HP-UX version 9 and older was discontinued in GCC 3.4.
We require using gas/binutils on all hppa platforms. Version 2.19 or
*************** a list of the predefines used with each
*** 443,450 ****
More specific information to ‘hppa*-hp-hpux*’ targets follows.
!
!
hppa*-hp-hpux10
For hpux10.20, we highly recommend you pick up the latest sed patch
PHCO_19798 from HP.
--- 418,424 ----
More specific information to ‘hppa*-hp-hpux*’ targets follows.
!
hppa*-hp-hpux10
For hpux10.20, we highly recommend you pick up the latest sed patch
PHCO_19798 from HP.
*************** problems in using C++ on this target. H
*** 454,461 ****
with the one implemented under HP-UX 11 using secondary definitions.
!
!
hppa*-hp-hpux11
GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and cannot
be used to compile GCC 3.0 and up.
--- 428,434 ----
with the one implemented under HP-UX 11 using secondary definitions.
!
hppa*-hp-hpux11
GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and cannot
be used to compile GCC 3.0 and up.
*************** versioning with --disable-symvers<
*** 558,572 ****
supported, so --enable-threads=dce does not work.
!
!
*-*-linux-gnu
Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
in glibc 2.2.5 and later. More information is available in the
libstdc++-v3 documentation.
!
!
i?86-*-linux*
As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
See bug 10877 for more information.
--- 531,543 ----
supported, so --enable-threads=dce does not work.
!
*-*-linux-gnu
Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
in glibc 2.2.5 and later. More information is available in the
libstdc++-v3 documentation.
!
i?86-*-linux*
As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
See bug 10877 for more information.
*************** possible you have a hardware problem. F
*** 575,582 ****
found on www.bitwizard.nl.
!
!
i?86-*-solaris2.10
Use this for Solaris 10 or later on x86 and x86-64 systems. Starting
with GCC 4.7, there is also a 64-bit ‘amd64-*-solaris2.1[0-9]*’ or
‘x86_64-*-solaris2.1[0-9]*’ configuration that corresponds to
--- 546,552 ----
found on www.bitwizard.nl.
!
i?86-*-solaris2.10
Use this for Solaris 10 or later on x86 and x86-64 systems. Starting
with GCC 4.7, there is also a 64-bit ‘amd64-*-solaris2.1[0-9]*’ or
‘x86_64-*-solaris2.1[0-9]*’ configuration that corresponds to
*************** to configure with --without-gnu-ld
*** 604,611 ****
guarantee use of Sun ld.
!
!
ia64-*-linux
IA-64 processor (also known as IPF, or Itanium Processor Family)
running GNU/Linux.
--- 574,580 ----
guarantee use of Sun ld.
!
ia64-*-linux
IA-64 processor (also known as IPF, or Itanium Processor Family)
running GNU/Linux.
*************** As of version 3.1 GCC is believed to be
*** 623,630 ****
more major ABI changes are expected.
!
!
ia64-*-hpux*
Building GCC on this target requires the GNU Assembler. The bundled HP
assembler will not work. To prevent GCC from using the wrong assembler,
the option --with-gnu-as may be necessary.
--- 592,598 ----
more major ABI changes are expected.
!
ia64-*-hpux*
Building GCC on this target requires the GNU Assembler. The bundled HP
assembler will not work. To prevent GCC from using the wrong assembler,
the option --with-gnu-as may be necessary.
*************** removed and the system libunwind library
*** 637,644 ****
!
!
*-ibm-aix*
Support for AIX version 3 and older was discontinued in GCC 3.4.
Support for AIX version 4.2 and older was discontinued in GCC 4.5.
--- 605,611 ----
!
*-ibm-aix*
Support for AIX version 3 and older was discontinued in GCC 3.4.
Support for AIX version 4.2 and older was discontinued in GCC 4.5.
*************** with an earlier release of GCC is recomm
*** 655,662 ****
requires a larger data segment, which can be enabled through the
LDR_CNTRL environment variable, e.g.,
!
!
% LDR_CNTRL=MAXDATA=0x50000000
% export LDR_CNTRL
--- 622,629 ----
requires a larger data segment, which can be enabled through the
LDR_CNTRL environment variable, e.g.,
!
!
% LDR_CNTRL=MAXDATA=0x50000000
% export LDR_CNTRL
*************** with a version of GCC built for an earli
*** 667,674 ****
To speed up the configuration phases of bootstrapping and installing GCC,
one may use GNU Bash instead of AIX /bin/sh, e.g.,
*************** APAR IY26685 (AIX 4.3) or APAR IY25528 (
*** 718,724 ****
fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
!
‘libstdc++’ in GCC 3.4 increments the major version number of the
shared object and GCC installation places the libstdc++.a
shared library in a common location which will overwrite the and GCC
3.3 version of the shared library. Applications either need to be
--- 685,691 ----
fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
!
‘libstdc++’ in GCC 3.4 increments the major version number of the
shared object and GCC installation places the libstdc++.a
shared library in a common location which will overwrite the and GCC
3.3 version of the shared library. Applications either need to be
*************** multilib libstdc++.a instal
*** 732,751 ****
Extract the shared objects from the currently installed
libstdc++.a archive:
!
!
% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
Enable the ‘F_LOADONLY’ flag so that the shared object will be
available for runtime dynamic loading, but not linking:
!
!
% strip -e libstdc++.so.4 libstdc++.so.5
Archive the runtime-only shared object in the GCC 3.4
libstdc++.a archive:
!
!
% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
Eventually, the
--- 699,718 ----
Extract the shared objects from the currently installed
libstdc++.a archive:
!
!
% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
Enable the ‘F_LOADONLY’ flag so that the shared object will be
available for runtime dynamic loading, but not linking:
!
!
% strip -e libstdc++.so.4 libstdc++.so.5
Archive the runtime-only shared object in the GCC 3.4
libstdc++.a archive:
!
!
% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
Eventually, the
*************** environment variable to ‘C
*** 802,839 ****
switch and using the configure option --with-cpu-cpu_type.
!
!
iq2000-*-elf
Vitesse IQ2000 processors. These are used in embedded
applications. There are no standard Unix configurations.
!
!
lm32-*-elf
Lattice Mico32 processor.
This configuration is intended for embedded systems.
!
!
lm32-*-uclinux
Lattice Mico32 processor.
This configuration is intended for embedded systems running uClinux.
!
!
m32c-*-elf
Renesas M32C processor.
This configuration is intended for embedded systems.
!
!
m32r-*-elf
Renesas M32R processor.
This configuration is intended for embedded systems.
!
!
m68k-*-*
By default,
‘m68k-*-elf*’, ‘m68k-*-rtems’, ‘m68k-*-uclinux’ and
‘m68k-*-linux’
--- 769,800 ----
switch and using the configure option --with-cpu-cpu_type.
!
iq2000-*-elf
Vitesse IQ2000 processors. These are used in embedded
applications. There are no standard Unix configurations.
!
lm32-*-elf
Lattice Mico32 processor.
This configuration is intended for embedded systems.
!
lm32-*-uclinux
Lattice Mico32 processor.
This configuration is intended for embedded systems running uClinux.
!
m32c-*-elf
Renesas M32C processor.
This configuration is intended for embedded systems.
!
m32r-*-elf
Renesas M32R processor.
This configuration is intended for embedded systems.
!
m68k-*-*
By default,
‘m68k-*-elf*’, ‘m68k-*-rtems’, ‘m68k-*-uclinux’ and
‘m68k-*-linux’
*************** be a -mcpu argument or one
*** 859,880 ****
GCC requires at least binutils version 2.17 on these targets.
!
!
m68k-*-uclinux
GCC 4.3 changed the uClinux configuration so that it uses the
‘m68k-linux-gnu’ ABI rather than the ‘m68k-elf’ ABI.
It also added improved support for C++ and flat shared libraries,
both of which were ABI changes.
!
!
microblaze-*-elf
Xilinx MicroBlaze processor.
This configuration is intended for embedded systems.
!
!
mips-*-*
If on a MIPS system you get an error message saying “does not have gp
sections for all it’s [sic] sectons [sic]”, don’t worry about it. This
happens whenever you use GAS with the MIPS linker, but there is not
--- 820,838 ----
GCC requires at least binutils version 2.17 on these targets.
!
m68k-*-uclinux
GCC 4.3 changed the uClinux configuration so that it uses the
‘m68k-linux-gnu’ ABI rather than the ‘m68k-elf’ ABI.
It also added improved support for C++ and flat shared libraries,
both of which were ABI changes.
!
microblaze-*-elf
Xilinx MicroBlaze processor.
This configuration is intended for embedded systems.
!
mips-*-*
If on a MIPS system you get an error message saying “does not have gp
sections for all it’s [sic] sectons [sic]”, don’t worry about it. This
happens whenever you use GAS with the MIPS linker, but there is not
*************** the use of break, use the --with-d
*** 914,942 ****
use traps on systems that support them.
!
!
moxie-*-elf
The moxie processor.
!
!
msp430-*-elf
TI MSP430 processor.
This configuration is intended for embedded systems.
!
!
nds32le-*-elf
Andes NDS32 target in little endian mode.
!
!
nds32be-*-elf
Andes NDS32 target in big endian mode.
!
!
nvptx-*-none
Nvidia PTX target.
Instead of GNU binutils, you will need to install
--- 872,895 ----
use traps on systems that support them.
!
moxie-*-elf
The moxie processor.
!
msp430-*-elf
TI MSP430 processor.
This configuration is intended for embedded systems.
!
nds32le-*-elf
Andes NDS32 target in little endian mode.
!
nds32be-*-elf
Andes NDS32 target in big endian mode.
!
nvptx-*-none
Nvidia PTX target.
Instead of GNU binutils, you will need to install
*************** the GCC sources.
*** 954,969 ****
--enable-newlib-io-long-long options when configuring.
!
!
powerpc-*-*
You can specify a default version for the -mcpu=cpu_type
switch by using the configure option --with-cpu-cpu_type.
You will need GNU binutils 2.15 or newer.
!
!
powerpc-*-darwin*
PowerPC running Darwin (Mac OS X kernel).
Pre-installed versions of Mac OS X may not include any developer tools,
--- 907,920 ----
--enable-newlib-io-long-long options when configuring.
!
powerpc-*-*
You can specify a default version for the -mcpu=cpu_type
switch by using the configure option --with-cpu-cpu_type.
You will need GNU binutils 2.15 or newer.
!
powerpc-*-darwin*
PowerPC running Darwin (Mac OS X kernel).
Pre-installed versions of Mac OS X may not include any developer tools,
*************** cctools-590.36 package referenced from
*** 977,1083 ****
on systems older than 10.3.9 (aka darwin7.9.0).
!
!
powerpc-*-elf
PowerPC system in big endian mode, running System V.4.
!
!
powerpc*-*-linux-gnu*
PowerPC system in big endian mode running Linux.
!
!
powerpc-*-netbsd*
PowerPC system in big endian mode running NetBSD.
!
!
powerpc-*-eabisim
Embedded PowerPC system in big endian mode for use in running under the
PSIM simulator.
!
!
powerpc-*-eabi
Embedded PowerPC system in big endian mode.
!
!
powerpcle-*-elf
PowerPC system in little endian mode, running System V.4.
!
!
powerpcle-*-eabisim
Embedded PowerPC system in little endian mode for use in running under
the PSIM simulator.
!
!
powerpcle-*-eabi
Embedded PowerPC system in little endian mode.
!
!
rl78-*-elf
The Renesas RL78 processor.
This configuration is intended for embedded systems.
!
!
riscv32-*-elf
The RISC-V RV32 instruction set.
This configuration is intended for embedded systems.
This (and all other RISC-V) targets are supported upstream as of the
binutils 2.28 release.
!
!
riscv32-*-linux
The RISC-V RV32 instruction set running GNU/Linux.
This (and all other RISC-V) targets are supported upstream as of the
binutils 2.28 release.
!
!
riscv64-*-elf
The RISC-V RV64 instruction set.
This configuration is intended for embedded systems.
This (and all other RISC-V) targets are supported upstream as of the
binutils 2.28 release.
!
!
riscv64-*-linux
The RISC-V RV64 instruction set running GNU/Linux.
This (and all other RISC-V) targets are supported upstream as of the
binutils 2.28 release.
!
!
rx-*-elf
The Renesas RX processor.
!
!
s390-*-linux*
S/390 system running GNU/Linux for S/390.
!
!
s390x-*-linux*
zSeries system (64-bit) running GNU/Linux for zSeries.
!
!
s390x-ibm-tpf*
zSeries system (64-bit) running TPF. This platform is
supported as cross-compilation target only.
!
!
*-*-solaris2*
Support for Solaris 9 has been removed in GCC 5. Support for Solaris
8 has been removed in GCC 4.8. Support for Solaris 7 has been removed
in GCC 4.6.
--- 928,1016 ----
on systems older than 10.3.9 (aka darwin7.9.0).
!
powerpc-*-elf
PowerPC system in big endian mode, running System V.4.
!
powerpc*-*-linux-gnu*
PowerPC system in big endian mode running Linux.
!
powerpc-*-netbsd*
PowerPC system in big endian mode running NetBSD.
!
powerpc-*-eabisim
Embedded PowerPC system in big endian mode for use in running under the
PSIM simulator.
!
powerpc-*-eabi
Embedded PowerPC system in big endian mode.
!
powerpcle-*-elf
PowerPC system in little endian mode, running System V.4.
!
powerpcle-*-eabisim
Embedded PowerPC system in little endian mode for use in running under
the PSIM simulator.
!
powerpcle-*-eabi
Embedded PowerPC system in little endian mode.
!
rl78-*-elf
The Renesas RL78 processor.
This configuration is intended for embedded systems.
!
riscv32-*-elf
The RISC-V RV32 instruction set.
This configuration is intended for embedded systems.
This (and all other RISC-V) targets are supported upstream as of the
binutils 2.28 release.
!
riscv32-*-linux
The RISC-V RV32 instruction set running GNU/Linux.
This (and all other RISC-V) targets are supported upstream as of the
binutils 2.28 release.
!
riscv64-*-elf
The RISC-V RV64 instruction set.
This configuration is intended for embedded systems.
This (and all other RISC-V) targets are supported upstream as of the
binutils 2.28 release.
!
riscv64-*-linux
The RISC-V RV64 instruction set running GNU/Linux.
This (and all other RISC-V) targets are supported upstream as of the
binutils 2.28 release.
!
rx-*-elf
The Renesas RX processor.
!
s390-*-linux*
S/390 system running GNU/Linux for S/390.
!
s390x-*-linux*
zSeries system (64-bit) running GNU/Linux for zSeries.
!
s390x-ibm-tpf*
zSeries system (64-bit) running TPF. This platform is
supported as cross-compilation target only.
!
*-*-solaris2*
Support for Solaris 9 has been removed in GCC 5. Support for Solaris
8 has been removed in GCC 4.8. Support for Solaris 7 has been removed
in GCC 4.6.
*************** you can install a pre-built GCC to boots
*** 1094,1101 ****
‘libstdc++-v3’or ‘boehm-gc’. We therefore recommend using the
following initial sequence of commands
!
!
% CONFIG_SHELL=/bin/ksh
% export CONFIG_SHELL
--- 1027,1034 ----
‘libstdc++-v3’or ‘boehm-gc’. We therefore recommend using the
following initial sequence of commands
!
!
% CONFIG_SHELL=/bin/ksh
% export CONFIG_SHELL
*************** causes the expect program t
*** 1161,1168 ****
testsuite failures appear.
!
!
sparc*-*-*
This section contains general configuration information for all
SPARC-based platforms. In addition to reading this section, please
read all other sections that match your target.
--- 1094,1100 ----
testsuite failures appear.
!
sparc*-*-*
This section contains general configuration information for all
SPARC-based platforms. In addition to reading this section, please
read all other sections that match your target.
*************** of the exact versions of these libraries
*** 1174,1181 ****
in the prerequisites.
!
!
sparc-sun-solaris2*
When GCC is configured to use GNU binutils 2.14 or later, the binaries
produced are smaller than the ones produced using Sun’s native tools;
this difference is quite significant for binaries containing debugging
--- 1106,1112 ----
in the prerequisites.
!
sparc-sun-solaris2*
When GCC is configured to use GNU binutils 2.14 or later, the binaries
produced are smaller than the ones produced using Sun’s native tools;
this difference is quite significant for binaries containing debugging
*************** target triplet must be specified as the
*** 1195,1270 ****
configure line. This target triplet can be obtained by invoking ./config.guess in the toplevel source directory of GCC (and
not that of GMP or MPFR or MPC). For example on a Solaris 9 system:
There is a bug in older versions of the Sun assembler which breaks
thread-local storage (TLS). A typical error message is
!
!
ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o:
symbol <unknown>: bad symbol type SECT: symbol type must be TLS
This bug is fixed in Sun patch 118683-03 or later.
!
!
sparc-*-linux*
!
!
sparc64-*-solaris2*
When configuring the GNU Multiple Precision Library (GMP), the MPFR
library or the MPC library, the canonical target triplet must be specified
as the build parameter on the configure line. For example
on a Solaris 9 system:
The C6X family of processors. This port requires binutils-2.22 or newer.
!
!
tilegx-*-linux*
The TILE-Gx processor in little endian mode, running GNU/Linux. This
port requires binutils-2.22 or newer.
!
!
tilegxbe-*-linux*
The TILE-Gx processor in big endian mode, running GNU/Linux. This
port requires binutils-2.23 or newer.
!
!
tilepro-*-linux*
The TILEPro processor running GNU/Linux. This port requires
binutils-2.22 or newer.
!
!
visium-*-elf
CDS VISIUMcore processor.
This configuration is intended for embedded systems.
!
!
*-*-vxworks*
Support for VxWorks is in flux. At present GCC supports only the
very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.
We welcome patches for other architectures supported by VxWorks 5.5.
--- 1126,1191 ----
configure line. This target triplet can be obtained by invoking ./config.guess in the toplevel source directory of GCC (and
not that of GMP or MPFR or MPC). For example on a Solaris 9 system:
There is a bug in older versions of the Sun assembler which breaks
thread-local storage (TLS). A typical error message is
!
!
ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o:
symbol <unknown>: bad symbol type SECT: symbol type must be TLS
This bug is fixed in Sun patch 118683-03 or later.
!
sparc-*-linux*
!
sparc64-*-solaris2*
When configuring the GNU Multiple Precision Library (GMP), the MPFR
library or the MPC library, the canonical target triplet must be specified
as the build parameter on the configure line. For example
on a Solaris 9 system:
The C6X family of processors. This port requires binutils-2.22 or newer.
!
tilegx-*-linux*
The TILE-Gx processor in little endian mode, running GNU/Linux. This
port requires binutils-2.22 or newer.
!
tilegxbe-*-linux*
The TILE-Gx processor in big endian mode, running GNU/Linux. This
port requires binutils-2.23 or newer.
!
tilepro-*-linux*
The TILEPro processor running GNU/Linux. This port requires
binutils-2.22 or newer.
!
visium-*-elf
CDS VISIUMcore processor.
This configuration is intended for embedded systems.
!
*-*-vxworks*
Support for VxWorks is in flux. At present GCC supports only the
very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.
We welcome patches for other architectures supported by VxWorks 5.5.
*************** that file to add the module to your kern
*** 1297,1312 ****
VxWorks will incorporate this module.)
!
!
x86_64-*-*, amd64-*-*
GCC supports the x86-64 architecture implemented by the AMD64 processor
(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
On GNU/Linux the default is a bi-arch compiler which is able to generate
both 64-bit x86-64 and 32-bit x86 code (via the -m32 switch).
!
!
x86_64-*-solaris2.1[0-9]*
GCC also supports the x86-64 architecture implemented by the AMD64
processor (‘amd64-*-*’ is an alias for ‘x86_64-*-*’) on
Solaris 10 or later. Unlike other systems, without special options a
--- 1218,1231 ----
VxWorks will incorporate this module.)
!
x86_64-*-*, amd64-*-*
GCC supports the x86-64 architecture implemented by the AMD64 processor
(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
On GNU/Linux the default is a bi-arch compiler which is able to generate
both 64-bit x86-64 and 32-bit x86 code (via the -m32 switch).
!
x86_64-*-solaris2.1[0-9]*
GCC also supports the x86-64 architecture implemented by the AMD64
processor (‘amd64-*-*’ is an alias for ‘x86_64-*-*’) on
Solaris 10 or later. Unlike other systems, without special options a
*************** as 64-bit code, configure with --t
*** 1319,1326 ****
and ‘CC=gcc -m64’.
!
!
xtensa*-*-elf
This target is intended for embedded Xtensa systems using the
‘newlib’ C library. It uses ELF but does not support shared
objects. Designed-defined instructions specified via the
--- 1238,1244 ----
and ‘CC=gcc -m64’.
!
xtensa*-*-elf
This target is intended for embedded Xtensa systems using the
‘newlib’ C library. It uses ELF but does not support shared
objects. Designed-defined instructions specified via the
*************** downloaded files include a customized co
*** 1335,1342 ****
which you can use to replace the default header file.
!
!
xtensa*-*-linux*
This target is for Xtensa systems running GNU/Linux. It supports ELF
shared objects and the GNU C library (glibc). It also generates
position-independent code (PIC) regardless of whether the
--- 1253,1259 ----
which you can use to replace the default header file.
!
xtensa*-*-linux*
This target is for Xtensa systems running GNU/Linux. It supports ELF
shared objects and the GNU C library (glibc). It also generates
position-independent code (PIC) regardless of whether the
*************** respects, this target is the same as the
*** 1345,1363 ****
‘xtensa*-*-elf’ target.
!
!
Microsoft Windows
!
!
Intel 16-bit versions
The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
supported.
However, the 32-bit port has limited support for Microsoft
Windows 3.11 in the Win32s environment, as a target only. See below.
!
!
Intel 32-bit versions
The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
XP, and Windows Vista, are supported by several different target
platforms. These targets differ in which Windows subsystem they target
--- 1262,1277 ----
‘xtensa*-*-elf’ target.
!
Microsoft Windows
!
Intel 16-bit versions
The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
supported.
However, the 32-bit port has limited support for Microsoft
Windows 3.11 in the Win32s environment, as a target only. See below.
!
Intel 32-bit versions
The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
XP, and Windows Vista, are supported by several different target
platforms. These targets differ in which Windows subsystem they target
*************** the Win32 subsystem that provides a subs
*** 1372,1392 ****
https://www.mkssoftware.com for more information.
!
!
Intel 64-bit versions
GCC contains support for x86-64 using the mingw-w64
runtime library, available from http://mingw-w64.org/doku.php.
This library should be used with the target triple x86_64-pc-mingw32.
Presently Windows for Itanium is not supported.
!
!
Windows CE
Windows CE is supported as a target only on Hitachi
SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
!
!
Other Windows Platforms
GCC no longer supports Windows NT on the Alpha or PowerPC.
GCC no longer supports the Windows POSIX subsystem. However, it does
--- 1286,1303 ----
https://www.mkssoftware.com for more information.
!
Intel 64-bit versions
GCC contains support for x86-64 using the mingw-w64
runtime library, available from http://mingw-w64.org/doku.php.
This library should be used with the target triple x86_64-pc-mingw32.
Presently Windows for Itanium is not supported.
!
Windows CE
Windows CE is supported as a target only on Hitachi
SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
!
Other Windows Platforms
GCC no longer supports Windows NT on the Alpha or PowerPC.
GCC no longer supports the Windows POSIX subsystem. However, it does
*************** be inactive. See
!
*************** the latest official GNU binutils release
*** 1415,1429 ****
or version 2.20 or above if building your own.
!
!
*-*-mingw32
GCC will build with and support only MinGW runtime 3.12 and later.
Earlier versions of headers are incompatible with the new default semantics
of extern inline in -std=c99 and -std=gnu99 modes.
!
!
Older systems
GCC contains support files for many older (1980s and early
1990s) Unix variants. For the most part, support for these systems
has not been deliberately removed, but it has not been maintained for
--- 1325,1337 ----
or version 2.20 or above if building your own.
!
*-*-mingw32
GCC will build with and support only MinGW runtime 3.12 and later.
Earlier versions of headers are incompatible with the new default semantics
of extern inline in -std=c99 and -std=gnu99 modes.
!
Older systems
GCC contains support files for many older (1980s and early
1990s) Unix variants. For the most part, support for these systems
has not been deliberately removed, but it has not been maintained for
*************** about GCC on such systems (which may no
*** 1466,1473 ****
current GCC) is to be found in the GCC texinfo manual.
!
!
all ELF targets (SVR4, Solaris 2, etc.)
C++ support is significantly better on ELF targets if you use the
GNU linker; duplicate copies of
inlines, vtables and template instantiations will be discarded
--- 1374,1380 ----
current GCC) is to be found in the GCC texinfo manual.
!
all ELF targets (SVR4, Solaris 2, etc.)
C++ support is significantly better on ELF targets if you use the
GNU linker; duplicate copies of
inlines, vtables and template instantiations will be discarded
diff -Nrcpad gcc-8.4.0/INSTALL/test.html gcc-8.5.0/INSTALL/test.html
*** gcc-8.4.0/INSTALL/test.html Wed Mar 4 08:32:15 2020
--- gcc-8.5.0/INSTALL/test.html Fri May 14 08:42:29 2021
*************** A GNU Manual
*** 19,25 ****
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
--- 19,25 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
!
Installing GCC
*************** You have freedom to copy and modify this
*** 33,55 ****
!
Identifiers that conflict and should be avoided.
*************** indicate a place that may require attent
*** 447,452 ****
--- 448,454 ----
MS adds:
_T
+ __deref
BSD adds:
__used
diff -Nrcpad gcc-8.4.0/libstdc++-v3/doc/xml/manual/configure.xml gcc-8.5.0/libstdc++-v3/doc/xml/manual/configure.xml
*** gcc-8.4.0/libstdc++-v3/doc/xml/manual/configure.xml Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/doc/xml/manual/configure.xml Fri May 14 08:42:11 2021
***************
*** 198,204 ****
--enable-libstdcxx-debug-flags=FLAGS
! This option is only valid when --enable-debug
is also specified, and applies to the debug builds only. With
this option, you can pass a specific string of flags to the
compiler to use when building the debug versions of libstdc++.
--- 198,205 ----
--enable-libstdcxx-debug-flags=FLAGS
! This option is only valid when
! --enable-libstdcxx-debug
is also specified, and applies to the debug builds only. With
this option, you can pass a specific string of flags to the
compiler to use when building the debug versions of libstdc++.
diff -Nrcpad gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml gcc-8.5.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml
*** gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml Fri May 14 08:42:11 2021
*************** features. See __cplusplus is used to check for the
presence of the required flag.
+ GCC 6.1 was the first release with non-experimental C++14 support,
+ so the API and ABI of features added in C++14 is only stable
+ since that release.
diff -Nrcpad gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml gcc-8.5.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
*** gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml Fri May 14 08:42:11 2021
*************** features. See 7.1
! __cpp_lib_is_callable >= 201603
--- 460,466 ----
7.1
! __cpp_lib_is_invocable >= 201703
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/bits/basic_string.h gcc-8.5.0/libstdc++-v3/include/bits/basic_string.h
*** gcc-8.4.0/libstdc++-v3/include/bits/basic_string.h Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/bits/basic_string.h Fri May 14 08:42:11 2021
***************
*** 48,58 ****
# include
#endif
-
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
#if _GLIBCXX_USE_CXX11_ABI
_GLIBCXX_BEGIN_NAMESPACE_CXX11
/**
--- 48,62 ----
# include
#endif
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
+ #if __cplusplus >= 201703L
+ // Support P0426R1 changes to char_traits in C++17.
+ # define __cpp_lib_constexpr_string 201611L
+ #endif
+
#if _GLIBCXX_USE_CXX11_ABI
_GLIBCXX_BEGIN_NAMESPACE_CXX11
/**
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/bits/char_traits.h gcc-8.5.0/libstdc++-v3/include/bits/char_traits.h
*** gcc-8.4.0/libstdc++-v3/include/bits/char_traits.h Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/bits/char_traits.h Fri May 14 08:42:11 2021
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 305,311 ****
if (__builtin_constant_p(__n)
&& __constant_char_array_p(__s1, __n)
&& __constant_char_array_p(__s2, __n))
! return __gnu_cxx::char_traits::compare(__s1, __s2, __n);
#endif
if (__n == 0)
return 0;
--- 305,318 ----
if (__builtin_constant_p(__n)
&& __constant_char_array_p(__s1, __n)
&& __constant_char_array_p(__s2, __n))
! {
! for (size_t __i = 0; __i < __n; ++__i)
! if (lt(__s1[__i], __s2[__i]))
! return -1;
! else if (lt(__s2[__i], __s1[__i]))
! return 1;
! return 0;
! }
#endif
if (__n == 0)
return 0;
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/bits/fs_path.h gcc-8.5.0/libstdc++-v3/include/bits/fs_path.h
*** gcc-8.4.0/libstdc++-v3/include/bits/fs_path.h Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/bits/fs_path.h Fri May 14 08:42:11 2021
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 477,483 ****
template
static basic_string<_CharT, _Traits, _Allocator>
! _S_str_convert(const string_type&, const _Allocator& __a);
static bool _S_is_dir_sep(value_type __ch)
{
--- 477,483 ----
template
static basic_string<_CharT, _Traits, _Allocator>
! _S_str_convert(basic_string_view, const _Allocator&);
static bool _S_is_dir_sep(value_type __ch)
{
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 873,879 ****
template
std::basic_string<_CharT, _Traits, _Allocator>
! path::_S_str_convert(const string_type& __str, const _Allocator& __a)
{
if (__str.size() == 0)
return std::basic_string<_CharT, _Traits, _Allocator>(__a);
--- 873,880 ----
template
std::basic_string<_CharT, _Traits, _Allocator>
! path::_S_str_convert(basic_string_view __str,
! const _Allocator& __a)
{
if (__str.size() == 0)
return std::basic_string<_CharT, _Traits, _Allocator>(__a);
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 971,977 ****
#else
const value_type __slash = '/';
#endif
! string_type __str(__a);
if (_M_type == _Type::_Root_dir)
__str.assign(1, __slash);
--- 972,980 ----
#else
const value_type __slash = '/';
#endif
! using _Alloc2 = typename allocator_traits<_Allocator>::template
! rebind_alloc;
! basic_string, _Alloc2> __str(__a);
if (_M_type == _Type::_Root_dir)
__str.assign(1, __slash);
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 983,989 ****
{
if (__add_slash)
__str += __slash;
! __str += __elem._M_pathname;
__add_slash = __elem._M_type == _Type::_Filename;
}
}
--- 986,992 ----
{
if (__add_slash)
__str += __slash;
! __str += basic_string_view(__elem._M_pathname);
__add_slash = __elem._M_type == _Type::_Filename;
}
}
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/bits/locale_facets.tcc gcc-8.5.0/libstdc++-v3/include/bits/locale_facets.tcc
*** gcc-8.4.0/libstdc++-v3/include/bits/locale_facets.tcc Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/bits/locale_facets.tcc Fri May 14 08:42:11 2021
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 992,998 ****
char __fbuf[16];
__num_base::_S_format_float(__io, __fbuf, __mod);
! #if _GLIBCXX_USE_C99_STDIO
// Precision is always used except for hexfloat format.
const bool __use_prec =
(__io.flags() & ios_base::floatfield) != ios_base::floatfield;
--- 992,998 ----
char __fbuf[16];
__num_base::_S_format_float(__io, __fbuf, __mod);
! #if _GLIBCXX_USE_C99_STDIO && !_GLIBCXX_HAVE_BROKEN_VSNPRINTF
// Precision is always used except for hexfloat format.
const bool __use_prec =
(__io.flags() & ios_base::floatfield) != ios_base::floatfield;
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/bits/ptr_traits.h gcc-8.5.0/libstdc++-v3/include/bits/ptr_traits.h
*** gcc-8.4.0/libstdc++-v3/include/bits/ptr_traits.h Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/bits/ptr_traits.h Fri May 14 08:42:11 2021
***************
*** 34,39 ****
--- 34,43 ----
#include
+ #if __cplusplus > 201703L
+ namespace __gnu_debug { struct _Safe_iterator_base; }
+ #endif
+
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 169,175 ****
template
constexpr auto
__to_address(const _Ptr& __ptr, _None...) noexcept
! { return std::__to_address(__ptr.operator->()); }
/**
* @brief Obtain address referenced by a pointer to an object
--- 173,184 ----
template
constexpr auto
__to_address(const _Ptr& __ptr, _None...) noexcept
! {
! if constexpr (is_base_of_v<__gnu_debug::_Safe_iterator_base, _Ptr>)
! return std::__to_address(__ptr.base().operator->());
! else
! return std::__to_address(__ptr.operator->());
! }
/**
* @brief Obtain address referenced by a pointer to an object
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/bits/random.h gcc-8.5.0/libstdc++-v3/include/bits/random.h
*** gcc-8.4.0/libstdc++-v3/include/bits/random.h Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/bits/random.h Fri May 14 08:42:11 2021
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 5968,5974 ****
{ }
template
! seed_seq(std::initializer_list<_IntType> il);
template
seed_seq(_InputIterator __begin, _InputIterator __end);
--- 5968,5974 ----
{ }
template
! seed_seq(std::initializer_list<_IntType> __il);
template
seed_seq(_InputIterator __begin, _InputIterator __end);
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/bits/stl_algo.h gcc-8.5.0/libstdc++-v3/include/bits/stl_algo.h
*** gcc-8.4.0/libstdc++-v3/include/bits/stl_algo.h Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/bits/stl_algo.h Fri May 14 08:42:11 2021
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5754,5759 ****
--- 5754,5762 ----
using _Gen = remove_reference_t<_UniformRandomBitGenerator>;
using __uc_type = common_type_t;
+ if (__first == __last)
+ return __out;
+
__distrib_type __d{};
_Size __unsampled_sz = std::distance(__first, __last);
__n = std::min(__n, __unsampled_sz);
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/debug/functions.h gcc-8.5.0/libstdc++-v3/include/debug/functions.h
*** gcc-8.4.0/libstdc++-v3/include/debug/functions.h Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/debug/functions.h Fri May 14 08:42:11 2021
*************** namespace __gnu_debug
*** 449,458 ****
{
template
static typename std::iterator_traits<_It>::reference
! __deref();
template() < __deref<_It>())>
static bool
_S_is_valid(_It __it)
{ return !(*__it < *__it); }
--- 449,458 ----
{
template
static typename std::iterator_traits<_It>::reference
! __ref();
template() < __ref<_It>())>
static bool
_S_is_valid(_It __it)
{ return !(*__it < *__it); }
*************** namespace __gnu_debug
*** 464,470 ****
{ return true; }
template()(__deref<_It>(), __deref<_It>()))>
static bool
_S_is_valid_pred(_It __it, _Pred __pred)
{ return !__pred(*__it, *__it); }
--- 464,470 ----
{ return true; }
template()(__ref<_It>(), __ref<_It>()))>
static bool
_S_is_valid_pred(_It __it, _Pred __pred)
{ return !__pred(*__it, *__it); }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/experimental/bits/fs_path.h gcc-8.5.0/libstdc++-v3/include/experimental/bits/fs_path.h
*** gcc-8.4.0/libstdc++-v3/include/experimental/bits/fs_path.h Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/experimental/bits/fs_path.h Fri May 14 08:42:11 2021
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 932,960 ****
inline std::u32string
path::u32string() const { return string(); }
- #ifndef _GLIBCXX_FILESYSTEM_IS_WINDOWS
template
inline std::basic_string<_CharT, _Traits, _Allocator>
path::generic_string(const _Allocator& __a) const
! { return string<_CharT, _Traits, _Allocator>(__a); }
inline std::string
! path::generic_string() const { return string(); }
#if _GLIBCXX_USE_WCHAR_T
inline std::wstring
! path::generic_wstring() const { return wstring(); }
#endif
inline std::string
! path::generic_u8string() const { return u8string(); }
inline std::u16string
! path::generic_u16string() const { return u16string(); }
inline std::u32string
! path::generic_u32string() const { return u32string(); }
! #endif
inline int
path::compare(const string_type& __s) const { return compare(path(__s)); }
--- 932,982 ----
inline std::u32string
path::u32string() const { return string(); }
template
inline std::basic_string<_CharT, _Traits, _Allocator>
path::generic_string(const _Allocator& __a) const
! {
! #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
! const _CharT __slash = is_same<_CharT, wchar_t>::value
! ? _CharT(L'/')
! : _CharT('/'); // Assume value is correct for the encoding.
! #else
! const _CharT __slash = _CharT('/');
! #endif
! basic_string<_CharT, _Traits, _Allocator> __str(__a);
! __str.reserve(_M_pathname.size());
! bool __add_slash = false;
! for (auto& __elem : *this)
! {
! if (__elem._M_type == _Type::_Root_dir)
! {
! __str += __slash;
! continue;
! }
! if (__add_slash)
! __str += __slash;
! __str += __elem.string<_CharT, _Traits, _Allocator>(__a);
! __add_slash = __elem._M_type == _Type::_Filename;
! }
! return __str;
! }
inline std::string
! path::generic_string() const { return generic_string(); }
#if _GLIBCXX_USE_WCHAR_T
inline std::wstring
! path::generic_wstring() const { return generic_string(); }
#endif
inline std::string
! path::generic_u8string() const { return generic_string(); }
inline std::u16string
! path::generic_u16string() const { return generic_string(); }
inline std::u32string
! path::generic_u32string() const { return generic_string(); }
inline int
path::compare(const string_type& __s) const { return compare(path(__s)); }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/experimental/memory_resource gcc-8.5.0/libstdc++-v3/include/experimental/memory_resource
*** gcc-8.4.0/libstdc++-v3/include/experimental/memory_resource Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/experimental/memory_resource Fri May 14 08:42:11 2021
***************
*** 29,34 ****
--- 29,38 ----
#ifndef _GLIBCXX_EXPERIMENTAL_MEMORY_RESOURCE
#define _GLIBCXX_EXPERIMENTAL_MEMORY_RESOURCE 1
+ #pragma GCC system_header
+
+ #if __cplusplus >= 201402L
+
#include
#include
#include
*************** namespace pmr {
*** 403,407 ****
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
!
! #endif
--- 407,411 ----
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
! #endif // C++14
! #endif // _GLIBCXX_EXPERIMENTAL_MEMORY_RESOURCE
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/experimental/numeric gcc-8.5.0/libstdc++-v3/include/experimental/numeric
*** gcc-8.4.0/libstdc++-v3/include/experimental/numeric Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/experimental/numeric Fri May 14 08:42:11 2021
*************** inline namespace fundamentals_v2
*** 53,67 ****
/// Greatest common divisor
template
constexpr common_type_t<_Mn, _Nn>
! gcd(_Mn __m, _Nn __n)
{
! static_assert(is_integral_v<_Mn>, "gcd arguments are integers");
! static_assert(is_integral_v<_Nn>, "gcd arguments are integers");
! static_assert(!is_same_v, bool>,
! "gcd arguments are not bools");
! static_assert(!is_same_v, bool>,
! "gcd arguments are not bools");
! return std::__detail::__gcd(__m, __n);
}
/// Least common multiple
--- 53,71 ----
/// Greatest common divisor
template
constexpr common_type_t<_Mn, _Nn>
! gcd(_Mn __m, _Nn __n) noexcept
{
! static_assert(is_integral_v<_Mn>,
! "std::experimental::gcd arguments must be integers");
! static_assert(is_integral_v<_Nn>,
! "std::experimental::gcd arguments must be integers");
! static_assert(_Mn(2) != _Mn(1),
! "std::experimental::gcd arguments must not be bool");
! static_assert(_Nn(2) != _Nn(1),
! "std::experimental::gcd arguments must not be bool");
! using _Up = make_unsigned_t>;
! return std::__detail::__gcd(std::__detail::__absu<_Up>(__m),
! std::__detail::__absu<_Up>(__n));
}
/// Least common multiple
*************** inline namespace fundamentals_v2
*** 69,81 ****
constexpr common_type_t<_Mn, _Nn>
lcm(_Mn __m, _Nn __n)
{
! static_assert(is_integral_v<_Mn>, "lcm arguments are integers");
! static_assert(is_integral_v<_Nn>, "lcm arguments are integers");
! static_assert(!is_same_v, bool>,
! "lcm arguments are not bools");
! static_assert(!is_same_v, bool>,
! "lcm arguments are not bools");
! return std::__detail::__lcm(__m, __n);
}
} // namespace fundamentals_v2
} // namespace experimental
--- 73,89 ----
constexpr common_type_t<_Mn, _Nn>
lcm(_Mn __m, _Nn __n)
{
! static_assert(is_integral_v<_Mn>,
! "std::experimental::lcm arguments must be integers");
! static_assert(is_integral_v<_Nn>,
! "std::experimental::lcm arguments must be integers");
! static_assert(_Mn(2) != _Mn(1),
! "std::experimental::lcm arguments must not be bool");
! static_assert(_Nn(2) != _Nn(1),
! "std::experimental::lcm arguments must not be bool");
! using _Up = make_unsigned_t>;
! return std::__detail::__lcm(std::__detail::__absu<_Up>(__m),
! std::__detail::__absu<_Up>(__n));
}
} // namespace fundamentals_v2
} // namespace experimental
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/experimental/random gcc-8.5.0/libstdc++-v3/include/experimental/random
*** gcc-8.4.0/libstdc++-v3/include/experimental/random Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/experimental/random Fri May 14 08:42:11 2021
***************
*** 29,34 ****
--- 29,35 ----
#ifndef _GLIBCXX_EXPERIMENTAL_RANDOM
#define _GLIBCXX_EXPERIMENTAL_RANDOM 1
+ #if __cplusplus >= 201402L
#include
#include
*************** inline namespace fundamentals_v2 {
*** 77,80 ****
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
! #endif
--- 78,82 ----
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
! #endif // C++14
! #endif // _GLIBCXX_EXPERIMENTAL_RANDOM
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/experimental/source_location gcc-8.5.0/libstdc++-v3/include/experimental/source_location
*** gcc-8.4.0/libstdc++-v3/include/experimental/source_location Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/experimental/source_location Fri May 14 08:42:11 2021
***************
*** 29,34 ****
--- 29,35 ----
#ifndef _GLIBCXX_EXPERIMENTAL_SRCLOC
#define _GLIBCXX_EXPERIMENTAL_SRCLOC 1
+ #if __cplusplus >= 201402L
#include
namespace std {
*************** inline namespace fundamentals_v2 {
*** 83,86 ****
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
! #endif
--- 84,88 ----
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
! #endif // C++14
! #endif // _GLIBCXX_EXPERIMENTAL_SRCLOC
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/experimental/string_view gcc-8.5.0/libstdc++-v3/include/experimental/string_view
*** gcc-8.4.0/libstdc++-v3/include/experimental/string_view Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/experimental/string_view Fri May 14 08:42:11 2021
*************** inline namespace fundamentals_v1
*** 178,185 ****
constexpr const _CharT&
operator[](size_type __pos) const
{
! // TODO: Assert to restore in a way compatible with the constexpr.
! // __glibcxx_assert(__pos < this->_M_len);
return *(this->_M_str + __pos);
}
--- 178,184 ----
constexpr const _CharT&
operator[](size_type __pos) const
{
! __glibcxx_assert(__pos < this->_M_len);
return *(this->_M_str + __pos);
}
*************** inline namespace fundamentals_v1
*** 198,213 ****
constexpr const _CharT&
front() const
{
! // TODO: Assert to restore in a way compatible with the constexpr.
! // __glibcxx_assert(this->_M_len > 0);
return *this->_M_str;
}
constexpr const _CharT&
back() const
{
! // TODO: Assert to restore in a way compatible with the constexpr.
! // __glibcxx_assert(this->_M_len > 0);
return *(this->_M_str + this->_M_len - 1);
}
--- 197,210 ----
constexpr const _CharT&
front() const
{
! __glibcxx_assert(this->_M_len > 0);
return *this->_M_str;
}
constexpr const _CharT&
back() const
{
! __glibcxx_assert(this->_M_len > 0);
return *(this->_M_str + this->_M_len - 1);
}
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/experimental/utility gcc-8.5.0/libstdc++-v3/include/experimental/utility
*** gcc-8.4.0/libstdc++-v3/include/experimental/utility Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/experimental/utility Fri May 14 08:42:11 2021
***************
*** 29,34 ****
--- 29,35 ----
#ifndef _GLIBCXX_EXPERIMENTAL_UTILITY
#define _GLIBCXX_EXPERIMENTAL_UTILITY 1
+ #if __cplusplus >= 201402L
#include
#include
#include
*************** inline namespace fundamentals_v2 {
*** 46,49 ****
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
! #endif
--- 47,51 ----
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
! #endif // C++14
! #endif // _GLIBCXX_EXPERIMENTAL_UTILITY
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/std/mutex gcc-8.5.0/libstdc++-v3/include/std/mutex
*** gcc-8.4.0/libstdc++-v3/include/std/mutex Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/std/mutex Fri May 14 08:42:11 2021
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 673,679 ****
std::forward<_Args>(__args)...);
};
#ifdef _GLIBCXX_HAVE_TLS
! __once_callable = std::__addressof(__callable);
__once_call = []{ (*(decltype(__callable)*)__once_callable)(); };
#else
unique_lock __functor_lock(__get_once_mutex());
--- 673,679 ----
std::forward<_Args>(__args)...);
};
#ifdef _GLIBCXX_HAVE_TLS
! __once_callable = std::__addressof(__callable); // NOLINT: PR 82481
__once_call = []{ (*(decltype(__callable)*)__once_callable)(); };
#else
unique_lock __functor_lock(__get_once_mutex());
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 688,699 ****
__set_once_functor_lock_ptr(0);
#endif
- #ifdef __clang_analyzer__
- // PR libstdc++/82481
- __once_callable = nullptr;
- __once_call = nullptr;
- #endif
-
if (__e)
__throw_system_error(__e);
}
--- 688,693 ----
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/std/numeric gcc-8.5.0/libstdc++-v3/include/std/numeric
*** gcc-8.4.0/libstdc++-v3/include/std/numeric Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/std/numeric Fri May 14 08:42:11 2021
***************
*** 60,65 ****
--- 60,66 ----
#include
#include
#include
+ #include
#ifdef _GLIBCXX_PARALLEL
# include
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 83,120 ****
namespace __detail
{
! // std::abs is not constexpr and doesn't support unsigned integers.
! template
! constexpr
! enable_if_t<__and_, is_signed<_Tp>>::value, _Tp>
! __abs_integral(_Tp __val)
! { return __val < 0 ? -__val : __val; }
!
! template
! constexpr
! enable_if_t<__and_, is_unsigned<_Tp>>::value, _Tp>
! __abs_integral(_Tp __val)
! { return __val; }
! void __abs_integral(bool) = delete;
! template
! constexpr common_type_t<_Mn, _Nn>
! __gcd(_Mn __m, _Nn __n)
{
! return __m == 0 ? __detail::__abs_integral(__n)
! : __n == 0 ? __detail::__abs_integral(__m)
! : __detail::__gcd(__n, __m % __n);
}
! /// Least common multiple
! template
! constexpr common_type_t<_Mn, _Nn>
! __lcm(_Mn __m, _Nn __n)
{
return (__m != 0 && __n != 0)
! ? (__detail::__abs_integral(__m) / __detail::__gcd(__m, __n))
! * __detail::__abs_integral(__n)
: 0;
}
} // namespace __detail
--- 84,121 ----
namespace __detail
{
! // std::abs is not constexpr, doesn't support unsigned integers,
! // and std::abs(std::numeric_limits::min()) is undefined.
! template
! constexpr _Up
! __absu(_Tp __val)
! {
! static_assert(is_unsigned<_Up>::value, "result type must be unsigned");
! static_assert(sizeof(_Up) >= sizeof(_Tp),
! "result type must be at least as wide as the input type");
! return __val < 0 ? -(_Up)__val : (_Up)__val;
! }
! template void __absu(bool) = delete;
! // GCD implementation
! template
! constexpr _Tp
! __gcd(_Tp __m, _Tp __n)
{
! static_assert(is_unsigned<_Tp>::value, "type must be unsigned");
! return __m == 0 ? __n
! : __n == 0 ? __m
! : __detail::__gcd(__n, _Tp(__m % __n));
}
! // LCM implementation
! template
! constexpr _Tp
! __lcm(_Tp __m, _Tp __n)
{
return (__m != 0 && __n != 0)
! ? (__m / __detail::__gcd(__m, __n)) * __n
: 0;
}
} // namespace __detail
*************** namespace __detail
*** 129,157 ****
/// Greatest common divisor
template
constexpr common_type_t<_Mn, _Nn>
! gcd(_Mn __m, _Nn __n)
{
! static_assert(is_integral_v<_Mn>, "gcd arguments are integers");
! static_assert(is_integral_v<_Nn>, "gcd arguments are integers");
! static_assert(!is_same_v, bool>,
! "gcd arguments are not bools");
! static_assert(!is_same_v, bool>,
! "gcd arguments are not bools");
! return __detail::__gcd(__m, __n);
}
/// Least common multiple
template
constexpr common_type_t<_Mn, _Nn>
! lcm(_Mn __m, _Nn __n)
{
! static_assert(is_integral_v<_Mn>, "lcm arguments are integers");
! static_assert(is_integral_v<_Nn>, "lcm arguments are integers");
! static_assert(!is_same_v, bool>,
! "lcm arguments are not bools");
! static_assert(!is_same_v, bool>,
! "lcm arguments are not bools");
! return __detail::__lcm(__m, __n);
}
#endif // C++17
--- 130,158 ----
/// Greatest common divisor
template
constexpr common_type_t<_Mn, _Nn>
! gcd(_Mn __m, _Nn __n) noexcept
{
! static_assert(is_integral_v<_Mn>, "std::gcd arguments must be integers");
! static_assert(is_integral_v<_Nn>, "std::gcd arguments must be integers");
! static_assert(_Mn(2) != _Mn(1), "std::gcd arguments must not be bool");
! static_assert(_Nn(2) != _Nn(1), "std::gcd arguments must not be bool");
! using _Up = make_unsigned_t>;
! return __detail::__gcd(__detail::__absu<_Up>(__m),
! __detail::__absu<_Up>(__n));
}
/// Least common multiple
template
constexpr common_type_t<_Mn, _Nn>
! lcm(_Mn __m, _Nn __n) noexcept
{
! static_assert(is_integral_v<_Mn>, "std::lcm arguments must be integers");
! static_assert(is_integral_v<_Nn>, "std::lcm arguments must be integers");
! static_assert(_Mn(2) == 2, "std::lcm arguments must not be bool");
! static_assert(_Nn(2) == 2, "std::lcm arguments must not be bool");
! using _Up = make_unsigned_t>;
! return __detail::__lcm(__detail::__absu<_Up>(__m),
! __detail::__absu<_Up>(__n));
}
#endif // C++17
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/std/string_view gcc-8.5.0/libstdc++-v3/include/std/string_view
*** gcc-8.4.0/libstdc++-v3/include/std/string_view Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/std/string_view Fri May 14 08:42:11 2021
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 169,176 ****
constexpr const _CharT&
operator[](size_type __pos) const noexcept
{
! // TODO: Assert to restore in a way compatible with the constexpr.
! // __glibcxx_assert(__pos < this->_M_len);
return *(this->_M_str + __pos);
}
--- 169,175 ----
constexpr const _CharT&
operator[](size_type __pos) const noexcept
{
! __glibcxx_assert(__pos < this->_M_len);
return *(this->_M_str + __pos);
}
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 187,202 ****
constexpr const _CharT&
front() const noexcept
{
! // TODO: Assert to restore in a way compatible with the constexpr.
! // __glibcxx_assert(this->_M_len > 0);
return *this->_M_str;
}
constexpr const _CharT&
back() const noexcept
{
! // TODO: Assert to restore in a way compatible with the constexpr.
! // __glibcxx_assert(this->_M_len > 0);
return *(this->_M_str + this->_M_len - 1);
}
--- 186,199 ----
constexpr const _CharT&
front() const noexcept
{
! __glibcxx_assert(this->_M_len > 0);
return *this->_M_str;
}
constexpr const _CharT&
back() const noexcept
{
! __glibcxx_assert(this->_M_len > 0);
return *(this->_M_str + this->_M_len - 1);
}
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/std/tuple gcc-8.5.0/libstdc++-v3/include/std/tuple
*** gcc-8.4.0/libstdc++-v3/include/std/tuple Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/std/tuple Fri May 14 08:42:11 2021
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 271,283 ****
_Base(__use_alloc<_Head, _Alloc, _Head>(__a),
std::forward<_Head>(_M_head(__in))) { }
! template
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
! const _Tuple_impl<_Idx, _UElements...>& __in)
: _Inherited(__tag, __a,
! _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)),
! _Base(__use_alloc<_Head, _Alloc, _Head>(__a),
! _Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { }
template
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
--- 271,283 ----
_Base(__use_alloc<_Head, _Alloc, _Head>(__a),
std::forward<_Head>(_M_head(__in))) { }
! template
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
! const _Tuple_impl<_Idx, _UHead, _UTails...>& __in)
: _Inherited(__tag, __a,
! _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)),
! _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a),
! _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) { }
template
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 410,416 ****
template
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
const _Tuple_impl<_Idx, _UHead>& __in)
! : _Base(__use_alloc<_Head, _Alloc, _Head>(__a),
_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { }
template
--- 410,416 ----
template
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
const _Tuple_impl<_Idx, _UHead>& __in)
! : _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a),
_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { }
template
diff -Nrcpad gcc-8.4.0/libstdc++-v3/include/std/type_traits gcc-8.5.0/libstdc++-v3/include/std/type_traits
*** gcc-8.4.0/libstdc++-v3/include/std/type_traits Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/include/std/type_traits Fri May 14 08:42:11 2021
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 915,969 ****
: public __is_move_constructible_impl<_Tp>
{ };
! template
! struct __is_nt_default_constructible_atom
! : public integral_constant
{ };
! template::value>
! struct __is_nt_default_constructible_impl;
! template
! struct __is_nt_default_constructible_impl<_Tp, true>
! : public __and_<__is_array_known_bounds<_Tp>,
! __is_nt_default_constructible_atom::type>>
{ };
template
! struct __is_nt_default_constructible_impl<_Tp, false>
! : public __is_nt_default_constructible_atom<_Tp>
{ };
! /// is_nothrow_default_constructible
! template
! struct is_nothrow_default_constructible
! : public __and_,
! __is_nt_default_constructible_impl<_Tp>>
{ };
template
! struct __is_nt_constructible_impl
! : public integral_constant()...))>
! { };
! template
! struct __is_nt_constructible_impl<_Tp, _Arg>
! : public integral_constant(declval<_Arg>()))>
{ };
template
! struct __is_nt_constructible_impl<_Tp>
! : public is_nothrow_default_constructible<_Tp>
{ };
- /// is_nothrow_constructible
- template
- struct is_nothrow_constructible
- : public __and_,
- __is_nt_constructible_impl<_Tp, _Args...>>
- { };
template::value>
struct __is_nothrow_copy_constructible_impl;
--- 915,962 ----
: public __is_move_constructible_impl<_Tp>
{ };
! template
! struct __is_nt_constructible_impl
! : public false_type
{ };
! template
! struct __is_nt_constructible_impl
! : public __bool_constant()...))>
! { };
! template
! struct __is_nt_constructible_impl
! : public __bool_constant(std::declval<_Arg>()))>
{ };
template
! struct __is_nt_constructible_impl
! : public __bool_constant
{ };
! template
! struct __is_nt_constructible_impl
! : public __bool_constant::type())>
{ };
template
! using __is_nothrow_constructible_impl
! = __is_nt_constructible_impl<__is_constructible(_Tp, _Args...),
! _Tp, _Args...>;
! /// is_nothrow_constructible
! template
! struct is_nothrow_constructible
! : public __is_nothrow_constructible_impl<_Tp, _Args...>::type
{ };
+ /// is_nothrow_default_constructible
template
! struct is_nothrow_default_constructible
! : public __is_nothrow_constructible_impl<_Tp>::type
{ };
template::value>
struct __is_nothrow_copy_constructible_impl;
diff -Nrcpad gcc-8.4.0/libstdc++-v3/libsupc++/new_opa.cc gcc-8.5.0/libstdc++-v3/libsupc++/new_opa.cc
*** gcc-8.4.0/libstdc++-v3/libsupc++/new_opa.cc Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/libsupc++/new_opa.cc Fri May 14 08:42:11 2021
***************
*** 26,32 ****
#include
#include
#include
- #include
#include "new"
#if !_GLIBCXX_HAVE_ALIGNED_ALLOC && !_GLIBCXX_HAVE__ALIGNED_MALLOC \
--- 26,31 ----
*************** using std::new_handler;
*** 43,48 ****
--- 42,48 ----
using std::bad_alloc;
#if ! _GLIBCXX_HOSTED
+ using std::size_t;
extern "C"
{
# if _GLIBCXX_HAVE_ALIGNED_ALLOC
diff -Nrcpad gcc-8.4.0/libstdc++-v3/python/libstdcxx/v6/printers.py gcc-8.5.0/libstdc++-v3/python/libstdcxx/v6/printers.py
*** gcc-8.4.0/libstdc++-v3/python/libstdcxx/v6/printers.py Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/python/libstdcxx/v6/printers.py Fri May 14 08:42:11 2021
*************** class UniquePointerPrinter:
*** 179,191 ****
def __init__ (self, typename, val):
self.val = val
! impl_type = val.type.fields()[0].type.tag
! if is_specialization_of(impl_type, '__uniq_ptr_impl'): # New implementation
! self.pointer = val['_M_t']['_M_t']['_M_head_impl']
! elif is_specialization_of(impl_type, 'tuple'):
! self.pointer = val['_M_t']['_M_head_impl']
else:
! raise ValueError("Unsupported implementation for unique_ptr: %s" % impl_type)
def children (self):
return SmartPtrIterator(self.pointer)
--- 179,200 ----
def __init__ (self, typename, val):
self.val = val
! impl_type = val.type.fields()[0].type.strip_typedefs()
! if is_specialization_of(str(impl_type), '__uniq_ptr_impl'): # New implementation
! tuple_member = val['_M_t']['_M_t']
! elif is_specialization_of(str(impl_type), 'tuple'):
! tuple_member = val['_M_t']
else:
! raise ValueError("Unsupported implementation for unique_ptr: %s" % str(impl_type))
! tuple_impl_type = tuple_member.type.fields()[0].type # _Tuple_impl
! tuple_head_type = tuple_impl_type.fields()[1].type # _Head_base
! head_field = tuple_head_type.fields()[0]
! if head_field.name == '_M_head_impl':
! self.pointer = tuple_member['_M_head_impl']
! elif head_field.is_base_class:
! self.pointer = tuple_member.cast(head_field.type)
! else:
! raise ValueError("Unsupported implementation for tuple in unique_ptr: %s" % str(impl_type))
def children (self):
return SmartPtrIterator(self.pointer)
*************** class SingleObjContainerPrinter(object):
*** 1030,1035 ****
--- 1039,1067 ----
return self.visualizer.display_hint ()
return self.hint
+ def function_pointer_to_name(f):
+ "Find the name of the function referred to by the gdb.Value f, "
+ " which should contain a function pointer from the program."
+
+ # Turn the function pointer into an actual address.
+ # This is needed to unpack ppc64 function descriptors.
+ f = f.dereference().address
+
+ if sys.version_info[0] == 2:
+ # Older versions of GDB need to use long for Python 2,
+ # because int(f) on 64-bit big-endian values raises a
+ # gdb.error saying "Cannot convert value to int."
+ f = long(f)
+ else:
+ f = int(f)
+
+ try:
+ # If the function can't be found older versions of GDB raise a
+ # RuntimeError saying "Cannot locate object file for block."
+ return gdb.block_for_pc(f).function.name
+ except:
+ return None
+
class StdExpAnyPrinter(SingleObjContainerPrinter):
"Print a std::any or std::experimental::any"
*************** class StdExpAnyPrinter(SingleObjContaine
*** 1042,1052 ****
visualizer = None
mgr = self.val['_M_manager']
if mgr != 0:
! func = gdb.block_for_pc(int(mgr.cast(gdb.lookup_type('intptr_t'))))
if not func:
! raise ValueError("Invalid function pointer in %s" % self.typename)
rx = r"""({0}::_Manager_\w+<.*>)::_S_manage""".format(typename)
! m = re.match(rx, func.function.name)
if not m:
raise ValueError("Unknown manager function in %s" % self.typename)
--- 1074,1084 ----
visualizer = None
mgr = self.val['_M_manager']
if mgr != 0:
! func = function_pointer_to_name(mgr)
if not func:
! raise ValueError("Invalid function pointer in %s" % (self.typename))
rx = r"""({0}::_Manager_\w+<.*>)::_S_manage""".format(typename)
! m = re.match(rx, func)
if not m:
raise ValueError("Unknown manager function in %s" % self.typename)
*************** class StdExpStringViewPrinter:
*** 1184,1193 ****
return 'string'
class StdExpPathPrinter:
! "Print a std::experimental::filesystem::path"
def __init__ (self, typename, val):
self.val = val
start = self.val['_M_cmpts']['_M_impl']['_M_start']
finish = self.val['_M_cmpts']['_M_impl']['_M_finish']
self.num_cmpts = int (finish - start)
--- 1216,1226 ----
return 'string'
class StdExpPathPrinter:
! "Print a std::experimental::filesystem::path or std::filesystem::path"
def __init__ (self, typename, val):
self.val = val
+ self.typename = typename
start = self.val['_M_cmpts']['_M_impl']['_M_start']
finish = self.val['_M_cmpts']['_M_impl']['_M_finish']
self.num_cmpts = int (finish - start)
*************** class StdExpPathPrinter:
*** 1209,1215 ****
return "filesystem::path %s" % path
class _iterator(Iterator):
! def __init__(self, cmpts):
self.item = cmpts['_M_impl']['_M_start']
self.finish = cmpts['_M_impl']['_M_finish']
self.count = 0
--- 1242,1249 ----
return "filesystem::path %s" % path
class _iterator(Iterator):
! def __init__(self, cmpts, pathtype):
! self.pathtype = pathtype
self.item = cmpts['_M_impl']['_M_start']
self.finish = cmpts['_M_impl']['_M_finish']
self.count = 0
*************** class StdExpPathPrinter:
*** 1225,1237 ****
self.count = self.count + 1
self.item = self.item + 1
path = item['_M_pathname']
! t = StdExpPathPrinter(item.type.name, item)._path_type()
if not t:
t = count
return ('[%s]' % t, path)
def children(self):
! return self._iterator(self.val['_M_cmpts'])
class StdPairPrinter:
--- 1259,1271 ----
self.count = self.count + 1
self.item = self.item + 1
path = item['_M_pathname']
! t = StdExpPathPrinter(self.pathtype, item)._path_type()
if not t:
t = count
return ('[%s]' % t, path)
def children(self):
! return self._iterator(self.val['_M_cmpts'], self.typename)
class StdPairPrinter:
diff -Nrcpad gcc-8.4.0/libstdc++-v3/src/c++17/Makefile.in gcc-8.5.0/libstdc++-v3/src/c++17/Makefile.in
*** gcc-8.4.0/libstdc++-v3/src/c++17/Makefile.in Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/src/c++17/Makefile.in Thu Jan 1 00:00:00 1970
***************
*** 1,754 ****
- # Makefile.in generated by automake 1.15.1 from Makefile.am.
- # @configure_input@
-
- # Copyright (C) 1994-2017 Free Software Foundation, Inc.
-
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
-
- @SET_MAKE@
-
- VPATH = @srcdir@
- am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
- }
- am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
- am__make_dryrun = (target_option=n; $(am__make_running_with_option))
- am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
- pkgdatadir = $(datadir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkglibexecdir = $(libexecdir)/@PACKAGE@
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- install_sh_DATA = $(install_sh) -c -m 644
- install_sh_PROGRAM = $(install_sh) -c
- install_sh_SCRIPT = $(install_sh) -c
- INSTALL_HEADER = $(INSTALL_DATA)
- transform = $(program_transform_name)
- NORMAL_INSTALL = :
- PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
- target_triplet = @target@
- subdir = src/c++17
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
- $(top_srcdir)/../config/enable.m4 \
- $(top_srcdir)/../config/futex.m4 \
- $(top_srcdir)/../config/hwcaps.m4 \
- $(top_srcdir)/../config/iconv.m4 \
- $(top_srcdir)/../config/lead-dot.m4 \
- $(top_srcdir)/../config/lib-ld.m4 \
- $(top_srcdir)/../config/lib-link.m4 \
- $(top_srcdir)/../config/lib-prefix.m4 \
- $(top_srcdir)/../config/lthostflags.m4 \
- $(top_srcdir)/../config/multi.m4 \
- $(top_srcdir)/../config/no-executables.m4 \
- $(top_srcdir)/../config/override.m4 \
- $(top_srcdir)/../config/stdint.m4 \
- $(top_srcdir)/../config/unwind_ipinfo.m4 \
- $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
- $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
- $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \
- $(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
- $(top_srcdir)/../config/gc++filt.m4 \
- $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \
- $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
- DIST_COMMON = $(srcdir)/Makefile.am
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- CONFIG_CLEAN_VPATH_FILES =
- LTLIBRARIES = $(noinst_LTLIBRARIES)
- libc__17convenience_la_LIBADD =
- @ENABLE_DUAL_ABI_TRUE@am__objects_1 = cow-fs_dir.lo cow-fs_ops.lo \
- @ENABLE_DUAL_ABI_TRUE@ cow-fs_path.lo
- am__objects_2 = fs_dir.lo fs_ops.lo fs_path.lo memory_resource.lo \
- $(am__objects_1)
- @ENABLE_DUAL_ABI_TRUE@am__objects_3 = cow-string-inst.lo
- @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_4 = ostream-inst.lo \
- @ENABLE_EXTERN_TEMPLATE_TRUE@ string-inst.lo $(am__objects_3)
- am_libc__17convenience_la_OBJECTS = $(am__objects_2) $(am__objects_4)
- libc__17convenience_la_OBJECTS = $(am_libc__17convenience_la_OBJECTS)
- AM_V_lt = $(am__v_lt_@AM_V@)
- am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
- am__v_lt_0 = --silent
- am__v_lt_1 =
- AM_V_P = $(am__v_P_@AM_V@)
- am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
- am__v_P_0 = false
- am__v_P_1 = :
- AM_V_GEN = $(am__v_GEN_@AM_V@)
- am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
- am__v_GEN_0 = @echo " GEN " $@;
- am__v_GEN_1 =
- AM_V_at = $(am__v_at_@AM_V@)
- am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
- am__v_at_0 = @
- am__v_at_1 =
- DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
- depcomp =
- am__depfiles_maybe =
- CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
- AM_V_CXX = $(am__v_CXX_@AM_V@)
- am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
- am__v_CXX_0 = @echo " CXX " $@;
- am__v_CXX_1 =
- CXXLD = $(CXX)
- AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
- am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
- am__v_CXXLD_0 = @echo " CXXLD " $@;
- am__v_CXXLD_1 =
- SOURCES = $(libc__17convenience_la_SOURCES)
- am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
- am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
- # Read a list of newline-separated strings from the standard input,
- # and print each of them once, without duplicates. Input order is
- # *not* preserved.
- am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
- '
- # Make sure the list of sources is unique. This is necessary because,
- # e.g., the same source file might be shared among _SOURCES variables
- # for different programs/libraries.
- am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
- ETAGS = etags
- CTAGS = ctags
- ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
- ACLOCAL = @ACLOCAL@
- ALLOCATOR_H = @ALLOCATOR_H@
- ALLOCATOR_NAME = @ALLOCATOR_NAME@
- AMTAR = @AMTAR@
- AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
- AR = @AR@
- AS = @AS@
- ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@
- ATOMIC_FLAGS = @ATOMIC_FLAGS@
- ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@
- AUTOCONF = @AUTOCONF@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
- BASIC_FILE_CC = @BASIC_FILE_CC@
- BASIC_FILE_H = @BASIC_FILE_H@
- CC = @CC@
- CCODECVT_CC = @CCODECVT_CC@
- CCOLLATE_CC = @CCOLLATE_CC@
- CCTYPE_CC = @CCTYPE_CC@
- CFLAGS = @CFLAGS@
- CLOCALE_CC = @CLOCALE_CC@
- CLOCALE_H = @CLOCALE_H@
- CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@
- CMESSAGES_CC = @CMESSAGES_CC@
- CMESSAGES_H = @CMESSAGES_H@
- CMONEY_CC = @CMONEY_CC@
- CNUMERIC_CC = @CNUMERIC_CC@
- CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@
- CPU_OPT_BITS_RANDOM = @CPU_OPT_BITS_RANDOM@
- CPU_OPT_EXT_RANDOM = @CPU_OPT_EXT_RANDOM@
- CSTDIO_H = @CSTDIO_H@
- CTIME_CC = @CTIME_CC@
- CTIME_H = @CTIME_H@
- CXX = @CXX@
- CXXCPP = @CXXCPP@
- CXXFILT = @CXXFILT@
- CXXFLAGS = @CXXFLAGS@
- CYGPATH_W = @CYGPATH_W@
- C_INCLUDE_DIR = @C_INCLUDE_DIR@
- DBLATEX = @DBLATEX@
- DEBUG_FLAGS = @DEBUG_FLAGS@
- DEFS = @DEFS@
- DOT = @DOT@
- DOXYGEN = @DOXYGEN@
- DSYMUTIL = @DSYMUTIL@
- DUMPBIN = @DUMPBIN@
- ECHO_C = @ECHO_C@
- ECHO_N = @ECHO_N@
- ECHO_T = @ECHO_T@
- EGREP = @EGREP@
- ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@
- EXEEXT = @EXEEXT@
- EXTRA_CFLAGS = @EXTRA_CFLAGS@
- EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
- FGREP = @FGREP@
- GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
- GLIBCXX_LIBS = @GLIBCXX_LIBS@
- GREP = @GREP@
- HWCAP_CFLAGS = @HWCAP_CFLAGS@
- INSTALL = @INSTALL@
- INSTALL_DATA = @INSTALL_DATA@
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_SCRIPT = @INSTALL_SCRIPT@
- INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- LD = @LD@
- LDFLAGS = @LDFLAGS@
- LIBICONV = @LIBICONV@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LIPO = @LIPO@
- LN_S = @LN_S@
- LONG_DOUBLE_COMPAT_FLAGS = @LONG_DOUBLE_COMPAT_FLAGS@
- LTLIBICONV = @LTLIBICONV@
- LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
- MKDIR_P = @MKDIR_P@
- NM = @NM@
- NMEDIT = @NMEDIT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
- OPT_LDFLAGS = @OPT_LDFLAGS@
- OS_INC_SRCDIR = @OS_INC_SRCDIR@
- OTOOL = @OTOOL@
- OTOOL64 = @OTOOL64@
- PACKAGE = @PACKAGE@
- PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
- PACKAGE_NAME = @PACKAGE_NAME@
- PACKAGE_STRING = @PACKAGE_STRING@
- PACKAGE_TARNAME = @PACKAGE_TARNAME@
- PACKAGE_URL = @PACKAGE_URL@
- PACKAGE_VERSION = @PACKAGE_VERSION@
- PATH_SEPARATOR = @PATH_SEPARATOR@
- PDFLATEX = @PDFLATEX@
- RANLIB = @RANLIB@
- SECTION_FLAGS = @SECTION_FLAGS@
- SECTION_LDFLAGS = @SECTION_LDFLAGS@
- SED = @SED@
- SET_MAKE = @SET_MAKE@
- SHELL = @SHELL@
- STRIP = @STRIP@
- SYMVER_FILE = @SYMVER_FILE@
- TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
- USE_NLS = @USE_NLS@
- VERSION = @VERSION@
- VTV_CXXFLAGS = @VTV_CXXFLAGS@
- VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
- WARN_FLAGS = @WARN_FLAGS@
- XMLCATALOG = @XMLCATALOG@
- XMLLINT = @XMLLINT@
- XSLTPROC = @XSLTPROC@
- XSL_STYLE_DIR = @XSL_STYLE_DIR@
- abs_builddir = @abs_builddir@
- abs_srcdir = @abs_srcdir@
- abs_top_builddir = @abs_top_builddir@
- abs_top_srcdir = @abs_top_srcdir@
- ac_ct_CC = @ac_ct_CC@
- ac_ct_CXX = @ac_ct_CXX@
- ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
- am__leading_dot = @am__leading_dot@
- am__tar = @am__tar@
- am__untar = @am__untar@
- baseline_dir = @baseline_dir@
- baseline_subdir_switch = @baseline_subdir_switch@
- bindir = @bindir@
- build = @build@
- build_alias = @build_alias@
- build_cpu = @build_cpu@
- build_os = @build_os@
- build_vendor = @build_vendor@
- builddir = @builddir@
- check_msgfmt = @check_msgfmt@
- datadir = @datadir@
- datarootdir = @datarootdir@
- docdir = @docdir@
- dvidir = @dvidir@
- enable_shared = @enable_shared@
- enable_static = @enable_static@
- exec_prefix = @exec_prefix@
- get_gcc_base_ver = @get_gcc_base_ver@
- glibcxx_MOFILES = @glibcxx_MOFILES@
- glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@
- glibcxx_POFILES = @glibcxx_POFILES@
- glibcxx_builddir = @glibcxx_builddir@
- glibcxx_compiler_pic_flag = @glibcxx_compiler_pic_flag@
- glibcxx_compiler_shared_flag = @glibcxx_compiler_shared_flag@
- glibcxx_cxx98_abi = @glibcxx_cxx98_abi@
- glibcxx_localedir = @glibcxx_localedir@
- glibcxx_lt_pic_flag = @glibcxx_lt_pic_flag@
- glibcxx_prefixdir = @glibcxx_prefixdir@
- glibcxx_srcdir = @glibcxx_srcdir@
- glibcxx_toolexecdir = @glibcxx_toolexecdir@
- glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
- gxx_include_dir = @gxx_include_dir@
- host = @host@
- host_alias = @host_alias@
- host_cpu = @host_cpu@
- host_os = @host_os@
- host_vendor = @host_vendor@
- htmldir = @htmldir@
- includedir = @includedir@
- infodir = @infodir@
- install_sh = @install_sh@
- libdir = @libdir@
- libexecdir = @libexecdir@
- libtool_VERSION = @libtool_VERSION@
- localedir = @localedir@
- localstatedir = @localstatedir@
- lt_host_flags = @lt_host_flags@
- mandir = @mandir@
- mkdir_p = @mkdir_p@
- multi_basedir = @multi_basedir@
- oldincludedir = @oldincludedir@
- pdfdir = @pdfdir@
- port_specific_symbol_files = @port_specific_symbol_files@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
- psdir = @psdir@
- python_mod_dir = @python_mod_dir@
- sbindir = @sbindir@
- sharedstatedir = @sharedstatedir@
- srcdir = @srcdir@
- sysconfdir = @sysconfdir@
- target = @target@
- target_alias = @target_alias@
- target_cpu = @target_cpu@
- target_os = @target_os@
- target_vendor = @target_vendor@
- thread_header = @thread_header@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- toplevel_builddir = @toplevel_builddir@
- toplevel_srcdir = @toplevel_srcdir@
-
- # May be used by various substitution variables.
- gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
- MAINT_CHARSET = latin1
- mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
- PWD_COMMAND = $${PWDCMD-pwd}
- STAMP = echo timestamp >
- toolexecdir = $(glibcxx_toolexecdir)
- toolexeclibdir = $(glibcxx_toolexeclibdir)
- @ENABLE_WERROR_FALSE@WERROR_FLAG =
- @ENABLE_WERROR_TRUE@WERROR_FLAG = -Werror
- @ENABLE_EXTERN_TEMPLATE_FALSE@XTEMPLATE_FLAGS =
- @ENABLE_EXTERN_TEMPLATE_TRUE@XTEMPLATE_FLAGS = -fno-implicit-templates
-
- # These bits are all figured out from configure. Look in acinclude.m4
- # or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
- CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(HWCAP_CFLAGS) -frandom-seed=$@
-
- WARN_CXXFLAGS = \
- $(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
-
-
- # -I/-D flags to pass when compiling.
- AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)
-
- # Convenience library for C++17 runtime.
- noinst_LTLIBRARIES = libc++17convenience.la
- headers =
- @ENABLE_DUAL_ABI_FALSE@extra_string_inst_sources =
- @ENABLE_DUAL_ABI_TRUE@extra_string_inst_sources = cow-string-inst.cc
- @ENABLE_DUAL_ABI_FALSE@extra_fs_sources =
- @ENABLE_DUAL_ABI_TRUE@extra_fs_sources = \
- @ENABLE_DUAL_ABI_TRUE@ cow-fs_dir.cc \
- @ENABLE_DUAL_ABI_TRUE@ cow-fs_ops.cc \
- @ENABLE_DUAL_ABI_TRUE@ cow-fs_path.cc
-
- # XTEMPLATE_FLAGS =
- @ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources =
-
- # XTEMPLATE_FLAGS = -fno-implicit-templates
- @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
- @ENABLE_EXTERN_TEMPLATE_TRUE@ ostream-inst.cc \
- @ENABLE_EXTERN_TEMPLATE_TRUE@ string-inst.cc \
- @ENABLE_EXTERN_TEMPLATE_TRUE@ $(extra_string_inst_sources)
-
- sources = \
- fs_dir.cc \
- fs_ops.cc \
- fs_path.cc \
- memory_resource.cc \
- $(extra_fs_sources)
-
- libc__17convenience_la_SOURCES = $(sources) $(inst_sources)
-
- # AM_CXXFLAGS needs to be in each subdirectory so that it can be
- # modified in a per-library or per-sub-library way. Need to manually
- # set this option because CONFIG_CXXFLAGS has to be after
- # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
- # as the occasion calls for it.
- AM_CXXFLAGS = \
- -std=gnu++17 \
- $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
- $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \
- $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) \
- -fimplicit-templates
-
- AM_MAKEFLAGS = \
- "gxx_include_dir=$(gxx_include_dir)"
-
-
- # Libtool notes
-
- # 1) In general, libtool expects an argument such as `--tag=CXX' when
- # using the C++ compiler, because that will enable the settings
- # detected when C++ support was being configured. However, when no
- # such flag is given in the command line, libtool attempts to figure
- # it out by matching the compiler name in each configuration section
- # against a prefix of the command line. The problem is that, if the
- # compiler name and its initial flags stored in the libtool
- # configuration file don't match those in the command line, libtool
- # can't decide which configuration to use, and it gives up. The
- # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe
- # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to
- # attempt to infer which configuration to use.
- #
- # The second tag argument, `--tag disable-shared` means that libtool
- # only compiles each source once, for static objects. In actuality,
- # glibcxx_lt_pic_flag and glibcxx_compiler_shared_flag are added to
- # the libtool command that is used create the object, which is
- # suitable for shared libraries. The `--tag disable-shared` must be
- # placed after --tag CXX lest things CXX undo the affect of
- # disable-shared.
-
- # 2) Need to explicitly set LTCXXCOMPILE so that EXTRA_CXX_FLAGS is
- # last. (That way, things like -O2 passed down from the toplevel can
- # be overridden by --enable-debug.)
- LTCXXCOMPILE = \
- $(LIBTOOL) --tag CXX --tag disable-shared \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(EXTRA_CXX_FLAGS)
-
- LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
-
- # 3) We'd have a problem when building the shared libstdc++ object if
- # the rules automake generates would be used. We cannot allow g++ to
- # be used since this would add -lstdc++ to the link line which of
- # course is problematic at this point. So, we get the top-level
- # directory to configure libstdc++-v3 to use gcc as the C++
- # compilation driver.
- CXXLINK = \
- $(LIBTOOL) --tag CXX --tag disable-shared \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CXX) \
- $(VTV_CXXLINKFLAGS) \
- $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
-
- all: all-am
-
- .SUFFIXES:
- .SUFFIXES: .cc .lo .o .obj
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/c++17/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign --ignore-deps src/c++17/Makefile
- Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
- $(top_srcdir)/fragment.am $(am__empty):
-
- $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
- $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- $(am__aclocal_m4_deps):
-
- clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
- libc++17convenience.la: $(libc__17convenience_la_OBJECTS) $(libc__17convenience_la_DEPENDENCIES) $(EXTRA_libc__17convenience_la_DEPENDENCIES)
- $(AM_V_CXXLD)$(CXXLINK) $(libc__17convenience_la_OBJECTS) $(libc__17convenience_la_LIBADD) $(LIBS)
-
- mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
- distclean-compile:
- -rm -f *.tab.c
-
- .cc.o:
- $(AM_V_CXX)$(CXXCOMPILE) -c -o $@ $<
-
- .cc.obj:
- $(AM_V_CXX)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
- .cc.lo:
- $(AM_V_CXX)$(LTCXXCOMPILE) -c -o $@ $<
-
- mostlyclean-libtool:
- -rm -f *.lo
-
- clean-libtool:
- -rm -rf .libs _libs
-
- ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
- tags: tags-am
- TAGS: tags
-
- tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
- ctags: ctags-am
-
- CTAGS: ctags
- ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
- GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
- cscopelist: cscopelist-am
-
- cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
- distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
- check-am: all-am
- check: check-am
- all-am: Makefile $(LTLIBRARIES)
- installdirs:
- install: install-am
- install-exec: install-exec-am
- install-data: install-data-am
- uninstall: uninstall-am
-
- install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
- installcheck: installcheck-am
- install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
- mostlyclean-generic:
-
- clean-generic:
-
- distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
- maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- clean: clean-am
-
- clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
- mostlyclean-am
-
- distclean: distclean-am
- -rm -f Makefile
- distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
- dvi: dvi-am
-
- dvi-am:
-
- html: html-am
-
- html-am:
-
- info: info-am
-
- info-am:
-
- install-data-am:
-
- install-dvi: install-dvi-am
-
- install-dvi-am:
-
- install-exec-am:
-
- install-html: install-html-am
-
- install-html-am:
-
- install-info: install-info-am
-
- install-info-am:
-
- install-man:
-
- install-pdf: install-pdf-am
-
- install-pdf-am:
-
- install-ps: install-ps-am
-
- install-ps-am:
-
- installcheck-am:
-
- maintainer-clean: maintainer-clean-am
- -rm -f Makefile
- maintainer-clean-am: distclean-am maintainer-clean-generic
-
- mostlyclean: mostlyclean-am
-
- mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
- pdf: pdf-am
-
- pdf-am:
-
- ps: ps-am
-
- ps-am:
-
- uninstall-am:
-
- .MAKE: install-am install-strip
-
- .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
- ctags-am distclean distclean-compile distclean-generic \
- distclean-libtool distclean-tags dvi dvi-am html html-am info \
- info-am install install-am install-data install-data-am \
- install-dvi install-dvi-am install-exec install-exec-am \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am
-
- .PRECIOUS: Makefile
-
-
- vpath % $(top_srcdir)/src/c++17
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
--- 0 ----
diff -Nrcpad gcc-8.4.0/libstdc++-v3/src/filesystem/dir.cc gcc-8.5.0/libstdc++-v3/src/filesystem/dir.cc
*** gcc-8.4.0/libstdc++-v3/src/filesystem/dir.cc Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/src/filesystem/dir.cc Fri May 14 08:42:11 2021
*************** struct fs::recursive_directory_iterator:
*** 181,196 ****
fs::recursive_directory_iterator::
recursive_directory_iterator(const path& p, directory_options options,
! error_code* ec)
: _M_options(options), _M_pending(true)
{
- if (ec)
- ec->clear();
if (DIR* dirp = ::opendir(p.c_str()))
{
auto sp = std::make_shared<_Dir_stack>();
sp->push(_Dir{ dirp, p });
! if (sp->top().advance(ec))
_M_dirs.swap(sp);
}
else
--- 181,196 ----
fs::recursive_directory_iterator::
recursive_directory_iterator(const path& p, directory_options options,
! error_code* ecptr)
: _M_options(options), _M_pending(true)
{
if (DIR* dirp = ::opendir(p.c_str()))
{
+ if (ecptr)
+ ecptr->clear();
auto sp = std::make_shared<_Dir_stack>();
sp->push(_Dir{ dirp, p });
! if (ecptr ? sp->top().advance(*ecptr) : sp->top().advance())
_M_dirs.swap(sp);
}
else
*************** recursive_directory_iterator(const path&
*** 198,211 ****
const int err = errno;
if (err == EACCES
&& is_set(options, fs::directory_options::skip_permission_denied))
! return;
! if (!ec)
_GLIBCXX_THROW_OR_ABORT(filesystem_error(
"recursive directory iterator cannot open directory", p,
std::error_code(err, std::generic_category())));
! ec->assign(err, std::generic_category());
}
}
--- 198,215 ----
const int err = errno;
if (err == EACCES
&& is_set(options, fs::directory_options::skip_permission_denied))
! {
! if (ecptr)
! ecptr->clear();
! return;
! }
! if (!ecptr)
_GLIBCXX_THROW_OR_ABORT(filesystem_error(
"recursive directory iterator cannot open directory", p,
std::error_code(err, std::generic_category())));
! ecptr->assign(err, std::generic_category());
}
}
diff -Nrcpad gcc-8.4.0/libstdc++-v3/src/filesystem/ops.cc gcc-8.5.0/libstdc++-v3/src/filesystem/ops.cc
*** gcc-8.4.0/libstdc++-v3/src/filesystem/ops.cc Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/src/filesystem/ops.cc Fri May 14 08:42:11 2021
*************** fs::path fs::read_symlink(const path& p,
*** 987,992 ****
--- 987,998 ----
ec.assign(errno, std::generic_category());
return result;
}
+ else if (!fs::is_symlink(make_file_status(st)))
+ {
+ ec.assign(EINVAL, std::generic_category());
+ return result;
+ }
+
std::string buf(st.st_size ? st.st_size + 1 : 128, '\0');
do
{
diff -Nrcpad gcc-8.4.0/libstdc++-v3/src/filesystem/std-ops.cc gcc-8.5.0/libstdc++-v3/src/filesystem/std-ops.cc
*** gcc-8.4.0/libstdc++-v3/src/filesystem/std-ops.cc Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/src/filesystem/std-ops.cc Fri May 14 08:42:11 2021
*************** fs::path fs::read_symlink(const path& p,
*** 1248,1253 ****
--- 1248,1259 ----
ec.assign(errno, std::generic_category());
return result;
}
+ else if (!fs::is_symlink(make_file_status(st)))
+ {
+ ec.assign(EINVAL, std::generic_category());
+ return result;
+ }
+
std::string buf(st.st_size ? st.st_size + 1 : 128, '\0');
do
{
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/17_intro/names.cc gcc-8.5.0/libstdc++-v3/testsuite/17_intro/names.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/17_intro/names.cc Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/testsuite/17_intro/names.cc Fri May 14 08:42:11 2021
***************
*** 104,109 ****
--- 104,114 ----
#define uses_allocator (
#endif
+ #if __cplusplus < 201402L
+ // defines operator""il
+ #define il (
+ #endif
+
#if __cplusplus < 201703L
// defines to_chars_result::ptr and to_chars_result::ec
#define ec (
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_nothrow_constructible/94003.cc gcc-8.5.0/libstdc++-v3/testsuite/20_util/is_nothrow_constructible/94003.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_nothrow_constructible/94003.cc Thu Jan 1 00:00:00 1970
--- gcc-8.5.0/libstdc++-v3/testsuite/20_util/is_nothrow_constructible/94003.cc Fri May 14 08:42:11 2021
***************
*** 0 ****
--- 1,46 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3. If not see
+ // .
+
+ // { dg-options "-std=gnu++17" }
+ // { dg-do compile { target c++17 } }
+
+ #include
+ #include
+
+ template struct abc {};
+
+ template
+
+ struct future : public abc>> {};
+
+ class mutation {
+ mutation();
+ friend class std::optional;
+ };
+
+ using mutation_opt = std::optional;
+
+ future foo();
+
+ template future consume_partitions() {
+ return foo();
+ }
+
+ future bar() { return consume_partitions(); }
+
+ future zed();
+ future apply_counter_update() { return zed(); }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/96999.cc gcc-8.5.0/libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/96999.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/96999.cc Thu Jan 1 00:00:00 1970
--- gcc-8.5.0/libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/96999.cc Fri May 14 08:42:11 2021
***************
*** 0 ****
--- 1,54 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3. If not see
+ // .
+
+ // { dg-options "-std=gnu++17" }
+ // { dg-do compile { target c++17 } }
+
+ // PR libstdc++/96999
+
+ #include
+ #include
+
+ struct Foo {
+ public:
+ explicit Foo(int) noexcept {}
+ Foo(Foo &&) noexcept = default;
+ Foo &operator=(Foo &&) = default;
+ private:
+ Foo() noexcept {}
+ };
+
+ struct Boo {
+ public:
+ explicit Boo(int) noexcept {}
+ Boo(Boo &&) noexcept = default;
+ Boo &operator=(Boo &&) = default;
+ private:
+ Boo() noexcept {}
+ };
+
+
+ template
+ std::variant g(int v, int x) {
+ return v == 0 ? std::variant{Foo{x}} :
+ std::variant{Boo{x}};
+ }
+
+ int main()
+ {
+ std::variant, std::string> err{std::string("aaa")};
+ }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/20_util/to_address/1_neg.cc gcc-8.5.0/libstdc++-v3/testsuite/20_util/to_address/1_neg.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/20_util/to_address/1_neg.cc Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/testsuite/20_util/to_address/1_neg.cc Fri May 14 08:42:11 2021
***************
*** 17,23 ****
// { dg-options "-std=gnu++2a" }
// { dg-do compile { target c++2a } }
! // { dg-error "not a function pointer" "" { target *-*-* } 153 }
#include
--- 17,23 ----
// { dg-options "-std=gnu++2a" }
// { dg-do compile { target c++2a } }
! // { dg-error "not a function pointer" "" { target *-*-* } 157 }
#include
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/20_util/to_address/debug.cc gcc-8.5.0/libstdc++-v3/testsuite/20_util/to_address/debug.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/20_util/to_address/debug.cc Thu Jan 1 00:00:00 1970
--- gcc-8.5.0/libstdc++-v3/testsuite/20_util/to_address/debug.cc Fri May 14 08:42:11 2021
***************
*** 0 ****
--- 1,36 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3. If not see
+ // .
+
+ // { dg-options "-std=gnu++2a" }
+ // { dg-do run { target c++2a } }
+
+ #include
+ #include
+
+ void
+ test01()
+ {
+ __gnu_debug::vector v{1, 2, 3};
+ auto p = std::to_address(v.end());
+ VERIFY( p == v.data() + v.size() );
+ }
+
+ int
+ main()
+ {
+ test01();
+ }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc gcc-8.5.0/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc Thu Jan 1 00:00:00 1970
--- gcc-8.5.0/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc Fri May 14 08:42:11 2021
***************
*** 0 ****
--- 1,62 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3. If not see
+ // .
+
+ // { dg-do compile { target c++11 } }
+
+ #include
+ #include
+
+ struct X
+ {
+ using allocator_type = std::allocator;
+
+ X(X&&) { }
+ X(std::allocator_arg_t, const allocator_type&, X&&) { }
+
+ explicit X(int) { }
+ explicit X(int, allocator_type) { }
+ };
+
+ void
+ test01()
+ {
+ // PR libstdc++/96803
+ // std::tuple chooses wrong constructor for uses-allocator construction
+ std::tuple o;
+ std::tuple nok(std::allocator_arg, std::allocator(), o);
+
+ std::tuple oo;
+ std::tuple nn(std::allocator_arg, std::allocator(), oo);
+ }
+
+ struct Y
+ {
+ using allocator_type = std::allocator;
+
+ Y(const X&) { }
+ Y(const X&, const allocator_type&) { }
+
+ Y(X&&) { }
+ Y(std::allocator_arg_t, const allocator_type&, X&&) { }
+ };
+
+ void
+ test02()
+ {
+ std::tuple o{1, 1};
+ std::tuple oo(std::allocator_arg, std::allocator(), o);
+ }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/99181.cc gcc-8.5.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/99181.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/99181.cc Thu Jan 1 00:00:00 1970
--- gcc-8.5.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/99181.cc Fri May 14 08:42:11 2021
***************
*** 0 ****
--- 1,40 ----
+ // { dg-options "-std=gnu++17" }
+ // { dg-do run { target c++17 } }
+
+ // Copyright (C) 2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3. If not see
+ // .
+
+ #include
+ #include
+
+ void test01()
+ {
+ const char *a = "\x7f";
+ const char *b = "\x80";
+ int c = std::char_traits::compare(a, b, 2);
+ constexpr int d = std::char_traits::compare("\x7f", "\x80", 2);
+
+ VERIFY( c && (c < 0) == (static_cast(a[0])
+ < static_cast(b[0])) );
+ VERIFY( d && (c < 0) == (d < 0) );
+ }
+
+ int main()
+ {
+ test01();
+ return 0;
+ }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc gcc-8.5.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc Wed Mar 4 08:30:03 2020
--- gcc-8.5.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc Fri May 14 08:42:11 2021
*************** template
*** 73,78 ****
--- 73,85 ----
return true;
}
+ #ifndef __cpp_lib_constexpr_string
+ # error Feature-test macro for constexpr char_traits is missing
+ #elif __cpp_lib_constexpr_string < 201611
+ # error Feature-test macro for constexpr char_traits has the wrong value
+ #endif
+
+ // We also provide this non-standard macro for P0426R1.
#ifndef __cpp_lib_constexpr_char_traits
# error Feature-test macro for constexpr char_traits is missing
#elif __cpp_lib_constexpr_char_traits != 201611
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/25_algorithms/sample/3.cc gcc-8.5.0/libstdc++-v3/testsuite/25_algorithms/sample/3.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/25_algorithms/sample/3.cc Thu Jan 1 00:00:00 1970
--- gcc-8.5.0/libstdc++-v3/testsuite/25_algorithms/sample/3.cc Fri May 14 08:42:11 2021
***************
*** 0 ****
--- 1,50 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3. If not see
+ // .
+
+ // { dg-options "-std=gnu++17" }
+ // { dg-do run { target c++17 } }
+ // { dg-require-cstdint "" }
+
+ #include
+ #include
+ #include
+ #include
+
+ std::mt19937 rng;
+
+ using std::sample;
+ using __gnu_test::test_container;
+ using __gnu_test::output_iterator_wrapper;
+ using __gnu_test::forward_iterator_wrapper;
+
+ void
+ test01()
+ {
+ const int in = 0;
+ test_container pop(&in, &in);
+ int out;
+ test_container samp(&out, &out + 1);
+
+ auto it = sample(pop.begin(), pop.end(), samp.begin(), 1, rng);
+ VERIFY( it.ptr == &out );
+ }
+
+ int
+ main()
+ {
+ test01();
+ }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/gcd/92978.cc gcc-8.5.0/libstdc++-v3/testsuite/26_numerics/gcd/92978.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/gcd/92978.cc Thu Jan 1 00:00:00 1970
--- gcc-8.5.0/libstdc++-v3/testsuite/26_numerics/gcd/92978.cc Fri May 14 08:42:11 2021
***************
*** 0 ****
--- 1,41 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3. If not see
+ // .
+
+ // { dg-options "-std=gnu++17" }
+ // { dg-do compile { target c++17 } }
+
+ #include
+ #include
+
+ void
+ test01()
+ {
+ // PR libstdc++/92978
+ static_assert( std::gcd(-120, 10U) == 10 );
+ static_assert( std::gcd(120U, -10) == 10 );
+ }
+
+ void
+ test02()
+ {
+ // |INT_MIN| should not be undefined, as long as it fits in the result type.
+ static_assert( std::gcd(INT_MIN, 0LL) == 1LL+INT_MAX );
+ static_assert( std::gcd(0LL, INT_MIN) == 1LL+INT_MAX );
+ static_assert( std::gcd(INT_MIN, 0LL + INT_MIN) == 1LL + INT_MAX );
+ static_assert( std::gcd(INT_MIN, 1LL + INT_MAX) == 1LL + INT_MAX );
+ static_assert( std::gcd(SHRT_MIN, 1U + SHRT_MAX) == 1U + SHRT_MAX );
+ }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc gcc-8.5.0/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc Wed Mar 4 08:30:04 2020
--- gcc-8.5.0/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc Fri May 14 08:42:11 2021
*************** test01()
*** 46,54 ****
std::gcd(0.1, 0.1); // { dg-error "from here" }
}
! // { dg-error "integers" "" { target *-*-* } 134 }
! // { dg-error "integers" "" { target *-*-* } 135 }
! // { dg-error "not bools" "" { target *-*-* } 136 }
! // { dg-error "not bools" "" { target *-*-* } 138 }
// { dg-prune-output "deleted function" }
! // { dg-prune-output "invalid operands" }
--- 46,54 ----
std::gcd(0.1, 0.1); // { dg-error "from here" }
}
! // { dg-error "must be integers" "" { target *-*-* } 135 }
! // { dg-error "must be integers" "" { target *-*-* } 136 }
! // { dg-error "must not be bool" "" { target *-*-* } 137 }
! // { dg-error "must not be bool" "" { target *-*-* } 138 }
// { dg-prune-output "deleted function" }
! // { dg-prune-output "incomplete type .*make_unsigned" }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/lcm/92978.cc gcc-8.5.0/libstdc++-v3/testsuite/26_numerics/lcm/92978.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/lcm/92978.cc Thu Jan 1 00:00:00 1970
--- gcc-8.5.0/libstdc++-v3/testsuite/26_numerics/lcm/92978.cc Fri May 14 08:42:11 2021
***************
*** 0 ****
--- 1,28 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3. If not see
+ // .
+
+ // { dg-options "-std=gnu++17" }
+ // { dg-do compile { target c++17 } }
+
+ #include
+
+ void
+ test01()
+ {
+ // PR libstdc++/92978
+ static_assert( std::lcm(-42, 21U) == 42U );
+ }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc gcc-8.5.0/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc Wed Mar 4 08:30:04 2020
--- gcc-8.5.0/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc Fri May 14 08:42:11 2021
*************** test01()
*** 46,54 ****
std::lcm(0.1, 0.1); // { dg-error "from here" }
}
! // { dg-error "integers" "" { target *-*-* } 148 }
! // { dg-error "integers" "" { target *-*-* } 149 }
! // { dg-error "not bools" "" { target *-*-* } 150 }
! // { dg-error "not bools" "" { target *-*-* } 152 }
// { dg-prune-output "deleted function" }
! // { dg-prune-output "invalid operands" }
--- 46,54 ----
std::lcm(0.1, 0.1); // { dg-error "from here" }
}
! // { dg-error "must be integers" "" { target *-*-* } 149 }
! // { dg-error "must be integers" "" { target *-*-* } 150 }
! // { dg-error "must not be bool" "" { target *-*-* } 151 }
! // { dg-error "must not be bool" "" { target *-*-* } 152 }
// { dg-prune-output "deleted function" }
! // { dg-prune-output "incomplete type .*make_unsigned" }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc gcc-8.5.0/libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc Wed Mar 4 08:30:04 2020
--- gcc-8.5.0/libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc Fri May 14 08:42:11 2021
***************
*** 22,27 ****
--- 22,28 ----
// 15.25 Permissions [fs.op.last_write_time]
#include
+ #include
#include
#include
***************
*** 31,39 ****
--- 32,43 ----
#if _GLIBCXX_HAVE_UTIME_H
# include
#endif
+ #include
using time_type = std::filesystem::file_time_type;
+ namespace chrono = std::chrono;
+
void
test01()
{
*************** test01()
*** 66,75 ****
auto end_of_time = time_type::duration::max();
auto last_second
! = std::chrono::duration_cast(end_of_time).count();
if (last_second > std::numeric_limits::max())
! return; // can't test overflow
#if _GLIBCXX_USE_UTIMENSAT
struct ::timespec ts[2];
ts[0].tv_sec = 0;
--- 70,84 ----
auto end_of_time = time_type::duration::max();
auto last_second
! = chrono::duration_cast(end_of_time).count();
if (last_second > std::numeric_limits::max())
! {
! puts("Range of time_t is smaller than range of chrono::file_clock, "
! "can't test for overflow on this target.");
! return;
! }
+ // Set mtime to a date past the maximum possible file_time_type:
#if _GLIBCXX_USE_UTIMENSAT
struct ::timespec ts[2];
ts[0].tv_sec = 0;
*************** test01()
*** 83,107 ****
times.actime = std::numeric_limits::max() - 1;
VERIFY( !::utime(p.c_str(), ×) );
#else
return;
#endif
mtime = last_write_time(p, ec);
! VERIFY( ec );
! VERIFY( ec == std::make_error_code(std::errc::value_too_large) );
! VERIFY( mtime == time_type::min() );
#if __cpp_exceptions
! caught = false;
try {
! mtime = last_write_time(p);
! } catch (std::system_error const& e) {
! caught = true;
! ec = e.code();
}
- VERIFY( caught );
- VERIFY( ec );
- VERIFY( ec == std::make_error_code(std::errc::value_too_large) );
#endif
}
--- 92,125 ----
times.actime = std::numeric_limits::max() - 1;
VERIFY( !::utime(p.c_str(), ×) );
#else
+ puts("No utimensat or utime, giving up.");
return;
#endif
+ // Try to read back the impossibly-large mtime:
mtime = last_write_time(p, ec);
! // Some filesystems (e.g. XFS) silently truncate distant times to
! // the time_t epochalypse, Jan 19 2038, so we won't get an error when
! // reading it back:
! if (ec)
! {
! VERIFY( ec == std::make_error_code(std::errc::value_too_large) );
! VERIFY( mtime == time_type::min() );
! }
! else
! puts("No overflow error, filesystem may not support 64-bit time_t.");
#if __cpp_exceptions
! // Once more, with exceptions:
try {
! auto mtime2 = last_write_time(p);
! // If it didn't throw, expect to have read back the same value:
! VERIFY( mtime2 == mtime );
! } catch (std::filesystem::filesystem_error const& e) {
! // If it did throw, expect the error_code to be the same:
! VERIFY( e.code() == ec );
! VERIFY( e.path1() == p );
}
#endif
}
*************** bool approx_equal(time_type file_time, t
*** 110,116 ****
auto delta = expected - file_time;
if (delta < delta.zero())
delta = -delta;
! return delta < std::chrono::seconds(1);
}
void
--- 128,134 ----
auto delta = expected - file_time;
if (delta < delta.zero())
delta = -delta;
! return delta < chrono::seconds(1);
}
void
*************** test02()
*** 123,154 ****
std::error_code ec;
time_type time;
time = last_write_time(f.path);
ec = bad_ec;
last_write_time(f.path, time, ec);
VERIFY( !ec );
VERIFY( approx_equal(last_write_time(f.path), time) );
ec = bad_ec;
! time -= std::chrono::milliseconds(1000 * 60 * 10 + 15);
last_write_time(f.path, time, ec);
VERIFY( !ec );
VERIFY( approx_equal(last_write_time(f.path), time) );
ec = bad_ec;
! time += std::chrono::milliseconds(1000 * 60 * 20 + 15);
last_write_time(f.path, time, ec);
VERIFY( !ec );
VERIFY( approx_equal(last_write_time(f.path), time) );
ec = bad_ec;
time = time_type();
last_write_time(f.path, time, ec);
VERIFY( !ec );
VERIFY( approx_equal(last_write_time(f.path), time) );
ec = bad_ec;
! time -= std::chrono::milliseconds(1000 * 60 * 10 + 15);
last_write_time(f.path, time, ec);
VERIFY( !ec );
VERIFY( approx_equal(last_write_time(f.path), time) );
--- 141,207 ----
std::error_code ec;
time_type time;
+ ec = bad_ec;
time = last_write_time(f.path);
+ last_write_time(f.path, time, ec);
+ VERIFY( !ec );
+ VERIFY( approx_equal(last_write_time(f.path), time) );
+
ec = bad_ec;
+ time -= chrono::milliseconds(1000 * 60 * 10 + 15);
last_write_time(f.path, time, ec);
VERIFY( !ec );
VERIFY( approx_equal(last_write_time(f.path), time) );
ec = bad_ec;
! time += chrono::milliseconds(1000 * 60 * 20 + 15);
last_write_time(f.path, time, ec);
VERIFY( !ec );
VERIFY( approx_equal(last_write_time(f.path), time) );
+ if (std::numeric_limits::max()
+ < std::numeric_limits::max())
+ return; // file clock's epoch is out of range for 32-bit time_t
+
+ using sys_time_32b
+ = chrono::time_point>;
+ auto duration_until_2038 = sys_time_32b::max() - sys_time_32b::clock::now();
+ auto file_time_2038 = time_type::clock::now() + duration_until_2038;
+
ec = bad_ec;
! time = file_time_2038 - chrono::seconds(1);
! // Assume all filesystems can store times that fit in 32-bit time_t
! // (i.e. up to Jan 19 2038)
last_write_time(f.path, time, ec);
VERIFY( !ec );
VERIFY( approx_equal(last_write_time(f.path), time) );
+ // Check whether the filesystem supports times larger than 32-bit time_t:
+ time += chrono::seconds(60);
+ last_write_time(f.path, time, ec);
+ if (ec || !approx_equal(last_write_time(f.path), time))
+ {
+ puts("Filesystem seems to truncate times past Jan 19 2038, giving up.");
+ return; // Tests below will fail on this filesystem
+ }
+
ec = bad_ec;
+ // The file clock's epoch:
time = time_type();
last_write_time(f.path, time, ec);
VERIFY( !ec );
VERIFY( approx_equal(last_write_time(f.path), time) );
ec = bad_ec;
! // A time after the epoch
! time += chrono::milliseconds(1000 * 60 * 10 + 15);
! last_write_time(f.path, time, ec);
! VERIFY( !ec );
! VERIFY( approx_equal(last_write_time(f.path), time) );
!
! ec = bad_ec;
! // A time before than the epoch
! time -= chrono::milliseconds(1000 * 60 * 20 + 15);
last_write_time(f.path, time, ec);
VERIFY( !ec );
VERIFY( approx_equal(last_write_time(f.path), time) );
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc gcc-8.5.0/libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc Thu Jan 1 00:00:00 1970
--- gcc-8.5.0/libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc Fri May 14 08:42:11 2021
***************
*** 0 ****
--- 1,53 ----
+ // { dg-options "-std=gnu++17 -lstdc++fs" }
+ // { dg-do run { target c++17 } }
+ // { dg-require-filesystem-ts "" }
+
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3. If not see
+ // .
+
+ // C++17 30.10.7.4.7 path generic format observers [fs.path.generic.obs]
+
+ #include
+ #include
+
+ using std::filesystem::path;
+ using __gnu_test::SimpleAllocator;
+
+ void
+ test01()
+ {
+ path p = "//foo//bar//.";
+ using C = path::value_type;
+ auto g = p.generic_string, SimpleAllocator>();
+ VERIFY( g == path("/foo/bar/.").c_str() );
+ }
+
+ void
+ test02()
+ {
+ path p = "//foo//bar//.";
+ using C = char16_t;
+ auto g = p.generic_string, SimpleAllocator>();
+ VERIFY( g == u"/foo/bar/." );
+ }
+
+ int
+ main()
+ {
+ test01();
+ test02();
+ }
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc gcc-8.5.0/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc Wed Mar 4 08:30:04 2020
--- gcc-8.5.0/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc Fri May 14 08:42:11 2021
***************
*** 22,27 ****
--- 22,28 ----
// C++17 30.10.7.4.7 path generic format observers [fs.path.generic.obs]
#include
+ #include
#include
using std::filesystem::path;
*************** test01()
*** 35,45 ****
--- 36,50 ----
#ifdef __CYGWIN__
VERIFY( path("//a").generic_string() == "//a" );
VERIFY( path("//a/").generic_string() == "//a/" );
+ VERIFY( path("//a//").generic_string() == "//a/" );
VERIFY( path("//a/b").generic_string() == "//a/b" );
+ VERIFY( path("//a//b").generic_string() == "//a/b" );
#else
VERIFY( path("//a").generic_string() == "/a" );
VERIFY( path("//a/").generic_string() == "/a/" );
+ VERIFY( path("//a//").generic_string() == "/a/" );
VERIFY( path("//a/b").generic_string() == "/a/b" );
+ VERIFY( path("//a//b").generic_string() == "/a/b" );
#endif
VERIFY( path("/a//b").generic_string() == "/a/b" );
VERIFY( path("/a//b/").generic_string() == "/a/b/" );
*************** test01()
*** 47,54 ****
--- 52,89 ----
VERIFY( path("/a//b//.").generic_string() == "/a/b/." );
}
+ void
+ test02()
+ {
+ if constexpr (path::preferred_separator == L'\\')
+ {
+ // PR libstdc++/93244
+ VERIFY( path("C:\\foo\\bar").generic_string() == "C:/foo/bar" );
+ VERIFY( path("C://foo//bar").generic_string() == "C:/foo/bar" );
+ }
+ }
+
+ void
+ test03()
+ {
+ for (path p : { "a///b//c", "/a//b//c", "a:b//c" })
+ {
+ // A path constructed from the generic format string should compare equal
+ // to the original, because they represent the same path.
+ // For GCC 8 this only works for some paths, because LWG 2936 is not
+ // implemented on the branch, so e.g. "/" and "//" compare not equal
+ VERIFY( path(p.generic_string()) == p );
+ VERIFY( path(p.generic_wstring()) == p );
+ VERIFY( path(p.generic_u8string()) == p );
+ VERIFY( path(p.generic_u16string()) == p );
+ VERIFY( path(p.generic_u32string()) == p );
+ }
+ }
+
int
main()
{
test01();
+ test02();
+ test03();
}
diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/experimental/feat-lib-fund.cc gcc-8.5.0/libstdc++-v3/testsuite/experimental/feat-lib-fund.cc
*** gcc-8.4.0/libstdc++-v3/testsuite/experimental/feat-lib-fund.cc Wed Mar 4 08:30:04 2020
--- gcc-8.5.0/libstdc++-v3/testsuite/experimental/feat-lib-fund.cc Fri May 14 08:42:11 2021
***************
*** 1,57 ****
! // { dg-do preprocess { target c++14 } }
!
! #if !__has_include()
! # error ""
! #endif
!
! #if !__has_include()
! # error ""
! #endif
!
! #if !__has_include()
! # error ""
! #endif
!
! #if !__has_include()
! # error ""
! #endif
!
! #if !__has_include()
! # error ""
! #endif
!
! #if !__has_include()
! # error ""
! #endif
!
! #if !__has_include()
! # error ""
! #endif
!
! #if !__has_include()
! # error ""
! #endif
!
! #if !__has_include()
! # error ""
! #endif
!
! //#if !__has_include()
! //# error ""
! //#endif
!
! //#if !__has_include()
! //# error ""
! //#endif
! //#if !__has_include()
! //# error ""
! //#endif
! #if !__has_include()
! # error ""
#endif
!
! //#if !__has_include()
! //# error ""
! //#endif
--- 1,36 ----
! // { dg-do preprocess }
! // Include all the LFTS headers. This should work with any -std flag.
! #include
! #include
! #include
! #include
! #include
! #include
! #include
! #if __has_include() // not supported as of GCC 11
! # include
#endif
! #include