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

*************** See “Blackfin Options” in th *** 281,288 **** is available at https://blackfin.uclinux.org


! !

CR16

The CR16 CompactRISC architecture is a 16-bit architecture. This architecture is used in embedded applications.

--- 264,270 ---- is available at https://blackfin.uclinux.org


!

CR16

The CR16 CompactRISC architecture is a 16-bit architecture. This architecture is used in embedded applications.

*************** GCC for building a CR16 elf cross-c *** 296,303 **** configure GCC for building a CR16 uclinux cross-compiler.


! !

CRIS

CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip series. These are used in embedded applications.

--- 278,284 ---- configure GCC for building a CR16 uclinux cross-compiler.


!

CRIS

CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip series. These are used in embedded applications.

*************** information about this platform is avail *** 322,329 **** http://developer.axis.com/.


! !

DOS

Please have a look at the binaries page.

You cannot install GCC by itself on MSDOS; it will not compile under --- 303,309 ---- http://developer.axis.com/.


!

DOS

Please have a look at the binaries page.

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.,

!
!
% CONFIG_SHELL=/opt/freeware/bin/bash
  % export CONFIG_SHELL
  
--- 634,641 ----

To speed up the configuration phases of bootstrapping and installing GCC, one may use GNU Bash instead of AIX /bin/sh, e.g.,

!
!
% CONFIG_SHELL=/opt/freeware/bin/bash
  % export CONFIG_SHELL
  
*************** 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--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:

!
!
% ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
  

! !

sparc-sun-solaris2.10

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:

!
!
% ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
  

! !

sparcv9-*-solaris2*

This is a synonym for ‘sparc64-*-solaris2*’.


! !

c6x-*-*

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:

!
!
% ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
  

!

sparc-sun-solaris2.10

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:

!
!
% ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
  

!

sparcv9-*-solaris2*

This is a synonym for ‘sparc64-*-solaris2*’.


!

c6x-*-*

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 !

*-*-cygwin

Ports of GCC are included with the Cygwin environment.

--- 1311,1317 ----

UWIN support has been removed due to a lack of maintenance.


!

*-*-cygwin

Ports of GCC are included with the Cygwin environment.

*************** 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 ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/97731.cc gcc-8.5.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/97731.cc *** gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/97731.cc Thu Jan 1 00:00:00 1970 --- gcc-8.5.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/97731.cc Fri May 14 08:42:11 2021 *************** *** 0 **** --- 1,49 ---- + // 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 "-DUSE_FILESYSTEM_TS -lstdc++fs" } + // { dg-do run { target c++11 } } + // { dg-require-filesystem-ts "" } + + #include + #include + #include + + bool used_custom_readdir = false; + + extern "C" void* readdir(void*) + { + used_custom_readdir = true; + errno = EIO; + return nullptr; + } + + void + test01() + { + using std::experimental::filesystem::recursive_directory_iterator; + std::error_code ec; + recursive_directory_iterator it(".", ec); + if (used_custom_readdir) + VERIFY( ec.value() == EIO ); + } + + int + main() + { + test01(); + } diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc gcc-8.5.0/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc *** gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc Wed Mar 4 08:30:04 2020 --- gcc-8.5.0/libstdc++-v3/testsuite/experimental/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::experimental::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::experimental::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() *** 118,148 **** { // write times __gnu_test::scoped_file f; std::error_code ec; time_type time; time = last_write_time(f.path); last_write_time(f.path, time, ec); VERIFY( !ec ); VERIFY( approx_equal(last_write_time(f.path), time) ); ! 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) ); ! 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) ); time = time_type(); last_write_time(f.path, time, ec); VERIFY( !ec ); VERIFY( approx_equal(last_write_time(f.path), time) ); ! 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) ); --- 136,172 ---- { // write times + const std::error_code bad_ec = make_error_code(std::errc::invalid_argument); __gnu_test::scoped_file f; 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) ); + 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 -= chrono::milliseconds(1000 * 60 * 10 + 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/experimental/filesystem/path/generic/generic_string.cc gcc-8.5.0/libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc *** gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc Wed Mar 4 08:30:04 2020 --- gcc-8.5.0/libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc Fri May 14 08:42:11 2021 *************** *** 23,49 **** #include #include ! #include using std::experimental::filesystem::path; void test01() { ! for (const path& p : __gnu_test::test_paths) { ! path p2(p), p3; ! p2.swap(p3); ! VERIFY( p2 == path() ); ! VERIFY( p3 == p ); ! p2.swap(p3); ! VERIFY( p2 == p ); ! VERIFY( p3 == path() ); } } int main() { test01(); } --- 23,77 ---- #include #include ! #include using std::experimental::filesystem::path; void test01() { ! __gnu_test::compare_paths( path("///a//b///").generic_string(), "/a/b/." ); ! __gnu_test::compare_paths( path("///a//b").generic_u16string(), "/a/b" ); ! __gnu_test::compare_paths( path("//a//b").generic_u16string(), "//a/b" ); ! } ! ! using __gnu_test::SimpleAllocator; ! ! void ! test02() ! { ! path p = "//foo//bar//."; ! using C = char16_t; ! auto g = p.generic_string, SimpleAllocator>(); ! VERIFY( g == u"//foo/bar/." ); ! } ! ! ! void ! test03() ! { ! for (path p : { "/a///b//c", "///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. ! 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 ); } + + // Except when the original consists entirely of a root-directory with + // multiple slashes, because path("///").native() is "///" but the + // generic format string is "/". In the Filesystem TS path::compare just + // compares native strings, so path("///") != path("/"). + VERIFY( path("///").generic_string() == "/" ); } int main() { test01(); + test02(); + test03(); } diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/experimental/numeric/92978.cc gcc-8.5.0/libstdc++-v3/testsuite/experimental/numeric/92978.cc *** gcc-8.4.0/libstdc++-v3/testsuite/experimental/numeric/92978.cc Thu Jan 1 00:00:00 1970 --- gcc-8.5.0/libstdc++-v3/testsuite/experimental/numeric/92978.cc Fri May 14 08:42:11 2021 *************** *** 0 **** --- 1,48 ---- + // 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++14 } } + + #include + #include + + void + test01() + { + // PR libstdc++/92978 + static_assert( std::experimental::gcd(-120, 10U) == 10, + "mixed signed/unsigned" ); + static_assert( std::experimental::gcd(120U, -10) == 10, + "mixed signed/unsigned" ); + + static_assert( std::experimental::lcm(-42, 21U) == 42U ); + } + + void + test02() + { + static_assert( std::experimental::gcd(INT_MIN, 0LL) == 1LL+INT_MAX, + "|INT_MIN| should not be undefined as long as it fits in the result" ); + static_assert( std::experimental::gcd(0LL, INT_MIN) == 1LL+INT_MAX, + "|INT_MIN| should not be undefined" ); + static_assert( std::experimental::gcd(INT_MIN, 0LL + INT_MIN) == 1LL + INT_MAX, + "|INT_MIN| should not be undefined" ); + static_assert( std::experimental::gcd(INT_MIN, 1LL + INT_MAX) == 1LL + INT_MAX, + "|INT_MIN| should not be undefined" ); + static_assert( std::experimental::gcd(SHRT_MIN, 1U + SHRT_MAX) == 1U + SHRT_MAX, + "|SHRT_MIN| should not be undefined" ); + } diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc gcc-8.5.0/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc *** gcc-8.4.0/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc Wed Mar 4 08:30:04 2020 --- gcc-8.5.0/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc Fri May 14 08:42:11 2021 *************** void *** 26,35 **** test01() { FILE* f = std::fopen("79820.txt", "w"); - std::fclose(f); errno = 127; __gnu_cxx::stdio_filebuf b(f, std::ios::out, BUFSIZ); VERIFY(errno == 127); // PR libstdc++/79820 } int --- 26,36 ---- test01() { FILE* f = std::fopen("79820.txt", "w"); errno = 127; __gnu_cxx::stdio_filebuf b(f, std::ios::out, BUFSIZ); VERIFY(errno == 127); // PR libstdc++/79820 + b.close(); + std::fclose(f); } int diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc gcc-8.5.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc *** gcc-8.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc Thu Jan 1 00:00:00 1970 --- gcc-8.5.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc Fri May 14 08:42:11 2021 *************** *** 0 **** --- 1,118 ---- + // { dg-options "-g -O0" } + // { dg-do run { target c++11 } } + // { dg-skip-if "" { *-*-* } { "-D_GLIBCXX_PROFILE" } } + + // Copyright (C) 2014-2019 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 + // . + + // Test that current printers still support old definitions of types. + + namespace std + { + template + struct _Head_base : T + { }; + + template + struct _Head_base + { + T* _M_head_impl; + }; + + template struct _Tuple_impl; + + template + struct _Tuple_impl<0, T, U> : _Tuple_impl<1, U>, _Head_base + { }; + + template + struct _Tuple_impl<1, U> : _Head_base + { }; + + template + struct tuple : _Tuple_impl<0, T, U> + { }; + + template struct default_delete { }; + + template> + struct unique_ptr + { + unique_ptr(T* p) { _M_t._M_head_impl = p; } + + using __tuple_type = tuple; + + __tuple_type _M_t; + }; + + // Old representation of std::optional, before GCC 9 + template + struct _Optional_payload + { + _Optional_payload() : _M_empty(), _M_engaged(false) { } + struct _Empty_byte { }; + union { + _Empty_byte _M_empty; + T _M_payload; + }; + bool _M_engaged; + }; + + template + struct _Optional_base + { + _Optional_payload _M_payload; + }; + + template + struct optional : _Optional_base + { + optional() { } + + optional(T t) + { + this->_M_payload._M_payload = t; + this->_M_payload._M_engaged = true; + } + }; + } // namespace std + + int + main() + { + struct datum { }; + std::unique_ptr uptr (new datum); + // { dg-final { regexp-test uptr {std::unique_ptr.datum. = {get\(\) = 0x.*}} } } + std::unique_ptr &ruptr = uptr; + // { dg-final { regexp-test ruptr {std::unique_ptr.datum. = {get\(\) = 0x.*}} } } + + using std::optional; + + optional o; + // { dg-final { note-test o {std::optional [no contained value]} } } + optional ob{false}; + // { dg-final { note-test ob {std::optional = {[contained value] = false}} } } + optional oi{5}; + // { dg-final { note-test oi {std::optional = {[contained value] = 5}} } } + optional op{nullptr}; + // { dg-final { note-test op {std::optional = {[contained value] = 0x0}} } } + + __builtin_puts(""); + return 0; // Mark SPOT + } + + // { dg-final { gdb-test SPOT } } diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc gcc-8.5.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc *** gcc-8.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc Wed Mar 4 08:30:04 2020 --- gcc-8.5.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc Fri May 14 08:42:11 2021 *************** struct datum *** 60,65 **** --- 60,80 ---- std::unique_ptr global; + struct Deleter + { + // Deleter is not an empty class: + int deleter_member = -1; + // But pointer is an empty class: + struct pointer + { + pointer(const void* = nullptr) { } + explicit operator bool() const noexcept { return false; } + friend bool operator==(pointer, pointer) noexcept { return true; } + friend bool operator!=(pointer, pointer) noexcept { return false; } + }; + void operator()(pointer) const noexcept { } + }; + int main() { *************** main() *** 137,142 **** --- 152,162 ---- std::unique_ptr& rarrptr = arrptr; // { dg-final { regexp-test rarrptr {std::unique_ptr.datum \[\]. = {get\(\) = 0x.*}} } } + std::unique_ptr empty_ptr; + // { dg-final { note-test empty_ptr {std::unique_ptr = {get() = {}}} } } + std::unique_ptr& rempty_ptr = empty_ptr; + // { dg-final { note-test rempty_ptr {std::unique_ptr = {get() = {}}} } } + ExTuple tpl(6,7); // { dg-final { note-test tpl {std::tuple containing = {[1] = 6, [2] = 7}} } } ExTuple &rtpl = tpl; diff -Nrcpad gcc-8.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc gcc-8.5.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc *** gcc-8.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc Thu Jan 1 00:00:00 1970 --- gcc-8.5.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc Fri May 14 08:42:11 2021 *************** *** 0 **** --- 1,39 ---- + // { dg-options "-g -O0 -lstdc++fs" } + // { dg-do run { target c++11 } } + // { 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 + // . + + #include + #include + + int + main() + { + std::experimental::filesystem::path path0; + // { dg-final { note-test path0 {filesystem::path ""} } } + std::experimental::filesystem::path path1("filename"); + // { dg-final { note-test path1 {filesystem::path "filename"} } } + std::experimental::filesystem::path path2("/dir/."); + // { dg-final { note-test path2 {filesystem::path "/dir/." = {[root-directory] = "/", [1] = "dir", [2] = "."}} } } + + std::cout << "\n"; + return 0; // Mark SPOT + } + + // { dg-final { gdb-test SPOT } } diff -Nrcpad gcc-8.4.0/libvtv/ChangeLog gcc-8.5.0/libvtv/ChangeLog *** gcc-8.4.0/libvtv/ChangeLog Wed Mar 4 08:30:30 2020 --- gcc-8.5.0/libvtv/ChangeLog Fri May 14 08:42:11 2021 *************** *** 1,3 **** --- 1,7 ---- + 2021-05-14 Release Manager + + * GCC 8.5.0 released. + 2020-03-04 Release Manager * GCC 8.4.0 released. diff -Nrcpad gcc-8.4.0/lto-plugin/ChangeLog gcc-8.5.0/lto-plugin/ChangeLog *** gcc-8.4.0/lto-plugin/ChangeLog Wed Mar 4 08:30:30 2020 --- gcc-8.5.0/lto-plugin/ChangeLog Fri May 14 08:42:11 2021 *************** *** 1,3 **** --- 1,7 ---- + 2021-05-14 Release Manager + + * GCC 8.5.0 released. + 2020-03-04 Release Manager * GCC 8.4.0 released. diff -Nrcpad gcc-8.4.0/maintainer-scripts/ChangeLog gcc-8.5.0/maintainer-scripts/ChangeLog *** gcc-8.4.0/maintainer-scripts/ChangeLog Wed Mar 4 08:30:30 2020 --- gcc-8.5.0/maintainer-scripts/ChangeLog Fri May 14 08:42:11 2021 *************** *** 1,3 **** --- 1,19 ---- + 2021-05-14 Release Manager + + * GCC 8.5.0 released. + + 2020-09-17 Jakub Jelinek + + Backported from master: + 2020-03-17 Jakub Jelinek + + * gcc_release (upload_files): Without -l, pass -m 755 to the mkdir + command invoked through ssh. + + 2020-03-04 Jakub Jelinek + + * gcc_release: Add support for -b local-git-repo argument. + 2020-03-04 Release Manager * GCC 8.4.0 released. diff -Nrcpad gcc-8.4.0/maintainer-scripts/gcc_release gcc-8.5.0/maintainer-scripts/gcc_release *** gcc-8.4.0/maintainer-scripts/gcc_release Wed Mar 4 08:30:04 2020 --- gcc-8.5.0/maintainer-scripts/gcc_release Fri May 14 08:42:11 2021 *************** *** 9,15 **** # Contents: # Script to create a GCC release. # ! # Copyright (c) 2001-2018 Free Software Foundation. # # This file is part of GCC. # --- 9,15 ---- # Contents: # Script to create a GCC release. # ! # Copyright (c) 2001-2020 Free Software Foundation. # # This file is part of GCC. # *************** Options: *** 78,83 **** --- 78,84 ---- -p previous-tarball Location of a previous tarball (to generate diff files). -t tag Tag to mark the release in git. -u username Username for upload operations. + -b local-git-repo Local git repository to speed up cloning. EOF exit 1 } *************** build_sources() { *** 103,110 **** changedir "${WORKING_DIRECTORY}" # Check out the sources. ! ${GIT} clone -q -b "${GITBRANCH}" "${GITROOT}" "`basename ${SOURCE_DIRECTORY}`" || \ ! error "Could not check out release sources" # If this is a final release, make sure that the ChangeLogs # and version strings are updated. --- 104,117 ---- changedir "${WORKING_DIRECTORY}" # Check out the sources. ! if [ -n "${GIT_REFERENCE}" ]; then ! ${GIT} clone -q --dissociate --reference "${GIT_REFERENCE}" \ ! -b "${GITBRANCH}" "${GITROOT}" "`basename ${SOURCE_DIRECTORY}`" || \ ! error "Could not check out release sources" ! else ! ${GIT} clone -q -b "${GITBRANCH}" "${GITROOT}" "`basename ${SOURCE_DIRECTORY}`" || \ ! error "Could not check out release sources" ! fi # If this is a final release, make sure that the ChangeLogs # and version strings are updated. *************** upload_files() { *** 391,397 **** # Make sure the directory exists on the server. if [ $LOCAL -eq 0 ]; then ${SSH} -l ${GCC_USERNAME} ${GCC_HOSTNAME} \ ! mkdir -p "${FTP_PATH}/diffs" UPLOAD_PATH="${GCC_USERNAME}@${GCC_HOSTNAME}:${FTP_PATH}" else mkdir -p "${FTP_PATH}/diffs" \ --- 398,404 ---- # Make sure the directory exists on the server. if [ $LOCAL -eq 0 ]; then ${SSH} -l ${GCC_USERNAME} ${GCC_HOSTNAME} \ ! mkdir -m 755 -p "${FTP_PATH}/diffs" UPLOAD_PATH="${GCC_USERNAME}@${GCC_HOSTNAME}:${FTP_PATH}" else mkdir -p "${FTP_PATH}/diffs" \ *************** TAG="" *** 567,572 **** --- 574,582 ---- # The old tarballs from which to generate diffs. OLD_TARS="" + # Local gcc git checkout to speed up git cloning. + GIT_REFERENCE="" + # The directory that will be used to construct the release. The # release itself will be placed in a subdirectory of this directory. DESTINATION=${HOME} *************** TAR="${TAR:-tar}" *** 613,619 **** ######################################################################## # Parse the options. ! while getopts "d:fr:u:t:p:s:l" ARG; do case $ARG in d) DESTINATION="${OPTARG}";; r) RELEASE="${OPTARG}";; --- 623,629 ---- ######################################################################## # Parse the options. ! while getopts "d:fr:u:t:p:s:lb:" ARG; do case $ARG in d) DESTINATION="${OPTARG}";; r) RELEASE="${OPTARG}";; *************** while getopts "d:fr:u:t:p:s:l" ARG; do *** 631,636 **** --- 641,647 ---- if [ ! -f ${OPTARG} ]; then error "-p argument must name a tarball" fi;; + b) GIT_REFERENCE="${OPTARG}";; \?) usage;; esac done diff -Nrcpad gcc-8.4.0/zlib/ChangeLog gcc-8.5.0/zlib/ChangeLog *** gcc-8.4.0/zlib/ChangeLog Wed Mar 4 08:30:30 2020 --- gcc-8.5.0/zlib/ChangeLog Fri May 14 08:42:11 2021 *************** *** 1,3 **** --- 1,7 ---- + 2021-05-14 Release Manager + + * GCC 8.5.0 released. + 2020-03-04 Release Manager * GCC 8.4.0 released.