diff --git a/.devtoolset-9-gcc.metadata b/.devtoolset-9-gcc.metadata
new file mode 100644
index 0000000..dd25f2a
--- /dev/null
+++ b/.devtoolset-9-gcc.metadata
@@ -0,0 +1,4 @@
+7f4348418dc3efefd357b32a2b5c8010211ab284 SOURCES/doxygen-1.8.0.src.tar.gz
+186c672996b17fd7ea17a188a2ed927d9e52a835 SOURCES/gcc-9.1.1-20190605.tar.xz
+c5a2b201bf05229647e73203c0bf2d9679d4d21f SOURCES/isl-0.16.1.tar.bz2
+5ef03ca7aee134fe7dfecb6c9d048799f0810278 SOURCES/mpc-0.8.1.tar.gz
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5a8f8c1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+SOURCES/doxygen-1.8.0.src.tar.gz
+SOURCES/gcc-9.1.1-20190605.tar.xz
+SOURCES/isl-0.16.1.tar.bz2
+SOURCES/mpc-0.8.1.tar.gz
diff --git a/SOURCES/0001-Default-widths-for-i-f-and-g-format-specifiers-in-fo.patch b/SOURCES/0001-Default-widths-for-i-f-and-g-format-specifiers-in-fo.patch
new file mode 100644
index 0000000..8d6247d
--- /dev/null
+++ b/SOURCES/0001-Default-widths-for-i-f-and-g-format-specifiers-in-fo.patch
@@ -0,0 +1,873 @@
+From f3e3034684c7ac44a14c70d6a248d8acee303176 Mon Sep 17 00:00:00 2001
+From: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Thu, 10 May 2018 11:48:34 +0100
+Subject: [PATCH 01/16] Default widths for i, f and g format specifiers in
+ format strings.
+
+Enabled using -fdec.
+
+The behaviour is modelled on the Oracle Fortran compiler. At the time
+of writing, the details were available at this URL:
+
+  https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vnc3/index.html#z4000743746d
+
+Addition by Mark Eggleston <mark.eggleston@codethink.com>:
+
+Use -fdec-format-defaults to enable this feature. Also enabled using -fdec.
+---
+ gcc/fortran/io.c                                   | 31 +++++++++++--
+ gcc/fortran/lang.opt                               |  4 ++
+ gcc/fortran/options.c                              |  1 +
+ .../gfortran.dg/fmt_f_default_field_width_1.f90    | 43 ++++++++++++++++++
+ .../gfortran.dg/fmt_f_default_field_width_2.f90    | 46 +++++++++++++++++++
+ .../gfortran.dg/fmt_f_default_field_width_3.f90    | 28 ++++++++++++
+ .../gfortran.dg/fmt_g_default_field_width_1.f90    | 48 ++++++++++++++++++++
+ .../gfortran.dg/fmt_g_default_field_width_2.f90    | 52 ++++++++++++++++++++++
+ .../gfortran.dg/fmt_g_default_field_width_3.f90    | 31 +++++++++++++
+ .../gfortran.dg/fmt_i_default_field_width_1.f90    | 38 ++++++++++++++++
+ .../gfortran.dg/fmt_i_default_field_width_2.f90    | 42 +++++++++++++++++
+ .../gfortran.dg/fmt_i_default_field_width_3.f90    | 35 +++++++++++++++
+ libgfortran/io/format.c                            | 35 +++++++++++++++
+ libgfortran/io/io.h                                | 50 +++++++++++++++++++++
+ libgfortran/io/read.c                              |  6 +++
+ libgfortran/io/write.c                             | 22 +++++----
+ libgfortran/io/write_float.def                     | 37 ++++++++++++---
+ 17 files changed, 531 insertions(+), 18 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/fmt_f_default_field_width_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/fmt_f_default_field_width_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/fmt_f_default_field_width_3.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/fmt_g_default_field_width_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/fmt_g_default_field_width_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/fmt_g_default_field_width_3.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/fmt_i_default_field_width_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/fmt_i_default_field_width_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/fmt_i_default_field_width_3.f90
+
+diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
+index 9828897852a..57117579627 100644
+--- a/gcc/fortran/io.c
++++ b/gcc/fortran/io.c
+@@ -903,6 +903,13 @@ data_desc:
+ 
+       if (u != FMT_POSINT)
+ 	{
++	  if (flag_dec_format_defaults)
++	    {
++	      /* Assume a default width based on the variable size.  */
++	      saved_token = u;
++	      break;
++	    }
++
+ 	  format_locus.nextc += format_string_pos;
+ 	  gfc_error ("Positive width required in format "
+ 			 "specifier %s at %L", token_to_string (t),
+@@ -1027,6 +1034,13 @@ data_desc:
+ 	goto fail;
+       if (t != FMT_ZERO && t != FMT_POSINT)
+ 	{
++	  if (flag_dec_format_defaults)
++	    {
++	      /* Assume the default width is expected here and continue lexing.  */
++	      value = 0; /* It doesn't matter what we set the value to here.  */
++	      saved_token = t;
++	      break;
++	    }
+ 	  error = nonneg_required;
+ 	  goto syntax;
+ 	}
+@@ -1096,8 +1110,17 @@ data_desc:
+ 	goto fail;
+       if (t != FMT_ZERO && t != FMT_POSINT)
+ 	{
+-	  error = nonneg_required;
+-	  goto syntax;
++	  if (flag_dec_format_defaults)
++	    {
++	      /* Assume the default width is expected here and continue lexing.  */
++	      value = 0; /* It doesn't matter what we set the value to here.  */
++	      saved_token = t;
++	    }
++	  else
++	    {
++	      error = nonneg_required;
++	      goto syntax;
++	    }
+ 	}
+       else if (is_input && t == FMT_ZERO)
+ 	{
+@@ -4368,8 +4391,8 @@ get_io_list:
+     }
+ 
+   /* See if we want to use defaults for missing exponents in real transfers
+-     and other DEC runtime extensions.  */
+-  if (flag_dec)
++     and other DEC runtime extensions. */
++  if (flag_dec_format_defaults)
+     dt->dec_ext = 1;
+ 
+   /* A full IO statement has been matched.  Check the constraints.  spec_end is
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 9151d02c491..26e82601b62 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -444,6 +444,10 @@ fdec-include
+ Fortran Var(flag_dec_include)
+ Enable legacy parsing of INCLUDE as statement.
+ 
++fdec-format-defaults
++Fortran Var(flag_dec_format_defaults)
++Enable default widths for i, f and g format specifiers.
++
+ fdec-intrinsic-ints
+ Fortran Var(flag_dec_intrinsic_ints)
+ Enable kind-specific variants of integer intrinsic functions.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index 02970d59066..4f91486e977 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -74,6 +74,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_static, value, value);
+   SET_BITFLAG (flag_dec_math, value, value);
+   SET_BITFLAG (flag_dec_include, value, value);
++  SET_BITFLAG (flag_dec_format_defaults, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/testsuite/gfortran.dg/fmt_f_default_field_width_1.f90 b/gcc/testsuite/gfortran.dg/fmt_f_default_field_width_1.f90
+new file mode 100644
+index 00000000000..49c77155761
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/fmt_f_default_field_width_1.f90
+@@ -0,0 +1,43 @@
++! { dg-do run }
++! { dg-options -fdec }
++!
++! Test case for the default field widths enabled by the -fdec-format-defaults flag.
++!
++! This feature is not part of any Fortran standard, but it is supported by the
++! Oracle Fortran compiler and others.
++!
++! libgfortran uses printf() internally to implement FORMAT. If you print float
++! values to a higher precision than the type can actually store, the results
++! are implementation dependent: some platforms print zeros, others print random
++! numbers. Don't depend on this behaviour in tests because they will not be
++! portable.
++
++    character(50) :: buffer
++
++    real*4 :: real_4
++    real*8 :: real_8
++    real*16 :: real_16
++    integer :: len
++
++    real_4 = 4.18
++    write(buffer, '(A, F, A)') ':',real_4,':'
++    print *,buffer
++    if (buffer.ne.":      4.1799998:") stop 1
++
++    real_4 = 0.00000018
++    write(buffer, '(A, F, A)') ':',real_4,':'
++    print *,buffer
++    if (buffer.ne.":      0.0000002:") stop 2
++
++    real_8 = 4.18
++    write(buffer, '(A, F, A)') ':',real_8,':'
++    print *,buffer
++    len = len_trim(buffer)
++    if (len /= 27) stop 3
++
++    real_16 = 4.18
++    write(buffer, '(A, F, A)') ':',real_16,':'
++    print *,buffer
++    len = len_trim(buffer)
++    if (len /= 44) stop 4
++end
+diff --git a/gcc/testsuite/gfortran.dg/fmt_f_default_field_width_2.f90 b/gcc/testsuite/gfortran.dg/fmt_f_default_field_width_2.f90
+new file mode 100644
+index 00000000000..1c2ec0413a7
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/fmt_f_default_field_width_2.f90
+@@ -0,0 +1,46 @@
++! { dg-do run }
++! { dg-options -fdec-format-defaults }
++!
++! Test case for the default field widths enabled by the -fdec-format-defaults flag.
++!
++! This feature is not part of any Fortran standard, but it is supported by the
++! Oracle Fortran compiler and others.
++!
++! libgfortran uses printf() internally to implement FORMAT. If you print float
++! values to a higher precision than the type can actually store, the results
++! are implementation dependent: some platforms print zeros, others print random
++! numbers. Don't depend on this behaviour in tests because they will not be
++! portable.
++!
++! Test case added by Mark Eggleston <mark.eggleston@codethink.com> to check
++! use of -fdec-format-defaults
++!
++    character(50) :: buffer
++
++    real*4 :: real_4
++    real*8 :: real_8
++    real*16 :: real_16
++    integer :: len
++
++    real_4 = 4.18
++    write(buffer, '(A, F, A)') ':',real_4,':'
++    print *,buffer
++    if (buffer.ne.":      4.1799998:") stop 1
++
++    real_4 = 0.00000018
++    write(buffer, '(A, F, A)') ':',real_4,':'
++    print *,buffer
++    if (buffer.ne.":      0.0000002:") stop 2
++
++    real_8 = 4.18
++    write(buffer, '(A, F, A)') ':',real_8,':'
++    print *,buffer
++    len = len_trim(buffer)
++    if (len /= 27) stop 3
++
++    real_16 = 4.18
++    write(buffer, '(A, F, A)') ':',real_16,':'
++    print *,buffer
++    len = len_trim(buffer)
++    if (len /= 44) stop 4
++end
+diff --git a/gcc/testsuite/gfortran.dg/fmt_f_default_field_width_3.f90 b/gcc/testsuite/gfortran.dg/fmt_f_default_field_width_3.f90
+new file mode 100644
+index 00000000000..e513063189b
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/fmt_f_default_field_width_3.f90
+@@ -0,0 +1,28 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-format-defaults" }
++!
++! Test case for the default field widths not enabled.
++!
++! Test case added by Mark Eggleston <mark.eggleston@codethink.com> to check
++! use of -fno-dec-format-defaults
++!
++
++    character(50) :: buffer
++
++    real*4 :: real_4
++    real*8 :: real_8
++    real*16 :: real_16
++    integer :: len
++
++    real_4 = 4.18
++    write(buffer, '(A, F, A)') ':',real_4,':' ! { dg-error "Nonnegative width required" }
++
++    real_4 = 0.00000018
++    write(buffer, '(A, F, A)') ':',real_4,':' ! { dg-error "Nonnegative width required" }
++
++    real_8 = 4.18
++    write(buffer, '(A, F, A)') ':',real_8,':' ! { dg-error "Nonnegative width required" }
++
++    real_16 = 4.18
++    write(buffer, '(A, F, A)') ':',real_16,':' ! { dg-error "Nonnegative width required" }
++end
+diff --git a/gcc/testsuite/gfortran.dg/fmt_g_default_field_width_1.f90 b/gcc/testsuite/gfortran.dg/fmt_g_default_field_width_1.f90
+new file mode 100644
+index 00000000000..6e2ad141d4a
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/fmt_g_default_field_width_1.f90
+@@ -0,0 +1,48 @@
++! { dg-do run }
++! { dg-options -fdec }
++!
++! Test case for the default field widths enabled by the -fdec-format-defaults flag.
++!
++! This feature is not part of any Fortran standard, but it is supported by the
++! Oracle Fortran compiler and others.
++!
++! libgfortran uses printf() internally to implement FORMAT. If you print float
++! values to a higher precision than the type can actually store, the results
++! are implementation dependent: some platforms print zeros, others print random
++! numbers. Don't depend on this behaviour in tests because they will not be
++! portable.
++
++    character(50) :: buffer
++
++    real*4 :: real_4
++    real*8 :: real_8
++    real*16 :: real_16
++    integer :: len
++
++    real_4 = 4.18
++    write(buffer, '(A, G, A)') ':',real_4,':'
++    print *,buffer
++    if (buffer.ne.":   4.180000    :") stop 1
++
++    real_4 = 0.00000018
++    write(buffer, '(A, G, A)') ':',real_4,':'
++    print *,buffer
++    if (buffer.ne.":  0.1800000E-06:") stop 2
++
++    real_4 = 18000000.4
++    write(buffer, '(A, G, A)') ':',real_4,':'
++    print *,buffer
++    if (buffer.ne.":  0.1800000E+08:") stop 3
++
++    real_8 = 4.18
++    write(buffer, '(A, G, A)') ':',real_8,':'
++    print *,buffer
++    len = len_trim(buffer)
++    if (len /= 27) stop 4
++
++    real_16 = 4.18
++    write(buffer, '(A, G, A)') ':',real_16,':'
++    print *,buffer
++    len = len_trim(buffer)
++    if (len /= 44) stop 5
++end
+diff --git a/gcc/testsuite/gfortran.dg/fmt_g_default_field_width_2.f90 b/gcc/testsuite/gfortran.dg/fmt_g_default_field_width_2.f90
+new file mode 100644
+index 00000000000..7b218af8610
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/fmt_g_default_field_width_2.f90
+@@ -0,0 +1,52 @@
++! { dg-do run }
++! { dg-options -fdec-format-defaults }
++!
++! Test case for the default field widths enabled by the -fdec-format-defaults flag.
++!
++! This feature is not part of any Fortran standard, but it is supported by the
++! Oracle Fortran compiler and others.
++!
++! libgfortran uses printf() internally to implement FORMAT. If you print float
++! values to a higher precision than the type can actually store, the results
++! are implementation dependent: some platforms print zeros, others print random
++! numbers. Don't depend on this behaviour in tests because they will not be
++! portable.
++!
++! Test case added by Mark Eggleston <mark.eggleston@codethink.com> to check
++! use of -fdec-format-defaults
++!
++
++    character(50) :: buffer
++
++    real*4 :: real_4
++    real*8 :: real_8
++    real*16 :: real_16
++    integer :: len
++
++    real_4 = 4.18
++    write(buffer, '(A, G, A)') ':',real_4,':'
++    print *,buffer
++    if (buffer.ne.":   4.180000    :") stop 1
++
++    real_4 = 0.00000018
++    write(buffer, '(A, G, A)') ':',real_4,':'
++    print *,buffer
++    if (buffer.ne.":  0.1800000E-06:") stop 2
++
++    real_4 = 18000000.4
++    write(buffer, '(A, G, A)') ':',real_4,':'
++    print *,buffer
++    if (buffer.ne.":  0.1800000E+08:") stop 3
++
++    real_8 = 4.18
++    write(buffer, '(A, G, A)') ':',real_8,':'
++    print *,buffer
++    len = len_trim(buffer)
++    if (len /= 27) stop 4
++
++    real_16 = 4.18
++    write(buffer, '(A, G, A)') ':',real_16,':'
++    print *,buffer
++    len = len_trim(buffer)
++    if (len /= 44) stop 5
++end
+diff --git a/gcc/testsuite/gfortran.dg/fmt_g_default_field_width_3.f90 b/gcc/testsuite/gfortran.dg/fmt_g_default_field_width_3.f90
+new file mode 100644
+index 00000000000..e255c2f94a0
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/fmt_g_default_field_width_3.f90
+@@ -0,0 +1,31 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-format-defaults" }
++!
++! Test case for the default field widths not enabled.
++!
++! Test case added by Mark Eggleston <mark.eggleston@codethink.com> to check
++! use of -fno-dec-format-defaults
++!
++
++    character(50) :: buffer
++
++    real*4 :: real_4
++    real*8 :: real_8
++    real*16 :: real_16
++    integer :: len
++
++    real_4 = 4.18
++    write(buffer, '(A, G, A)') ':',real_4,':' ! { dg-error "Positive width required" }
++
++    real_4 = 0.00000018
++    write(buffer, '(A, G, A)') ':',real_4,':' ! { dg-error "Positive width required" }
++
++    real_4 = 18000000.4
++    write(buffer, '(A, G, A)') ':',real_4,':' ! { dg-error "Positive width required" }
++
++    real_8 = 4.18
++    write(buffer, '(A, G, A)') ':',real_8,':' ! { dg-error "Positive width required" }
++
++    real_16 = 4.18
++    write(buffer, '(A, G, A)') ':',real_16,':' ! { dg-error "Positive width required" }
++end
+diff --git a/gcc/testsuite/gfortran.dg/fmt_i_default_field_width_1.f90 b/gcc/testsuite/gfortran.dg/fmt_i_default_field_width_1.f90
+new file mode 100644
+index 00000000000..0d32d240394
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/fmt_i_default_field_width_1.f90
+@@ -0,0 +1,38 @@
++! { dg-do run }
++! { dg-options -fdec }
++!
++! Test case for the default field widths enabled by the -fdec-format-defaults flag.
++!
++! This feature is not part of any Fortran standard, but it is supported by the
++! Oracle Fortran compiler and others.
++
++    character(50) :: buffer
++    character(1) :: colon
++
++    integer*2 :: integer_2
++    integer*4 :: integer_4
++    integer*8 :: integer_8
++
++    write(buffer, '(A, I, A)') ':',12340,':'
++    print *,buffer
++    if (buffer.ne.":       12340:") stop 1
++
++    read(buffer, '(A1, I, A1)') colon, integer_4, colon
++    if (integer_4.ne.12340) stop 2
++
++    integer_2 = -99
++    write(buffer, '(A, I, A)') ':',integer_2,':'
++    print *,buffer
++    if (buffer.ne.":    -99:") stop 3
++
++    integer_8 = -11112222
++    write(buffer, '(A, I, A)') ':',integer_8,':'
++    print *,buffer
++    if (buffer.ne.":              -11112222:") stop 4
++
++! If the width is 7 and there are 7 leading zeroes, the result should be zero.
++    integer_2 = 789
++    buffer = '0000000789'
++    read(buffer, '(I)') integer_2
++    if (integer_2.ne.0) stop 5
++end
+diff --git a/gcc/testsuite/gfortran.dg/fmt_i_default_field_width_2.f90 b/gcc/testsuite/gfortran.dg/fmt_i_default_field_width_2.f90
+new file mode 100644
+index 00000000000..6cee3f86809
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/fmt_i_default_field_width_2.f90
+@@ -0,0 +1,42 @@
++! { dg-do run }
++! { dg-options -fdec-format-defaults }
++!
++! Test case for the default field widths enabled by the -fdec-format-defaults flag.
++!
++! This feature is not part of any Fortran standard, but it is supported by the
++! Oracle Fortran compiler and others.
++!
++! Test case added by Mark Eggleston <mark.eggleston@codethink.com> to check
++! use of -fdec-format-defaults
++!
++
++    character(50) :: buffer
++    character(1) :: colon
++
++    integer*2 :: integer_2
++    integer*4 :: integer_4
++    integer*8 :: integer_8
++
++    write(buffer, '(A, I, A)') ':',12340,':'
++    print *,buffer
++    if (buffer.ne.":       12340:") stop 1
++
++    read(buffer, '(A1, I, A1)') colon, integer_4, colon
++    if (integer_4.ne.12340) stop 2
++
++    integer_2 = -99
++    write(buffer, '(A, I, A)') ':',integer_2,':'
++    print *,buffer
++    if (buffer.ne.":    -99:") stop 3
++
++    integer_8 = -11112222
++    write(buffer, '(A, I, A)') ':',integer_8,':'
++    print *,buffer
++    if (buffer.ne.":              -11112222:") stop 4
++
++! If the width is 7 and there are 7 leading zeroes, the result should be zero.
++    integer_2 = 789
++    buffer = '0000000789'
++    read(buffer, '(I)') integer_2
++    if (integer_2.ne.0) stop 5
++end
+diff --git a/gcc/testsuite/gfortran.dg/fmt_i_default_field_width_3.f90 b/gcc/testsuite/gfortran.dg/fmt_i_default_field_width_3.f90
+new file mode 100644
+index 00000000000..3a6684b3c4d
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/fmt_i_default_field_width_3.f90
+@@ -0,0 +1,35 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-format-defaults" }
++!
++! Test case for the default field widths enabled by the -fdec-format-defaults flag.
++!
++! This feature is not part of any Fortran standard, but it is supported by the
++! Oracle Fortran compiler and others.
++!
++! Test case added by Mark Eggleston <mark.eggleston@codethink.com> to check
++! use of -fdec-format-defaults
++!
++
++    character(50) :: buffer
++    character(1) :: colon
++
++    integer*2 :: integer_2
++    integer*4 :: integer_4
++    integer*8 :: integer_8
++
++    write(buffer, '(A, I, A)') ':',12340,':' ! { dg-error "Nonnegative width required" }
++
++    read(buffer, '(A1, I, A1)') colon, integer_4, colon ! { dg-error "Nonnegative width required" }
++    if (integer_4.ne.12340) stop 2
++
++    integer_2 = -99
++    write(buffer, '(A, I, A)') ':',integer_2,':' ! { dg-error "Nonnegative width required" }
++
++    integer_8 = -11112222
++    write(buffer, '(A, I, A)') ':',integer_8,':' ! { dg-error "Nonnegative width required" }
++
++! If the width is 7 and there are 7 leading zeroes, the result should be zero.
++    integer_2 = 789
++    buffer = '0000000789'
++    read(buffer, '(I)') integer_2 ! { dg-error "Nonnegative width required" }
++end
+diff --git a/libgfortran/io/format.c b/libgfortran/io/format.c
+index 688764785da..e798d9bda87 100644
+--- a/libgfortran/io/format.c
++++ b/libgfortran/io/format.c
+@@ -956,12 +956,33 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
+ 	  *seen_dd = true;
+ 	  if (u != FMT_POSINT && u != FMT_ZERO)
+ 	    {
++	      if (dtp->common.flags & IOPARM_DT_DEC_EXT)
++		{
++		  tail->u.real.w = DEFAULT_WIDTH;
++		  tail->u.real.d = 0;
++		  tail->u.real.e = -1;
++		  fmt->saved_token = u;
++		  break;
++		}
+ 	      fmt->error = nonneg_required;
+ 	      goto finished;
+ 	    }
+ 	}
++      else if (u == FMT_ZERO)
++	{
++	  fmt->error = posint_required;
++	  goto finished;
++	}
+       else if (u != FMT_POSINT)
+ 	{
++	  if (dtp->common.flags & IOPARM_DT_DEC_EXT)
++	    {
++	      tail->u.real.w = DEFAULT_WIDTH;
++	      tail->u.real.d = 0;
++	      tail->u.real.e = -1;
++	      fmt->saved_token = u;
++	      break;
++	    }
+ 	  fmt->error = posint_required;
+ 	  goto finished;
+ 	}
+@@ -1100,6 +1121,13 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
+ 	{
+ 	  if (t != FMT_POSINT)
+ 	    {
++	      if (dtp->common.flags & IOPARM_DT_DEC_EXT)
++		{
++		  tail->u.integer.w = DEFAULT_WIDTH;
++		  tail->u.integer.m = -1;
++		  fmt->saved_token = t;
++		  break;
++		}
+ 	      fmt->error = posint_required;
+ 	      goto finished;
+ 	    }
+@@ -1108,6 +1136,13 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
+ 	{
+ 	  if (t != FMT_ZERO && t != FMT_POSINT)
+ 	    {
++	      if (dtp->common.flags & IOPARM_DT_DEC_EXT)
++		{
++		  tail->u.integer.w = DEFAULT_WIDTH;
++		  tail->u.integer.m = -1;
++		  fmt->saved_token = t;
++		  break;
++		}
+ 	      fmt->error = nonneg_required;
+ 	      goto finished;
+ 	    }
+diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h
+index 5caaea280f0..f5e63797ba1 100644
+--- a/libgfortran/io/io.h
++++ b/libgfortran/io/io.h
+@@ -1011,6 +1011,56 @@ memset4 (gfc_char4_t *p, gfc_char4_t c, int k)
+     *p++ = c;
+ }
+ 
++/* Used in width fields to indicate that the default should be used */
++#define DEFAULT_WIDTH -1
++
++/* Defaults for certain format field descriptors. These are decided based on
++ * the type of the value being formatted.
++ *
++ * The behaviour here is modelled on the Oracle Fortran compiler. At the time
++ * of writing, the details were available at this URL:
++ *
++ *   https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vnc3/index.html#z4000743746d
++ */
++
++static inline int
++default_width_for_integer (int kind)
++{
++  switch (kind)
++    {
++    case 1:
++    case 2:  return  7;
++    case 4:  return 12;
++    case 8:  return 23;
++    case 16: return 44;
++    default: return  0;
++    }
++}
++
++static inline int
++default_width_for_float (int kind)
++{
++  switch (kind)
++    {
++    case 4:  return 15;
++    case 8:  return 25;
++    case 16: return 42;
++    default: return  0;
++    }
++}
++
++static inline int
++default_precision_for_float (int kind)
++{
++  switch (kind)
++    {
++    case 4:  return 7;
++    case 8:  return 16;
++    case 16: return 33;
++    default: return 0;
++    }
++}
++
+ #endif
+ 
+ extern void
+diff --git a/libgfortran/io/read.c b/libgfortran/io/read.c
+index 52ffb4639ac..be9f6cb6f76 100644
+--- a/libgfortran/io/read.c
++++ b/libgfortran/io/read.c
+@@ -635,6 +635,12 @@ read_decimal (st_parameter_dt *dtp, const fnode *f, char *dest, int length)
+ 
+   w = f->u.w;
+ 
++  /* This is a legacy extension, and the frontend will only allow such cases
++   * through when -fdec-format-defaults is passed.
++   */
++  if (w == DEFAULT_WIDTH)
++    w = default_width_for_integer (length);
++
+   p = read_block_form (dtp, &w);
+ 
+   if (p == NULL)
+diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c
+index c8811e200e0..4ef35561fdd 100644
+--- a/libgfortran/io/write.c
++++ b/libgfortran/io/write.c
+@@ -685,9 +685,8 @@ write_l (st_parameter_dt *dtp, const fnode *f, char *source, int len)
+   p[wlen - 1] = (n) ? 'T' : 'F';
+ }
+ 
+-
+ static void
+-write_boz (st_parameter_dt *dtp, const fnode *f, const char *q, int n)
++write_boz (st_parameter_dt *dtp, const fnode *f, const char *q, int n, int len)
+ {
+   int w, m, digits, nzero, nblank;
+   char *p;
+@@ -720,6 +719,9 @@ write_boz (st_parameter_dt *dtp, const fnode *f, const char *q, int n)
+   /* Select a width if none was specified.  The idea here is to always
+      print something.  */
+ 
++  if (w == DEFAULT_WIDTH)
++    w = default_width_for_integer (len);
++
+   if (w == 0)
+     w = ((digits < m) ? m : digits);
+ 
+@@ -846,6 +848,8 @@ write_decimal (st_parameter_dt *dtp, const fnode *f, const char *source,
+ 
+   /* Select a width if none was specified.  The idea here is to always
+      print something.  */
++  if (w == DEFAULT_WIDTH)
++    w = default_width_for_integer (len);
+ 
+   if (w == 0)
+     w = ((digits < m) ? m : digits) + nsign;
+@@ -1206,13 +1210,13 @@ write_b (st_parameter_dt *dtp, const fnode *f, const char *source, int len)
+   if (len > (int) sizeof (GFC_UINTEGER_LARGEST))
+     {
+       p = btoa_big (source, itoa_buf, len, &n);
+-      write_boz (dtp, f, p, n);
++      write_boz (dtp, f, p, n, len);
+     }
+   else
+     {
+       n = extract_uint (source, len);
+       p = btoa (n, itoa_buf, sizeof (itoa_buf));
+-      write_boz (dtp, f, p, n);
++      write_boz (dtp, f, p, n, len);
+     }
+ }
+ 
+@@ -1227,13 +1231,13 @@ write_o (st_parameter_dt *dtp, const fnode *f, const char *source, int len)
+   if (len > (int) sizeof (GFC_UINTEGER_LARGEST))
+     {
+       p = otoa_big (source, itoa_buf, len, &n);
+-      write_boz (dtp, f, p, n);
++      write_boz (dtp, f, p, n, len);
+     }
+   else
+     {
+       n = extract_uint (source, len);
+       p = otoa (n, itoa_buf, sizeof (itoa_buf));
+-      write_boz (dtp, f, p, n);
++      write_boz (dtp, f, p, n, len);
+     }
+ }
+ 
+@@ -1247,13 +1251,13 @@ write_z (st_parameter_dt *dtp, const fnode *f, const char *source, int len)
+   if (len > (int) sizeof (GFC_UINTEGER_LARGEST))
+     {
+       p = ztoa_big (source, itoa_buf, len, &n);
+-      write_boz (dtp, f, p, n);
++      write_boz (dtp, f, p, n, len);
+     }
+   else
+     {
+       n = extract_uint (source, len);
+       p = gfc_xtoa (n, itoa_buf, sizeof (itoa_buf));
+-      write_boz (dtp, f, p, n);
++      write_boz (dtp, f, p, n, len);
+     }
+ }
+ 
+@@ -1491,7 +1495,7 @@ size_from_kind (st_parameter_dt *dtp, const fnode *f, int kind)
+ {
+   int size;
+ 
+-  if (f->format == FMT_F && f->u.real.w == 0)
++  if ((f->format == FMT_F && f->u.real.w == 0) || f->u.real.w == DEFAULT_WIDTH)
+     {
+       switch (kind)
+       {
+diff --git a/libgfortran/io/write_float.def b/libgfortran/io/write_float.def
+index c63db4e77ef..daa16679f53 100644
+--- a/libgfortran/io/write_float.def
++++ b/libgfortran/io/write_float.def
+@@ -113,7 +113,8 @@ determine_precision (st_parameter_dt * dtp, const fnode * f, int len)
+ static void
+ build_float_string (st_parameter_dt *dtp, const fnode *f, char *buffer,
+ 		    size_t size, int nprinted, int precision, int sign_bit,
+-		    bool zero_flag, int npad, char *result, size_t *len)
++		    bool zero_flag, int npad, int default_width, char *result,
++		    size_t *len)
+ {
+   char *put;
+   char *digits;
+@@ -132,8 +133,17 @@ build_float_string (st_parameter_dt *dtp, const fnode *f, char *buffer,
+   sign_t sign;
+ 
+   ft = f->format;
+-  w = f->u.real.w;
+-  d = f->u.real.d;
++  if (f->u.real.w == DEFAULT_WIDTH)
++    /* This codepath can only be reached with -fdec-format-defaults. */
++    {
++      w = default_width;
++      d = precision;
++    }
++  else
++    {
++      w = f->u.real.w;
++      d = f->u.real.d;
++    }
+   p = dtp->u.p.scale_factor;
+   *len = 0;
+ 
+@@ -960,6 +970,11 @@ determine_en_precision (st_parameter_dt *dtp, const fnode *f,
+       int save_scale_factor;\
+       volatile GFC_REAL_ ## x temp;\
+       save_scale_factor = dtp->u.p.scale_factor;\
++      if (w == DEFAULT_WIDTH)\
++	{\
++	  w = default_width;\
++	  d = precision;\
++	}\
+       switch (dtp->u.p.current_unit->round_status)\
+ 	{\
+ 	  case ROUND_ZERO:\
+@@ -1035,7 +1050,8 @@ determine_en_precision (st_parameter_dt *dtp, const fnode *f,
+ 	  nprinted = FDTOA(y,precision,m);\
+ 	}\
+       build_float_string (dtp, &newf, buffer, size, nprinted, precision,\
+-				   sign_bit, zero_flag, npad, result, res_len);\
++				   sign_bit, zero_flag, npad, default_width,\
++				   result, res_len);\
+       dtp->u.p.scale_factor = save_scale_factor;\
+     }\
+   else\
+@@ -1045,7 +1061,8 @@ determine_en_precision (st_parameter_dt *dtp, const fnode *f,
+       else\
+ 	nprinted = DTOA(y,precision,m);\
+       build_float_string (dtp, f, buffer, size, nprinted, precision,\
+-				   sign_bit, zero_flag, npad, result, res_len);\
++				   sign_bit, zero_flag, npad, default_width,\
++				   result, res_len);\
+     }\
+ }\
+ 
+@@ -1059,6 +1076,16 @@ get_float_string (st_parameter_dt *dtp, const fnode *f, const char *source,
+ {
+   int sign_bit, nprinted;
+   bool zero_flag;
++  int default_width = 0;
++
++  if (f->u.real.w == DEFAULT_WIDTH)
++    /* This codepath can only be reached with -fdec-format-defaults. The default
++     * values are based on those used in the Oracle Fortran compiler.
++     */
++    {
++      default_width = default_width_for_float (kind);
++      precision = default_precision_for_float (kind);
++    }
+ 
+   switch (kind)
+     {
+-- 
+2.11.0
+
diff --git a/SOURCES/0002-Allow-duplicate-declarations.patch b/SOURCES/0002-Allow-duplicate-declarations.patch
new file mode 100644
index 0000000..42f4fd3
--- /dev/null
+++ b/SOURCES/0002-Allow-duplicate-declarations.patch
@@ -0,0 +1,219 @@
+From dd2c3c5e8e8370d6e08a87b7122b8fbe4ddf7dde Mon Sep 17 00:00:00 2001
+From: Mark Doffman <mark.doffman@codethink.co.uk>
+Date: Tue, 23 Jun 2015 22:59:08 +0000
+Subject: [PATCH 02/16] Allow duplicate declarations.
+
+Enabled by -fdec-duplicates and -fdec.
+
+Some fixes by Jim MacArthur <jim.macarthur@codethink.co.uk>
+Addition of -fdec-duplicates by Mark Eggleston <mark.eggleston@codethink.com>
+---
+ gcc/fortran/lang.opt                           |  4 ++++
+ gcc/fortran/options.c                          |  1 +
+ gcc/fortran/symbol.c                           | 23 ++++++++++++++++++++---
+ gcc/testsuite/gfortran.dg/duplicate_type_4.f90 | 13 +++++++++++++
+ gcc/testsuite/gfortran.dg/duplicate_type_5.f90 | 13 +++++++++++++
+ gcc/testsuite/gfortran.dg/duplicate_type_6.f90 | 13 +++++++++++++
+ gcc/testsuite/gfortran.dg/duplicate_type_7.f90 | 13 +++++++++++++
+ gcc/testsuite/gfortran.dg/duplicate_type_8.f90 | 12 ++++++++++++
+ gcc/testsuite/gfortran.dg/duplicate_type_9.f90 | 12 ++++++++++++
+ 9 files changed, 101 insertions(+), 3 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_4.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_5.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_6.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_7.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_8.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_9.f90
+
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 26e82601b62..491d81ccaa5 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -440,6 +440,10 @@ fdec
+ Fortran Var(flag_dec)
+ Enable all DEC language extensions.
+ 
++fdec-duplicates
++Fortran Var(flag_dec_duplicates)
++Allow varibles to be duplicated in the type specification matches.
++
+ fdec-include
+ Fortran Var(flag_dec_include)
+ Enable legacy parsing of INCLUDE as statement.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index 4f91486e977..f93db8b6d7c 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -75,6 +75,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_math, value, value);
+   SET_BITFLAG (flag_dec_include, value, value);
+   SET_BITFLAG (flag_dec_format_defaults, value, value);
++  SET_BITFLAG (flag_dec_duplicates, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
+index ec753229a98..4247b5b60c8 100644
+--- a/gcc/fortran/symbol.c
++++ b/gcc/fortran/symbol.c
+@@ -1995,6 +1995,8 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where)
+   if (sym->attr.result && type == BT_UNKNOWN && sym->ns->proc_name)
+     type = sym->ns->proc_name->ts.type;
+ 
++  flavor = sym->attr.flavor;
++
+   if (type != BT_UNKNOWN && !(sym->attr.function && sym->attr.implicit_type)
+       && !(gfc_state_stack->previous && gfc_state_stack->previous->previous
+ 	   && gfc_state_stack->previous->previous->state == COMP_SUBMODULE)
+@@ -2004,9 +2006,26 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where)
+ 	gfc_error ("Symbol %qs at %L conflicts with symbol from module %qs, "
+ 		   "use-associated at %L", sym->name, where, sym->module,
+ 		   &sym->declared_at);
++      else if (flag_dec_duplicates)
++	{
++	  /* Ignore temporaries and class/procedure names */
++	  if (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS
++	      || sym->ts.type == BT_PROCEDURE)
++	    return false;
++
++	  if (gfc_compare_types (&sym->ts, ts)
++	      && (flavor == FL_UNKNOWN || flavor == FL_VARIABLE
++	      || flavor == FL_PROCEDURE))
++	    {
++	      return gfc_notify_std (GFC_STD_LEGACY,
++				     "Symbol '%qs' at %L already has "
++				     "basic type of %s", sym->name, where,
++				     gfc_basic_typename (type));
++	    }
++	}
+       else
+ 	gfc_error ("Symbol %qs at %L already has basic type of %s", sym->name,
+-		 where, gfc_basic_typename (type));
++		   where, gfc_basic_typename (type));
+       return false;
+     }
+ 
+@@ -2017,8 +2036,6 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where)
+       return false;
+     }
+ 
+-  flavor = sym->attr.flavor;
+-
+   if (flavor == FL_PROGRAM || flavor == FL_BLOCK_DATA || flavor == FL_MODULE
+       || flavor == FL_LABEL
+       || (flavor == FL_PROCEDURE && sym->attr.subroutine)
+diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_4.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_4.f90
+new file mode 100644
+index 00000000000..cdd29ea8846
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/duplicate_type_4.f90
+@@ -0,0 +1,13 @@
++! { dg-do compile }
++! { dg-options "-std=f95" }
++
++! PR fortran/30239
++! Check for errors when a symbol gets declared a type twice, even if it
++! is the same.
++
++INTEGER FUNCTION foo ()
++  IMPLICIT NONE
++  INTEGER :: x
++  INTEGER :: x ! { dg-error "basic type of" }
++  x = 42
++END FUNCTION foo
+diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_5.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_5.f90
+new file mode 100644
+index 00000000000..00f931809aa
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/duplicate_type_5.f90
+@@ -0,0 +1,13 @@
++! { dg-do run }
++! { dg-options "-fdec" }
++!
++! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++
++program test
++  implicit none
++  integer :: x
++  integer :: x
++  x = 42
++  if (x /= 42) stop 1
++end program test
+diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_6.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_6.f90
+new file mode 100644
+index 00000000000..f0df27e323c
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/duplicate_type_6.f90
+@@ -0,0 +1,13 @@
++! { dg-do run }
++! { dg-options "-std=legacy -fdec-duplicates" }
++!
++! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++
++program test
++  implicit none
++  integer :: x
++  integer :: x
++  x = 42
++  if (x /= 42) stop 1
++end program test
+diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_7.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_7.f90
+new file mode 100644
+index 00000000000..f32472ff586
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/duplicate_type_7.f90
+@@ -0,0 +1,13 @@
++! { dg-do run }
++! { dg-options "-fdec-duplicates" }
++!
++! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++
++program test
++  implicit none
++  integer :: x
++  integer :: x! { dg-warning "Legacy Extension" }
++  x = 42
++  if (x /= 42) stop 1
++end program test
+diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_8.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_8.f90
+new file mode 100644
+index 00000000000..23c94add179
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/duplicate_type_8.f90
+@@ -0,0 +1,12 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-duplicates" }
++!
++! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++
++integer function foo ()
++  implicit none
++  integer :: x
++  integer :: x ! { dg-error "basic type of" }
++  x = 42
++end function foo
+diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_9.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_9.f90
+new file mode 100644
+index 00000000000..d5edee4d8ee
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/duplicate_type_9.f90
+@@ -0,0 +1,12 @@
++! { dg-do compile }
++! { dg-options "-fdec-duplicates -fno-dec-duplicates" }
++!
++! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++
++integer function foo ()
++  implicit none
++  integer :: x
++  integer :: x ! { dg-error "basic type of" }
++  x = 42
++end function foo
+-- 
+2.11.0
+
diff --git a/SOURCES/0003-Convert-LOGICAL-to-INTEGER-for-arithmetic-ops-and-vi.patch b/SOURCES/0003-Convert-LOGICAL-to-INTEGER-for-arithmetic-ops-and-vi.patch
new file mode 100644
index 0000000..abec1ac
--- /dev/null
+++ b/SOURCES/0003-Convert-LOGICAL-to-INTEGER-for-arithmetic-ops-and-vi.patch
@@ -0,0 +1,298 @@
+From 6a3faecd0b1eed41e865bdab721cc3a60492845d Mon Sep 17 00:00:00 2001
+From: Jim MacArthur <jim.macarthur@codethink.co.uk>
+Date: Wed, 7 Oct 2015 16:31:18 -0400
+Subject: [PATCH 03/16] Convert LOGICAL to INTEGER for arithmetic ops, and vice
+ versa
+
+We allow converting LOGICAL types to INTEGER when doing arithmetic
+operations, and converting INTEGER types to LOGICAL for use in
+boolean operations.
+
+This feature is enabled with the -flogical-as-integer flag.
+
+Note: using this feature will disable bitwise logical operations enabled by
+-fdec.
+---
+ gcc/fortran/lang.opt                               |  4 ++
+ gcc/fortran/resolve.c                              | 55 +++++++++++++++++++++-
+ .../logical_to_integer_and_vice_versa_1.f          | 31 ++++++++++++
+ .../logical_to_integer_and_vice_versa_2.f          | 31 ++++++++++++
+ .../logical_to_integer_and_vice_versa_3.f          | 33 +++++++++++++
+ .../logical_to_integer_and_vice_versa_4.f          | 33 +++++++++++++
+ 6 files changed, 186 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f
+ create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f
+
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 491d81ccaa5..13a8e9778bb 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -468,6 +468,10 @@ fdec-static
+ Fortran Var(flag_dec_static)
+ Enable DEC-style STATIC and AUTOMATIC attributes.
+ 
++flogical-as-integer
++Fortran Var(flag_logical_as_integer)
++Convert from integer to logical or logical to integer for arithmetic operations.
++
+ fdefault-double-8
+ Fortran Var(flag_default_double)
+ Set the default double precision kind to an 8 byte wide type.
+diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
+index 8232deb8170..32b8d504ff6 100644
+--- a/gcc/fortran/resolve.c
++++ b/gcc/fortran/resolve.c
+@@ -3838,7 +3838,6 @@ lookup_uop_fuzzy (const char *op, gfc_symtree *uop)
+   return gfc_closest_fuzzy_match (op, candidates);
+ }
+ 
+-
+ /* Callback finding an impure function as an operand to an .and. or
+    .or.  expression.  Remember the last function warned about to
+    avoid double warnings when recursing.  */
+@@ -3873,6 +3872,37 @@ impure_function_callback (gfc_expr **e, int *walk_subtrees ATTRIBUTE_UNUSED,
+   return 0;
+ }
+ 
++/* If E is a logical, convert it to an integer and issue a warning
++   for the conversion.  */
++
++static void
++convert_integer_to_logical (gfc_expr *e)
++{
++  if (e->ts.type == BT_INTEGER)
++    {
++      /* Convert to LOGICAL */
++      gfc_typespec t;
++      t.type = BT_LOGICAL;
++      t.kind = 1;
++      gfc_convert_type_warn (e, &t, 2, 1);
++    }
++}
++
++/* If E is a logical, convert it to an integer and issue a warning
++   for the conversion.  */
++
++static void
++convert_logical_to_integer (gfc_expr *e)
++{
++  if (e->ts.type == BT_LOGICAL)
++    {
++      /* Convert to INTEGER */
++      gfc_typespec t;
++      t.type = BT_INTEGER;
++      t.kind = 1;
++      gfc_convert_type_warn (e, &t, 2, 1);
++    }
++}
+ 
+ /* Resolve an operator expression node.  This can involve replacing the
+    operation with a user defined function call.  */
+@@ -3938,6 +3968,12 @@ resolve_operator (gfc_expr *e)
+     case INTRINSIC_TIMES:
+     case INTRINSIC_DIVIDE:
+     case INTRINSIC_POWER:
++      if (flag_logical_as_integer)
++	{
++	  convert_logical_to_integer (op1);
++	  convert_logical_to_integer (op2);
++	}
++
+       if (gfc_numeric_ts (&op1->ts) && gfc_numeric_ts (&op2->ts))
+ 	{
+ 	  gfc_type_convert_binary (e, 1);
+@@ -3974,6 +4010,13 @@ resolve_operator (gfc_expr *e)
+     case INTRINSIC_OR:
+     case INTRINSIC_EQV:
+     case INTRINSIC_NEQV:
++
++      if (flag_logical_as_integer)
++	{
++	  convert_integer_to_logical (op1);
++	  convert_integer_to_logical (op2);
++	}
++
+       if (op1->ts.type == BT_LOGICAL && op2->ts.type == BT_LOGICAL)
+ 	{
+ 	  e->ts.type = BT_LOGICAL;
+@@ -4024,6 +4067,9 @@ resolve_operator (gfc_expr *e)
+ 	  goto simplify_op;
+ 	}
+ 
++      if (flag_logical_as_integer)
++	convert_integer_to_logical (op1);
++
+       if (op1->ts.type == BT_LOGICAL)
+ 	{
+ 	  e->ts.type = BT_LOGICAL;
+@@ -4055,6 +4101,13 @@ resolve_operator (gfc_expr *e)
+     case INTRINSIC_EQ_OS:
+     case INTRINSIC_NE:
+     case INTRINSIC_NE_OS:
++
++      if (flag_logical_as_integer)
++	{
++	  convert_logical_to_integer (op1);
++	  convert_logical_to_integer (op2);
++	}
++
+       if (op1->ts.type == BT_CHARACTER && op2->ts.type == BT_CHARACTER
+ 	  && op1->ts.kind == op2->ts.kind)
+ 	{
+diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f
+new file mode 100644
+index 00000000000..938a91d9e9a
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f
+@@ -0,0 +1,31 @@
++! { dg-do run }
++! { dg-options "-std=legacy -flogical-as-integer" }
++!
++! Test conversion between logical and integer for logical operators
++!
++! Test case contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified for -flogical-as-integer by Mark Eggleston
++! <mark.eggleston@codethink.com>
++!
++        PROGRAM logical_integer_conversion
++          LOGICAL lpos /.true./
++          INTEGER ineg/0/
++          INTEGER ires
++          LOGICAL lres
++
++          ! Test Logicals converted to Integers
++          if ((lpos.AND.ineg).EQ.1) STOP 3
++          if ((ineg.AND.lpos).NE.0) STOP 4
++          ires = (.true..AND.0)
++          if (ires.NE.0) STOP 5
++          ires = (1.AND..false.)
++          if (ires.EQ.1) STOP 6
++
++          ! Test Integers converted to Logicals
++          if (lpos.EQ.ineg) STOP 7
++          if (ineg.EQ.lpos) STOP 8
++          lres = (.true..EQ.0)
++          if (lres) STOP 9
++          lres = (1.EQ..false.)
++          if (lres) STOP 10
++        END
+diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f
+new file mode 100644
+index 00000000000..9f146202ba5
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f
+@@ -0,0 +1,31 @@
++! { dg-do compile }
++! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" }
++!
++! Based on logical_to_integer_and_vice_versa_1.f but with option disabled
++! to test for error messages.
++!
++! Test case contributed by by Mark Eggleston <mark.eggleston@codethink.com>
++!
++!
++        PROGRAM logical_integer_conversion
++          LOGICAL lpos /.true./
++          INTEGER ineg/0/
++          INTEGER ires
++          LOGICAL lres
++
++          ! Test Logicals converted to Integers
++          if ((lpos.AND.ineg).EQ.1) STOP 3 ! { dg-error "Operands of logical operator" }
++          if ((ineg.AND.lpos).NE.0) STOP 4 ! { dg-error "Operands of logical operator" }
++          ires = (.true..AND.0) ! { dg-error "Operands of logical operator" }
++          if (ires.NE.0) STOP 5
++          ires = (1.AND..false.) ! { dg-error "Operands of logical operator" }
++          if (ires.EQ.1) STOP 6
++
++          ! Test Integers converted to Logicals
++          if (lpos.EQ.ineg) STOP 7 ! { dg-error "Operands of comparison operator" }
++          if (ineg.EQ.lpos) STOP 8 ! { dg-error "Operands of comparison operator" }
++          lres = (.true..EQ.0) ! { dg-error "Operands of comparison operator" }
++          if (lres) STOP 9
++          lres = (1.EQ..false.) ! { dg-error "Operands of comparison operator" }
++          if (lres) STOP 10
++        END
+diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f
+new file mode 100644
+index 00000000000..446873eb2dc
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f
+@@ -0,0 +1,33 @@
++! { dg-do compile }
++! { dg-options "-std=legacy -flogical-as-integer" }
++!
++! Test conversion between logical and integer for logical operators
++!
++        program test
++          logical f /.false./
++          logical t /.true./
++          real x
++
++          x = 7.7
++          x = x + t*3.0
++          if (abs(x - 10.7).gt.0.00001) stop 1
++          x = x + .false.*5.0
++          if (abs(x - 10.7).gt.0.00001) stop 2
++          x = x - .true.*5.0
++          if (abs(x - 5.7).gt.0.00001) stop 3
++          x = x + t
++          if (abs(x - 6.7).gt.0.00001) stop 4
++          x = x + f
++          if (abs(x - 6.7).gt.0.00001) stop 5
++          x = x - t
++          if (abs(x - 5.7).gt.0.00001) stop 6
++          x = x - f
++          if (abs(x - 5.7).gt.0.00001) stop 7
++          x = x**.true.
++          if (abs(x - 5.7).gt.0.00001) stop 8
++          x = x**.false.
++          if (abs(x - 1.0).gt.0.00001) stop 9
++          x = x/t
++          if (abs(x - 1.0).gt.0.00001) stop 10
++          if ((x/.false.).le.huge(x)) stop 11
++        end
+diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f
+new file mode 100644
+index 00000000000..4301a4988d8
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f
+@@ -0,0 +1,33 @@
++! { dg-do compile }
++! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" }
++!
++! Test conversion between logical and integer for logical operators
++!
++        program test
++          logical f /.false./
++          logical t /.true./
++          real x
++
++          x = 7.7
++          x = x + t*3.0 ! { dg-error "Operands of binary numeric" }
++          if (abs(x - 10.7).gt.0.00001) stop 1
++          x = x + .false.*5.0 ! { dg-error "Operands of binary numeric" }
++          if (abs(x - 10.7).gt.0.00001) stop 2
++          x = x - .true.*5.0 ! { dg-error "Operands of binary numeric" }
++          if (abs(x - 5.7).gt.0.00001) stop 3
++          x = x + t ! { dg-error "Operands of binary numeric" }
++          if (abs(x - 6.7).gt.0.00001) stop 4
++          x = x + f ! { dg-error "Operands of binary numeric" }
++          if (abs(x - 6.7).gt.0.00001) stop 5
++          x = x - t ! { dg-error "Operands of binary numeric" }
++          if (abs(x - 5.7).gt.0.00001) stop 6
++          x = x - f ! { dg-error "Operands of binary numeric" }
++          if (abs(x - 5.7).gt.0.00001) stop 7
++          x = x**.true. ! { dg-error "Operands of binary numeric" }
++          if (abs(x - 5.7).gt.0.00001) stop 8
++          x = x**.false. ! { dg-error "Operands of binary numeric" }
++          if (abs(x - 1.0).gt.0.00001) stop 9
++          x = x/t ! { dg-error "Operands of binary numeric" }
++          if (abs(x - 1.0).gt.0.00001) stop 10
++          if ((x/.false.).le.huge(x)) stop 11 ! { dg-error "Operands of binary numeric" }
++        end
+-- 
+2.11.0
+
diff --git a/SOURCES/0004-Allow-CHARACTER-literals-in-assignments-and-data-sta.patch b/SOURCES/0004-Allow-CHARACTER-literals-in-assignments-and-data-sta.patch
new file mode 100644
index 0000000..66a63b7
--- /dev/null
+++ b/SOURCES/0004-Allow-CHARACTER-literals-in-assignments-and-data-sta.patch
@@ -0,0 +1,860 @@
+From c1d6c81730ffda61eff8fccf4d0c7efa3ae6fd8d Mon Sep 17 00:00:00 2001
+From: Jim MacArthur <jim.macarthur@codethink.co.uk>
+Date: Thu, 4 Feb 2016 17:18:30 +0000
+Subject: [PATCH 04/16] Allow CHARACTER literals in assignments and data
+ statements
+
+Warnings are raised when this happens.
+
+Enable using -fdec-char-as-int or -fdec
+---
+ gcc/fortran/arith.c                                | 96 +++++++++++++++++++++-
+ gcc/fortran/arith.h                                |  4 +
+ gcc/fortran/expr.c                                 |  5 ++
+ gcc/fortran/intrinsic.c                            | 32 +++++++-
+ gcc/fortran/lang.opt                               |  5 ++
+ gcc/fortran/options.c                              |  1 +
+ gcc/fortran/resolve.c                              | 11 ++-
+ gcc/fortran/simplify.c                             | 29 ++++++-
+ gcc/fortran/trans-const.c                          |  3 +-
+ .../dec_char_conversion_in_assignment_1.f90        | 61 ++++++++++++++
+ .../dec_char_conversion_in_assignment_2.f90        | 61 ++++++++++++++
+ .../dec_char_conversion_in_assignment_3.f90        | 61 ++++++++++++++
+ .../gfortran.dg/dec_char_conversion_in_data_1.f90  | 69 ++++++++++++++++
+ .../gfortran.dg/dec_char_conversion_in_data_2.f90  | 69 ++++++++++++++++
+ .../gfortran.dg/dec_char_conversion_in_data_3.f90  | 69 ++++++++++++++++
+ gcc/testsuite/gfortran.dg/hollerith5.f90           |  5 +-
+ gcc/testsuite/gfortran.dg/hollerith_legacy.f90     |  2 +-
+ .../gfortran.dg/no_char_to_int_assign.f90          | 20 +++++
+ 18 files changed, 589 insertions(+), 14 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_3.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_3.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/no_char_to_int_assign.f90
+
+diff --git a/gcc/fortran/arith.c b/gcc/fortran/arith.c
+index f2d311c044c..7e6d6dd3bb8 100644
+--- a/gcc/fortran/arith.c
++++ b/gcc/fortran/arith.c
+@@ -2553,11 +2553,11 @@ hollerith2representation (gfc_expr *result, gfc_expr *src)
+   src_len = src->representation.length - src->ts.u.pad;
+   gfc_target_expr_size (result, &result_len);
+ 
+-  if (src_len > result_len)
++  if (src_len > result_len && warn_character_truncation)
+     {
+-      gfc_warning (0,
+-		   "The Hollerith constant at %L is too long to convert to %qs",
+-		   &src->where, gfc_typename(&result->ts));
++      gfc_warning (OPT_Wcharacter_truncation, "The Hollerith constant at %L "
++		   "is truncated in conversion to %qs", &src->where,
++		   gfc_typename(&result->ts));
+     }
+ 
+   result->representation.string = XCNEWVEC (char, result_len + 1);
+@@ -2572,6 +2572,36 @@ hollerith2representation (gfc_expr *result, gfc_expr *src)
+ }
+ 
+ 
++/* Helper function to set the representation in a character conversion.
++   This assumes that the ts.type and ts.kind of the result have already
++   been set.  */
++
++static void
++character2representation (gfc_expr *result, gfc_expr *src)
++{
++  size_t src_len, result_len;
++  int i;
++  src_len = src->value.character.length;
++  gfc_target_expr_size (result, &result_len);
++
++  if (src_len > result_len && warn_character_truncation)
++    gfc_warning (OPT_Wcharacter_truncation, "The character constant at %L is "
++		 "is truncated in conversion to %s", &src->where,
++		 gfc_typename(&result->ts));
++
++  result->representation.string = XCNEWVEC (char, result_len + 1);
++
++  for (i = 0; i < MIN (result_len, src_len); i++)
++    result->representation.string[i] = (char) src->value.character.string[i];
++
++  if (src_len < result_len)
++    memset (&result->representation.string[src_len], ' ',
++	    result_len - src_len);
++
++  result->representation.string[result_len] = '\0'; /* For debugger  */
++  result->representation.length = result_len;
++}
++
+ /* Convert Hollerith to integer. The constant will be padded or truncated.  */
+ 
+ gfc_expr *
+@@ -2587,6 +2617,19 @@ gfc_hollerith2int (gfc_expr *src, int kind)
+   return result;
+ }
+ 
++/* Convert character to integer. The constant will be padded or truncated. */
++
++gfc_expr *
++gfc_character2int (gfc_expr *src, int kind)
++{
++  gfc_expr *result;
++  result = gfc_get_constant_expr (BT_INTEGER, kind, &src->where);
++
++  character2representation (result, src);
++  gfc_interpret_integer (kind, (unsigned char *) result->representation.string,
++			 result->representation.length, result->value.integer);
++  return result;
++}
+ 
+ /* Convert Hollerith to real. The constant will be padded or truncated.  */
+ 
+@@ -2603,6 +2646,21 @@ gfc_hollerith2real (gfc_expr *src, int kind)
+   return result;
+ }
+ 
++/* Convert character to real. The constant will be padded or truncated.  */
++
++gfc_expr *
++gfc_character2real (gfc_expr *src, int kind)
++{
++  gfc_expr *result;
++  result = gfc_get_constant_expr (BT_REAL, kind, &src->where);
++
++  character2representation (result, src);
++  gfc_interpret_float (kind, (unsigned char *) result->representation.string,
++		       result->representation.length, result->value.real);
++
++  return result;
++}
++
+ 
+ /* Convert Hollerith to complex. The constant will be padded or truncated.  */
+ 
+@@ -2619,6 +2677,21 @@ gfc_hollerith2complex (gfc_expr *src, int kind)
+   return result;
+ }
+ 
++/* Convert character to complex. The constant will be padded or truncated.  */
++
++gfc_expr *
++gfc_character2complex (gfc_expr *src, int kind)
++{
++  gfc_expr *result;
++  result = gfc_get_constant_expr (BT_COMPLEX, kind, &src->where);
++
++  character2representation (result, src);
++  gfc_interpret_complex (kind, (unsigned char *) result->representation.string,
++			 result->representation.length, result->value.complex);
++
++  return result;
++}
++
+ 
+ /* Convert Hollerith to character.  */
+ 
+@@ -2654,3 +2727,18 @@ gfc_hollerith2logical (gfc_expr *src, int kind)
+ 
+   return result;
+ }
++
++/* Convert character to logical. The constant will be padded or truncated.  */
++
++gfc_expr *
++gfc_character2logical (gfc_expr *src, int kind)
++{
++  gfc_expr *result;
++  result = gfc_get_constant_expr (BT_LOGICAL, kind, &src->where);
++
++  character2representation (result, src);
++  gfc_interpret_logical (kind, (unsigned char *) result->representation.string,
++			 result->representation.length, &result->value.logical);
++
++  return result;
++}
+diff --git a/gcc/fortran/arith.h b/gcc/fortran/arith.h
+index e06c7059885..13ffd8d0b6c 100644
+--- a/gcc/fortran/arith.h
++++ b/gcc/fortran/arith.h
+@@ -82,7 +82,11 @@ gfc_expr *gfc_hollerith2real (gfc_expr *, int);
+ gfc_expr *gfc_hollerith2complex (gfc_expr *, int);
+ gfc_expr *gfc_hollerith2character (gfc_expr *, int);
+ gfc_expr *gfc_hollerith2logical (gfc_expr *, int);
++gfc_expr *gfc_character2int (gfc_expr *, int);
++gfc_expr *gfc_character2real (gfc_expr *, int);
++gfc_expr *gfc_character2complex (gfc_expr *, int);
+ gfc_expr *gfc_character2character (gfc_expr *, int);
++gfc_expr *gfc_character2logical (gfc_expr *, int);
+ 
+ #endif /* GFC_ARITH_H  */
+ 
+diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
+index 474e9ecc401..77600a5f2e8 100644
+--- a/gcc/fortran/expr.c
++++ b/gcc/fortran/expr.c
+@@ -3695,6 +3695,11 @@ gfc_check_assign (gfc_expr *lvalue, gfc_expr *rvalue, int conform,
+ 	  || rvalue->ts.type == BT_HOLLERITH)
+ 	return true;
+ 
++      if (flag_dec_char_conversions && (gfc_numeric_ts (&lvalue->ts)
++	  || lvalue->ts.type == BT_LOGICAL)     
++          && rvalue->ts.type == BT_CHARACTER)
++	return true;
++
+       if (lvalue->ts.type == BT_LOGICAL && rvalue->ts.type == BT_LOGICAL)
+ 	return true;
+ 
+diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
+index c21fbddd5fb..e94d5d3225f 100644
+--- a/gcc/fortran/intrinsic.c
++++ b/gcc/fortran/intrinsic.c
+@@ -4017,6 +4017,28 @@ add_conversions (void)
+ 	  add_conv (BT_LOGICAL, gfc_logical_kinds[j].kind,
+ 		    BT_INTEGER, gfc_integer_kinds[i].kind, GFC_STD_LEGACY);
+ 	}
++
++  /* Flang allows character conversions similar to Hollerith conversions
++     - the first characters will be turned into ascii values. */
++  if (flag_dec_char_conversions)
++    {
++      /* Character-Integer conversions.  */
++      for (i = 0; gfc_integer_kinds[i].kind != 0; i++)
++	add_conv (BT_CHARACTER, gfc_default_character_kind,
++		  BT_INTEGER, gfc_integer_kinds[i].kind, GFC_STD_LEGACY);
++      /* Character-Real conversions.  */
++      for (i = 0; gfc_real_kinds[i].kind != 0; i++)
++	add_conv (BT_CHARACTER, gfc_default_character_kind,
++		  BT_REAL, gfc_real_kinds[i].kind, GFC_STD_LEGACY);
++      /* Character-Complex conversions.  */
++      for (i = 0; gfc_real_kinds[i].kind != 0; i++)
++	add_conv (BT_CHARACTER, gfc_default_character_kind,
++		  BT_COMPLEX, gfc_real_kinds[i].kind, GFC_STD_LEGACY);
++      /* Character-Logical conversions.  */
++      for (i = 0; gfc_logical_kinds[i].kind != 0; i++)
++	add_conv (BT_CHARACTER, gfc_default_character_kind,
++		  BT_LOGICAL, gfc_logical_kinds[i].kind, GFC_STD_LEGACY);
++    }
+ }
+ 
+ 
+@@ -5128,8 +5150,16 @@ gfc_convert_type_warn (gfc_expr *expr, gfc_typespec *ts, int eflag, int wflag)
+ 			     gfc_typename (&from_ts), gfc_typename (ts),
+ 			     &expr->where);
+ 	}
++      else if (flag_dec_char_conversions && from_ts.type == BT_CHARACTER
++	       && (gfc_numeric_ts (ts) || ts->type == BT_LOGICAL))
++	{
++	  if (warn_conversion)
++	    gfc_warning_now (OPT_Wconversion, "Conversion from %s to %s at %L",
++			     gfc_typename (&from_ts), gfc_typename (ts),
++			     &expr->where);
++	}
+       else
+-        gcc_unreachable ();
++	gcc_unreachable ();
+     }
+ 
+   /* Insert a pre-resolved function call to the right function.  */
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 13a8e9778bb..5746b99b1d4 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -444,6 +444,11 @@ fdec-duplicates
+ Fortran Var(flag_dec_duplicates)
+ Allow varibles to be duplicated in the type specification matches.
+ 
++fdec-char-conversions
++Fortran Var(flag_dec_char_conversions)
++Enable the use of character literals in assignments and data statements
++for non-character variables.
++
+ fdec-include
+ Fortran Var(flag_dec_include)
+ Enable legacy parsing of INCLUDE as statement.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index f93db8b6d7c..e97b1568810 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -76,6 +76,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_include, value, value);
+   SET_BITFLAG (flag_dec_format_defaults, value, value);
+   SET_BITFLAG (flag_dec_duplicates, value, value);
++  SET_BITFLAG (flag_dec_char_conversions, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
+index 32b8d504ff6..43559185481 100644
+--- a/gcc/fortran/resolve.c
++++ b/gcc/fortran/resolve.c
+@@ -4320,7 +4320,6 @@ bad_op:
+   return false;
+ }
+ 
+-
+ /************** Array resolution subroutines **************/
+ 
+ enum compare_result
+@@ -10498,6 +10497,16 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns)
+   lhs = code->expr1;
+   rhs = code->expr2;
+ 
++  if ((gfc_numeric_ts (&lhs->ts) || lhs->ts.type == BT_LOGICAL)
++      && rhs->ts.type == BT_CHARACTER
++      && rhs->expr_type != EXPR_CONSTANT)
++    {
++      gfc_error ("Cannot convert CHARACTER into %s at %L",
++                 gfc_typename (&lhs->ts),     
++                 &rhs->where);
++      return false;
++    }
++
+   if (rhs->is_boz
+       && !gfc_notify_std (GFC_STD_GNU, "BOZ literal at %L outside "
+ 			  "a DATA statement and outside INT/REAL/DBLE/CMPLX",
+diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
+index 6c1f4bd4fce..7d7e3f22f73 100644
+--- a/gcc/fortran/simplify.c
++++ b/gcc/fortran/simplify.c
+@@ -8457,10 +8457,31 @@ gfc_convert_constant (gfc_expr *e, bt type, int kind)
+       break;
+ 
+     case BT_CHARACTER:
+-      if (type == BT_CHARACTER)
+-	f = gfc_character2character;
+-      else
+-	goto oops;
++      switch (type)
++	{
++	case BT_INTEGER:
++	  f = gfc_character2int;
++	  break;
++
++	case BT_REAL:
++	  f = gfc_character2real;
++	  break;
++
++	case BT_COMPLEX:
++	  f = gfc_character2complex;
++	  break;
++
++	case BT_CHARACTER:
++	  f = gfc_character2character;
++	  break;
++
++	case BT_LOGICAL:
++	  f = gfc_character2logical;
++	  break;
++
++	default:
++	  goto oops;
++	}
+       break;
+ 
+     default:
+diff --git a/gcc/fortran/trans-const.c b/gcc/fortran/trans-const.c
+index 432d12bf168..b155e35cbdd 100644
+--- a/gcc/fortran/trans-const.c
++++ b/gcc/fortran/trans-const.c
+@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "gfortran.h"
++#include "options.h"
+ #include "trans.h"
+ #include "fold-const.h"
+ #include "stor-layout.h"
+@@ -330,7 +331,7 @@ gfc_conv_constant_to_tree (gfc_expr * expr)
+ 			gfc_get_int_type (expr->ts.kind),
+ 			gfc_build_string_const (expr->representation.length,
+ 						expr->representation.string));
+-	  if (!integer_zerop (tmp) && !integer_onep (tmp))
++	  if (!integer_zerop (tmp) && !integer_onep (tmp) && warn_surprising)
+ 	    gfc_warning (0, "Assigning value other than 0 or 1 to LOGICAL"
+ 			 " has undefined result at %L", &expr->where);
+ 	  return fold_convert (gfc_get_logical_type (expr->ts.kind), tmp);
+diff --git a/gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_1.f90 b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_1.f90
+new file mode 100644
+index 00000000000..d504f92fbbc
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_1.f90
+@@ -0,0 +1,61 @@
++! { dg-do run }
++! { dg-options "-fdec -Wsurprising -Wcharacter-truncation" }
++!
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++program test
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  a = '1234'
++  b = '1234'
++  c = '12341234'
++  d = '1234'     ! { dg-warning "undefined result" }
++  e = 4h1234
++  f = 4h1234
++  g = 8h12341234
++  h = 4h1234     ! { dg-warning "undefined result" }
++  
++  if (a.ne.e) stop 1
++  if (b.ne.f) stop 2
++  if (c.ne.g) stop 3
++  if (d.neqv.h) stop 4
++
++  ! padded values
++  a = '12'
++  b = '12'
++  c = '12234'
++  d = '124'   ! { dg-warning "undefined result" }
++  e = 2h12
++  f = 2h12
++  g = 5h12234
++  h = 3h123   ! { dg-warning "undefined result" }
++
++  if (a.ne.e) stop 5
++  if (b.ne.f) stop 6
++  if (c.ne.g) stop 7
++  if (d.neqv.h) stop 8
++
++  ! truncated values
++  a = '123478'       ! { dg-warning "truncated in" }
++  b = '123478'       ! { dg-warning "truncated in" }
++  c = '12341234987'  ! { dg-warning "truncated in" }
++  d = '1234abc'      ! { dg-warning "truncated in|undefined result" }
++  e = 6h123478       ! { dg-warning "truncated in" }
++  f = 6h123478       ! { dg-warning "truncated in" }
++  g = 11h12341234987 ! { dg-warning "truncated in" }
++  h = 7h1234abc      ! { dg-warning "truncated in|undefined result" }
++
++  if (a.ne.e) stop 5
++  if (b.ne.f) stop 6
++  if (c.ne.g) stop 7
++  if (d.neqv.h) stop 8
++
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_2.f90 b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_2.f90
+new file mode 100644
+index 00000000000..737ddc664de
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_2.f90
+@@ -0,0 +1,61 @@
++! { dg-do run }
++! { dg-options "-fdec-char-conversions -std=legacy -Wcharacter-truncation -Wsurprising" }
++!
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++program test
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  a = '1234'
++  b = '1234'
++  c = '12341234'
++  d = '1234'     ! { dg-warning "undefined result" }
++  e = 4h1234
++  f = 4h1234
++  g = 8h12341234
++  h = 4h1234     ! { dg-warning "undefined result" }
++  
++  if (a.ne.e) stop 1
++  if (b.ne.f) stop 2
++  if (c.ne.g) stop 3
++  if (d.neqv.h) stop 4
++
++  ! padded values
++  a = '12'
++  b = '12'
++  c = '12234'
++  d = '124'   ! { dg-warning "undefined result" }
++  e = 2h12
++  f = 2h12
++  g = 5h12234
++  h = 3h123   ! { dg-warning "undefined result" }
++
++  if (a.ne.e) stop 5
++  if (b.ne.f) stop 6
++  if (c.ne.g) stop 7
++  if (d.neqv.h) stop 8
++
++  ! truncated values
++  a = '123478'       ! { dg-warning "truncated in" }
++  b = '123478'       ! { dg-warning "truncated in" }
++  c = '12341234987'  ! { dg-warning "truncated in" }
++  d = '1234abc'      ! { dg-warning "truncated in|undefined result" }
++  e = 6h123478       ! { dg-warning "truncated in" }
++  f = 6h123478       ! { dg-warning "truncated in" }
++  g = 11h12341234987 ! { dg-warning "truncated in" }
++  h = 7h1234abc      ! { dg-warning "truncated in|undefined result" }
++
++  if (a.ne.e) stop 5
++  if (b.ne.f) stop 6
++  if (c.ne.g) stop 7
++  if (d.neqv.h) stop 8
++
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_3.f90 b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_3.f90
+new file mode 100644
+index 00000000000..0ec494c4a92
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_assignment_3.f90
+@@ -0,0 +1,61 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-char-conversions" }
++!
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++program test
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  a = '1234'     ! { dg-error "Cannot convert" }
++  b = '1234'     ! { dg-error "Cannot convert" }
++  c = '12341234' ! { dg-error "Cannot convert" }
++  d = '1234'     ! { dg-error "Cannot convert" }
++  e = 4h1234
++  f = 4h1234
++  g = 8h12341234
++  h = 4h1234
++  
++  if (a.ne.e) stop 1
++  if (b.ne.f) stop 2
++  if (c.ne.g) stop 3
++  if (d.neqv.h) stop 4
++
++  ! padded values
++  a = '12'    ! { dg-error "Cannot convert" }
++  b = '12'    ! { dg-error "Cannot convert" }
++  c = '12234' ! { dg-error "Cannot convert" }
++  d = '124'   ! { dg-error "Cannot convert" }
++  e = 2h12
++  f = 2h12
++  g = 5h12234
++  h = 3h123
++
++  if (a.ne.e) stop 5
++  if (b.ne.f) stop 6
++  if (c.ne.g) stop 7
++  if (d.neqv.h) stop 8
++
++  ! truncated values
++  a = '123478'       ! { dg-error "Cannot convert" }
++  b = '123478'       ! { dg-error "Cannot convert" }
++  c = '12341234987'  ! { dg-error "Cannot convert" }
++  d = '1234abc'      ! { dg-error "Cannot convert" }
++  e = 6h123478       !
++  f = 6h123478       !
++  g = 11h12341234987 !
++  h = 7h1234abc      !
++
++  if (a.ne.e) stop 5
++  if (b.ne.f) stop 6
++  if (c.ne.g) stop 7
++  if (d.neqv.h) stop 8
++
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_1.f90 b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_1.f90
+new file mode 100644
+index 00000000000..c493be9314b
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_1.f90
+@@ -0,0 +1,69 @@
++! { dg-do run }
++! { dg-options "-fdec -Wsurprising" }
++!
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++
++subroutine normal
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  data a, b, c, d / '1234', '1234', '12341234', '1234' / ! { dg-warning "undefined result" }
++  data e, f, g, h / 4h1234, 4h1234, 8h12341234, 4h1234 / ! { dg-warning "undefined result" }
++  
++  if (a.ne.e) stop 1
++  if (b.ne.f) stop 2
++  if (c.ne.g) stop 3
++  if (d.neqv.h) stop 4
++end subroutine
++
++subroutine padded
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  data a, b, c, d / '12', '12', '12334', '123' / ! { dg-warning "undefined result" }
++  data e, f, g, h / 2h12, 2h12, 5h12334, 3h123 / ! { dg-warning "undefined result" }
++  
++  if (a.ne.e) stop 5
++  if (b.ne.f) stop 6
++  if (c.ne.g) stop 7
++  if (d.neqv.h) stop 8
++end subroutine
++
++subroutine truncated
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  data a, b, c, d / '123478', '123478', '1234123498', '12345' /  ! { dg-warning "too long|undefined result" }
++  data e, f, g, h / 6h123478, 6h123478, 10h1234123498, 5h12345 / ! { dg-warning "too long|undefined result" }
++  
++  if (a.ne.e) stop 9
++  if (b.ne.f) stop 10
++  if (c.ne.g) stop 11
++  if (d.neqv.h) stop 12
++end subroutine
++
++program test
++  call normal
++  call padded
++  call truncated
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_2.f90 b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_2.f90
+new file mode 100644
+index 00000000000..c7d8e241cec
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_2.f90
+@@ -0,0 +1,69 @@
++! { dg-do run }
++! { dg-options "-fdec-char-conversions -std=legacy -Wsurprising" }
++!
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++
++subroutine normal
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  data a, b, c, d / '1234', '1234', '12341234', '1234' / ! { dg-warning "undefined result" }
++  data e, f, g, h / 4h1234, 4h1234, 8h12341234, 4h1234 / ! { dg-warning "undefined result" }
++  
++  if (a.ne.e) stop 1
++  if (b.ne.f) stop 2
++  if (c.ne.g) stop 3
++  if (d.neqv.h) stop 4
++end subroutine
++
++subroutine padded
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  data a, b, c, d / '12', '12', '12334', '123' / ! { dg-warning "undefined result" }
++  data e, f, g, h / 2h12, 2h12, 5h12334, 3h123 / ! { dg-warning "undefined result" }
++  
++  if (a.ne.e) stop 5
++  if (b.ne.f) stop 6
++  if (c.ne.g) stop 7
++  if (d.neqv.h) stop 8
++end subroutine
++
++subroutine truncated
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  data a, b, c, d / '123478', '123478', '1234123498', '12345' /  ! { dg-warning "too long|undefined result" }
++  data e, f, g, h / 6h123478, 6h123478, 10h1234123498, 5h12345 / ! { dg-warning "too long|undefined result" }
++  
++  if (a.ne.e) stop 9
++  if (b.ne.f) stop 10
++  if (c.ne.g) stop 11
++  if (d.neqv.h) stop 12
++end subroutine
++
++program test
++  call normal
++  call padded
++  call truncated
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_3.f90 b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_3.f90
+new file mode 100644
+index 00000000000..e7d084b5ffc
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_char_conversion_in_data_3.f90
+@@ -0,0 +1,69 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-char-conversions" }
++!
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++
++subroutine normal
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  data a, b, c, d / '1234', '1234', '12341234', '1234' / ! { dg-error "Incompatible types" }
++  data e, f, g, h / 4h1234, 4h1234, 8h12341234, 4h1234 /
++  
++  if (a.ne.e) stop 1
++  if (b.ne.f) stop 2
++  if (c.ne.g) stop 3
++  if (d.neqv.h) stop 4
++end subroutine
++
++subroutine padded
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  data a, b, c, d / '12', '12', '12334', '123' / ! { dg-error "Incompatible types" }
++  data e, f, g, h / 2h12, 2h12, 5h12334, 3h123 /
++  
++  if (a.ne.e) stop 5
++  if (b.ne.f) stop 6
++  if (c.ne.g) stop 7
++  if (d.neqv.h) stop 8
++end subroutine
++
++subroutine truncated
++  integer(4) :: a
++  real(4) :: b
++  complex(4) :: c
++  logical(4) :: d
++  integer(4) :: e
++  real(4) :: f
++  complex(4) :: g
++  logical(4) :: h
++
++  data a, b, c, d / '123478', '123478', '1234123498', '12345' /  ! { dg-error "Incompatible types" }
++  data e, f, g, h / 6h123478, 6h123478, 10h1234123498, 5h12345 /
++  
++  if (a.ne.e) stop 9
++  if (b.ne.f) stop 10
++  if (c.ne.g) stop 11
++  if (d.neqv.h) stop 12
++end subroutine
++
++program test
++  call normal
++  call padded
++  call truncated
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/hollerith5.f90 b/gcc/testsuite/gfortran.dg/hollerith5.f90
+index ebd0a117c4f..d17f9ae40cf 100644
+--- a/gcc/testsuite/gfortran.dg/hollerith5.f90
++++ b/gcc/testsuite/gfortran.dg/hollerith5.f90
+@@ -1,8 +1,9 @@
+        ! { dg-do compile }
++       ! { dg-options "-Wsurprising" }
+        implicit none
+        logical b
+        b = 4Habcd ! { dg-warning "has undefined result" }
+        end
+ 
+-! { dg-warning "Hollerith constant" "const" { target *-*-* } 4 }
+-! { dg-warning "Conversion" "conversion" { target *-*-* } 4 }
++! { dg-warning "Hollerith constant" "const" { target *-*-* } 5 }
++! { dg-warning "Conversion" "conversion" { target *-*-* } 5 }
+diff --git a/gcc/testsuite/gfortran.dg/hollerith_legacy.f90 b/gcc/testsuite/gfortran.dg/hollerith_legacy.f90
+index c3322498345..9d7e989b552 100644
+--- a/gcc/testsuite/gfortran.dg/hollerith_legacy.f90
++++ b/gcc/testsuite/gfortran.dg/hollerith_legacy.f90
+@@ -1,5 +1,5 @@
+ ! { dg-do compile }
+-! { dg-options "-std=legacy" }
++! { dg-options "-std=legacy -Wsurprising" }
+ ! PR15966, PR18781 & PR16531
+ implicit none
+ complex(kind=8) x(2) 
+diff --git a/gcc/testsuite/gfortran.dg/no_char_to_int_assign.f90 b/gcc/testsuite/gfortran.dg/no_char_to_int_assign.f90
+new file mode 100644
+index 00000000000..ccfcc9ae512
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/no_char_to_int_assign.f90
+@@ -0,0 +1,20 @@
++! { dg-do compile }
++! { dg-options "-fdec-char-conversions" }
++!
++! Test character to int conversion in DATA types
++!
++! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++program test
++  integer a
++  real b
++  complex c
++  logical d
++  character e
++
++  e = "A"
++  a = e ! { dg-error "Cannot convert" }
++  b = e ! { dg-error "Cannot convert" }
++  c = e ! { dg-error "Cannot convert" }
++  d = e ! { dg-error "Cannot convert" }
++end program
+-- 
+2.11.0
+
diff --git a/SOURCES/0005-dec-comparisons.patch b/SOURCES/0005-dec-comparisons.patch
new file mode 100644
index 0000000..0110209
--- /dev/null
+++ b/SOURCES/0005-dec-comparisons.patch
@@ -0,0 +1,658 @@
+From 6946d3e3e6a1d839772f4c59a5ab08901111800c Mon Sep 17 00:00:00 2001
+From: Mark Eggleston <markeggleston@codethink.com>
+Date: Thu, 23 May 2019 09:42:26 +0100
+Subject: [PATCH 05/16] dec comparisons
+
+Allow comparison of Hollerith constants with numeric and character
+expressions. Also allow comparison of character literalsa with numeric
+expressions.
+
+Enable using -fdec-comparisons or -fdec
+---
+ gcc/fortran/intrinsic.c                            |  5 +-
+ gcc/fortran/invoke.texi                            | 32 +++++++++++--
+ gcc/fortran/lang.opt                               |  5 ++
+ gcc/fortran/options.c                              |  1 +
+ gcc/fortran/resolve.c                              | 53 +++++++++++++++++++++-
+ .../gfortran.dg/dec-comparison-character_1.f90     | 18 ++++++++
+ .../gfortran.dg/dec-comparison-character_2.f90     | 18 ++++++++
+ .../gfortran.dg/dec-comparison-character_3.f90     | 17 +++++++
+ .../gfortran.dg/dec-comparison-complex_1.f90       | 22 +++++++++
+ .../gfortran.dg/dec-comparison-complex_2.f90       | 22 +++++++++
+ .../gfortran.dg/dec-comparison-complex_3.f90       | 22 +++++++++
+ gcc/testsuite/gfortran.dg/dec-comparison-int_1.f90 | 31 +++++++++++++
+ gcc/testsuite/gfortran.dg/dec-comparison-int_2.f90 | 31 +++++++++++++
+ gcc/testsuite/gfortran.dg/dec-comparison-int_3.f90 | 21 +++++++++
+ .../gfortran.dg/dec-comparison-real_1.f90          | 31 +++++++++++++
+ .../gfortran.dg/dec-comparison-real_2.f90          | 31 +++++++++++++
+ .../gfortran.dg/dec-comparison-real_3.f90          | 31 +++++++++++++
+ gcc/testsuite/gfortran.dg/dec-comparison.f90       | 41 +++++++++++++++++
+ 18 files changed, 424 insertions(+), 8 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-character_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-character_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-character_3.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-complex_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-complex_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-complex_3.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-int_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-int_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-int_3.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-real_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-real_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison-real_3.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/dec-comparison.f90
+
+diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
+index e94d5d3225f..6d47ae3105f 100644
+--- a/gcc/fortran/intrinsic.c
++++ b/gcc/fortran/intrinsic.c
+@@ -4020,7 +4020,7 @@ add_conversions (void)
+ 
+   /* Flang allows character conversions similar to Hollerith conversions
+      - the first characters will be turned into ascii values. */
+-  if (flag_dec_char_conversions)
++  if (flag_dec_char_conversions || flag_dec_comparisons)
+     {
+       /* Character-Integer conversions.  */
+       for (i = 0; gfc_integer_kinds[i].kind != 0; i++)
+@@ -5150,7 +5150,8 @@ gfc_convert_type_warn (gfc_expr *expr, gfc_typespec *ts, int eflag, int wflag)
+ 			     gfc_typename (&from_ts), gfc_typename (ts),
+ 			     &expr->where);
+ 	}
+-      else if (flag_dec_char_conversions && from_ts.type == BT_CHARACTER
++      else if ((flag_dec_char_conversions || flag_dec_comparisons)
++	       && from_ts.type == BT_CHARACTER
+ 	       && (gfc_numeric_ts (ts) || ts->type == BT_LOGICAL))
+ 	{
+ 	  if (warn_conversion)
+diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
+index 8364c67b2df..d101b01e301 100644
+--- a/gcc/fortran/invoke.texi
++++ b/gcc/fortran/invoke.texi
+@@ -117,15 +117,16 @@ by type.  Explanations are in the following sections.
+ @item Fortran Language Options
+ @xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
+ @gccoptlist{-fall-intrinsics -fbackslash -fcray-pointer -fd-lines-as-code @gol
+--fd-lines-as-comments @gol
+--fdec -fdec-structure -fdec-intrinsic-ints -fdec-static -fdec-math @gol
+--fdec-include -fdefault-double-8 -fdefault-integer-8 -fdefault-real-8 @gol
+--fdefault-real-10 -fdefault-real-16 -fdollar-ok -ffixed-line-length-@var{n} @gol
++-fd-lines-as-comments -fdec -fdec-structure -fdec-intrinsic-ints @gol
++-fdec-static -fdec-math -fdec-include -fdec-format-defaults @gol
++-fdec-add-missing-indexes -fdec-blank-format-item -fdec-comparisons @gol
++-fdefault-double-8 -fdefault-integer-8 -fdefault-real-8 -fdefault-real-10 @gol
++-fdefault-real-16 -fdollar-ok -ffixed-line-length-@var{n} @gol
+ -ffixed-line-length-none -fpad-source -ffree-form -ffree-line-length-@var{n} @gol
+ -ffree-line-length-none -fimplicit-none -finteger-4-integer-8 @gol
+ -fmax-identifier-length -fmodule-private -ffixed-form -fno-range-check @gol
+ -fopenacc -fopenmp -freal-4-real-10 -freal-4-real-16 -freal-4-real-8 @gol
+--freal-8-real-10 -freal-8-real-16 -freal-8-real-4 -std=@var{std}
++-freal-8-real-10 -freal-8-real-16 -freal-8-real-4 -std=@var{std} @gol
+ -ftest-forall-temp
+ }
+ 
+@@ -283,6 +284,27 @@ Enable parsing of INCLUDE as a statement in addition to parsing it as
+ INCLUDE line.  When parsed as INCLUDE statement, INCLUDE does not have to
+ be on a single line and can use line continuations.
+ 
++@item -fdec-add-missing-indexes
++@opindex @code{fdec-add-missing-indexes}
++Enable the insertion of missing dimensions using the lower bounds of those
++dimensions.
++
++@item -fdec-format-defaults
++@opindex @code{fdec-format-defaults}
++Enable format specifiers F, G and I to be used without width specifiers,
++default widths will be used instead.
++
++@item -fdec-blank-format-item
++@opindex @code{fdec-blank-format-item}
++Enable a blank format item at the end of a format specification i.e. nothing
++following the final comma.
++
++@item -fdec-comparisons
++@opindex @code{fdec-comparisons}
++Enable comparison of Hollerith constants and character literals with numeric and
++character expressions. Also enable comparison of Hollerith constants with numeric
++expressions.
++
+ @item -fdollar-ok
+ @opindex @code{fdollar-ok}
+ @cindex @code{$}
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 5746b99b1d4..a957b90707f 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -449,6 +449,11 @@ Fortran Var(flag_dec_char_conversions)
+ Enable the use of character literals in assignments and data statements
+ for non-character variables.
+ 
++fdec-comparisons
++Fortran Var(flag_dec_comparisons)
++Enable the use of hollerith constants in comparisons. Also enables comparison
++of character literals and numeric vaiables.
++
+ fdec-include
+ Fortran Var(flag_dec_include)
+ Enable legacy parsing of INCLUDE as statement.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index e97b1568810..b652be70f3d 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -77,6 +77,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_format_defaults, value, value);
+   SET_BITFLAG (flag_dec_duplicates, value, value);
+   SET_BITFLAG (flag_dec_char_conversions, value, value);
++  SET_BITFLAG (flag_dec_comparisons, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
+index 43559185481..c8b6333874b 100644
+--- a/gcc/fortran/resolve.c
++++ b/gcc/fortran/resolve.c
+@@ -3888,6 +3888,30 @@ convert_integer_to_logical (gfc_expr *e)
+     }
+ }
+ 
++/* Return true if TYPE is character based, false otherwise.  */
++
++static int
++is_character_based (bt type)
++{
++  return type == BT_CHARACTER || type == BT_HOLLERITH;
++}
++
++
++/* If E is a hollerith, convert it to character and issue a warning
++   for the conversion.  */
++
++static void
++convert_hollerith_to_character (gfc_expr *e)
++{
++  if (e->ts.type == BT_HOLLERITH)
++    {
++      gfc_typespec t;
++      t.type = BT_CHARACTER;
++      t.kind = e->ts.kind;
++      gfc_convert_type_warn (e, &t, 2, 1);
++    }
++}
++
+ /* If E is a logical, convert it to an integer and issue a warning
+    for the conversion.  */
+ 
+@@ -3904,6 +3928,17 @@ convert_logical_to_integer (gfc_expr *e)
+     }
+ }
+ 
++/* Convert to numeric and issue a warning for the conversion.  */
++
++static void
++convert_to_numeric (gfc_expr *a, gfc_expr *b)
++{
++  gfc_typespec t;
++  t.type = b->ts.type;
++  t.kind = b->ts.kind;
++  gfc_convert_type_warn (a, &t, 2, 1);
++}
++
+ /* Resolve an operator expression node.  This can involve replacing the
+    operation with a user defined function call.  */
+ 
+@@ -4108,6 +4143,13 @@ resolve_operator (gfc_expr *e)
+ 	  convert_logical_to_integer (op2);
+ 	}
+ 
++      if (flag_dec_comparisons && is_character_based (op1->ts.type)
++          && is_character_based (op2->ts.type))
++	{
++	  convert_hollerith_to_character (op1);
++	  convert_hollerith_to_character (op2);
++	}
++
+       if (op1->ts.type == BT_CHARACTER && op2->ts.type == BT_CHARACTER
+ 	  && op1->ts.kind == op2->ts.kind)
+ 	{
+@@ -4116,6 +4158,15 @@ resolve_operator (gfc_expr *e)
+ 	  break;
+ 	}
+ 
++      if (flag_dec_comparisons && is_character_based (op1->ts.type)
++          && op1->expr_type == EXPR_CONSTANT && gfc_numeric_ts (&op2->ts))
++	convert_to_numeric (op1, op2);
++
++      if (flag_dec_comparisons && gfc_numeric_ts (&op1->ts)
++	  && is_character_based (op2->ts.type)
++	  && op2->expr_type == EXPR_CONSTANT)
++	convert_to_numeric (op2, op1);
++
+       if (gfc_numeric_ts (&op1->ts) && gfc_numeric_ts (&op2->ts))
+ 	{
+ 	  gfc_type_convert_binary (e, 1);
+@@ -10499,7 +10550,7 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns)
+ 
+   if ((gfc_numeric_ts (&lhs->ts) || lhs->ts.type == BT_LOGICAL)
+       && rhs->ts.type == BT_CHARACTER
+-      && rhs->expr_type != EXPR_CONSTANT)
++      && (rhs->expr_type != EXPR_CONSTANT || !flag_dec_char_conversions))
+     {
+       gfc_error ("Cannot convert CHARACTER into %s at %L",
+                  gfc_typename (&lhs->ts),     
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-character_1.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-character_1.f90
+new file mode 100644
+index 00000000000..d8209163a0e
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-character_1.f90
+@@ -0,0 +1,18 @@
++! { dg-do run }
++! { dg-options "-fdec -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  character(4) :: c = 4HJMAC ! { dg-warning "HOLLERITH to CHARACTER" }
++  if (4HJMAC.ne.4HJMAC) stop 1 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if (4HJMAC.ne."JMAC") stop 2 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if (4HJMAC.eq."JMAN") stop 3 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if ("JMAC".eq.4HJMAN) stop 4 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if ("AAAA".eq.5HAAAAA) stop 5 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if ("BBBBB".eq.5HBBBB ) stop 6 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if (4HJMAC.ne.c) stop 7 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if (c.ne.4HJMAC) stop 8 ! { dg-warning "HOLLERITH to CHARACTER" }
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-character_2.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-character_2.f90
+new file mode 100644
+index 00000000000..7332acbaf5c
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-character_2.f90
+@@ -0,0 +1,18 @@
++! { dg-do run }
++! { dg-options "-fdec-comparisons -std=legacy -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  character(4) :: c = 4HJMAC ! { dg-warning "HOLLERITH to CHARACTER" }
++  if (4HJMAC.ne.4HJMAC) stop 1 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if (4HJMAC.ne."JMAC") stop 2 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if (4HJMAC.eq."JMAN") stop 3 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if ("JMAC".eq.4HJMAN) stop 4 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if ("AAAA".eq.5HAAAAA) stop 5 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if ("BBBBB".eq.5HBBBB ) stop 6 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if (4HJMAC.ne.c) stop 7 ! { dg-warning "HOLLERITH to CHARACTER" }
++  if (c.ne.4HJMAC) stop 8 ! { dg-warning "HOLLERITH to CHARACTER" }
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-character_3.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-character_3.f90
+new file mode 100644
+index 00000000000..c20c012478a
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-character_3.f90
+@@ -0,0 +1,17 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-comparisons" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  character(4) :: c = 4HJMAC
++  if (4HJMAC.ne.4HJMAC) stop 1 ! { dg-error "Operands of comparison" }
++  if (4HJMAC.ne."JMAC") stop 2 ! { dg-error "Operands of comparison" }
++  if (4HJMAC.eq."JMAN") stop 3 ! { dg-error "Operands of comparison" }
++  if ("JMAC".eq.4HJMAN) stop 4 !  { dg-error "Operands of comparison" }
++  if ("AAAA".eq.5HAAAAA) stop 5 ! { dg-error "Operands of comparison" }
++  if ("BBBBB".eq.5HBBBB ) stop 6 ! { dg-error "Operands of comparison" }
++  if (4HJMAC.ne.c) stop 7 ! { dg-error "Operands of comparison" }
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-complex_1.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-complex_1.f90
+new file mode 100644
+index 00000000000..3495f2ae414
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-complex_1.f90
+@@ -0,0 +1,22 @@
++! { dg-do run }
++! { dg-options "-std=legacy -fdec -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  complex(4) :: a
++  complex(4) :: b
++  a = 8HABCDABCD ! { dg-warning "Conversion from HOLLERITH" }
++  b = transfer("ABCDABCD", b);
++  ! Hollerith constants
++  if (a.ne.8HABCDABCD) stop 1 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.eq.8HABCEABCE) stop 2 ! { dg-warning "Conversion from HOLLERITH" }
++  if (8HABCDABCD.ne.b) stop 3 ! { dg-warning "Conversion from HOLLERITH" }
++  if (8HABCEABCE.eq.b) stop 4 ! { dg-warning "Conversion from HOLLERITH" }
++  ! Character literals
++  if (a.ne."ABCDABCD") stop 5 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.eq."ABCEABCE") stop 6 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCDABCD".ne.b) stop 7 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCEABCE".eq.b) stop 8 ! { dg-warning "Conversion from CHARACTER" }
++end program
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-complex_2.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-complex_2.f90
+new file mode 100644
+index 00000000000..c38042cc600
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-complex_2.f90
+@@ -0,0 +1,22 @@
++! { dg-do run }
++! { dg-options "-std=legacy -fdec-comparisons -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  complex(4) :: a
++  complex(4) :: b
++  a = 8HABCDABCD ! { dg-warning "Conversion from HOLLERITH" }
++  b = transfer("ABCDABCD", b);
++  ! Hollerith constants
++  if (a.ne.8HABCDABCD) stop 1 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.eq.8HABCEABCE) stop 2 ! { dg-warning "Conversion from HOLLERITH" }
++  if (8HABCDABCD.ne.b) stop 3 ! { dg-warning "Conversion from HOLLERITH" }
++  if (8HABCEABCE.eq.b) stop 4 ! { dg-warning "Conversion from HOLLERITH" }
++  ! Character literals
++  if (a.ne."ABCDABCD") stop 5 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.eq."ABCEABCE") stop 6 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCDABCD".ne.b) stop 7 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCEABCE".eq.b) stop 8 ! { dg-warning "Conversion from CHARACTER" }
++end program
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-complex_3.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-complex_3.f90
+new file mode 100644
+index 00000000000..9b27fc4d502
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-complex_3.f90
+@@ -0,0 +1,22 @@
++! { dg-do compile }
++! { dg-options "-std=legacy -fdec -fno-dec-comparisons -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  complex(4) :: a
++  complex(4) :: b
++  a = 8HABCDABCD ! { dg-warning "Conversion from HOLLERITH" }
++  b = transfer("ABCDABCD", b);
++  ! Hollerith constants
++  if (a.ne.8HABCDABCD) stop 1 ! { dg-error "Operands of comparison" }
++  if (a.eq.8HABCEABCE) stop 2 ! { dg-error "Operands of comparison" }
++  if (8HABCDABCD.ne.b) stop 3 ! { dg-error "Operands of comparison" }
++  if (8HABCEABCE.eq.b) stop 4 ! { dg-error "Operands of comparison" }
++  ! character literals
++  if (a.ne."ABCDABCD") stop 5 ! { dg-error "Operands of comparison" }
++  if (a.eq."ABCEABCE") stop 6 ! { dg-error "Operands of comparison" }
++  if ("ABCDABCD".ne.b) stop 7 ! { dg-error "Operands of comparison" }
++  if ("ABCEABCE".eq.b) stop 8 ! { dg-error "Operands of comparison" }
++end program
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-int_1.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-int_1.f90
+new file mode 100644
+index 00000000000..c93b61e29cf
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-int_1.f90
+@@ -0,0 +1,31 @@
++! { dg-do run }
++! { dg-options "-std=legacy -fdec -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  integer(4) :: a
++  integer(4) :: b
++  a = 4HABCD ! { dg-warning "Conversion from HOLLERITH" }
++  b = transfer("ABCD", b)
++  ! Hollerith constants
++  if (a.ne.4HABCD) stop 1 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.eq.4HABCE) stop 2 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCD.ne.b) stop 3 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.eq.b) stop 4 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.lt.a) stop 5 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.gt.4HABCE) stop 6 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.le.a) stop 7 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.ge.4HABCE) stop 8 ! { dg-warning "Conversion from HOLLERITH" }
++  ! Character literals
++  if (a.ne."ABCD") stop 9 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.eq."ABCE") stop 10 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCD".ne.b) stop 11 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".eq.b) stop 12 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".lt.a) stop 13 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.gt."ABCE") stop 14 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".le.a) stop 15 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.ge."ABCE") stop 16 ! { dg-warning "Conversion from CHARACTER" }
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-int_2.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-int_2.f90
+new file mode 100644
+index 00000000000..cd1ae783d41
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-int_2.f90
+@@ -0,0 +1,31 @@
++! { dg-do run }
++! { dg-options "-std=legacy -fdec-comparisons -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  integer(4) :: a
++  integer(4) :: b
++  a = 4HABCD ! { dg-warning "Conversion from HOLLERITH" }
++  b = transfer("ABCD", b)
++  ! Hollerith constants
++  if (a.ne.4HABCD) stop 1 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.eq.4HABCE) stop 2 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCD.ne.b) stop 3 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.eq.b) stop 4 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.lt.a) stop 5 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.gt.4HABCE) stop 6 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.le.a) stop 7 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.ge.4HABCE) stop 8 ! { dg-warning "Conversion from HOLLERITH" }
++  ! Character literals
++  if (a.ne."ABCD") stop 9 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.eq."ABCE") stop 10 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCD".ne.b) stop 11 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".eq.b) stop 12 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".lt.a) stop 13 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.gt."ABCE") stop 14 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".le.a) stop 15 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.ge."ABCE") stop 16 ! { dg-warning "Conversion from CHARACTER" }
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-int_3.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-int_3.f90
+new file mode 100644
+index 00000000000..b350075afe7
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-int_3.f90
+@@ -0,0 +1,21 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-comparisons -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  integer(4) :: a
++  integer(4) :: b
++  a = 4HABCD ! { dg-warning "Conversion from HOLLERITH" }
++  b = transfer("ABCD", b)
++  if (a.ne.4HABCD) stop 1 ! { dg-error "Operands of comparison" }
++  if (a.eq.4HABCE) stop 2 ! { dg-error "Operands of comparison" }
++  if (4HABCD.ne.b) stop 3 ! { dg-error "Operands of comparison" }
++  if (4HABCE.eq.b) stop 4 ! { dg-error "Operands of comparison" }
++  if (4HABCE.lt.a) stop 5 ! { dg-error "Operands of comparison" }
++  if (a.gt.4HABCE) stop 6 ! { dg-error "Operands of comparison" }
++  if (4HABCE.le.a) stop 7 ! { dg-error "Operands of comparison" }
++  if (a.ge.4HABCE) stop 8 ! { dg-error "Operands of comparison" }
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-real_1.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-real_1.f90
+new file mode 100644
+index 00000000000..08b66aaebfd
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-real_1.f90
+@@ -0,0 +1,31 @@
++! { dg-do run }
++! { dg-options "-std=legacy -fdec -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  real(4) :: a
++  real(4) :: b
++  a = 4HABCD ! { dg-warning "Conversion from HOLLERITH" }
++  b = transfer("ABCD", b)
++  ! Hollerith constants
++  if (a.ne.4HABCD) stop 1 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.eq.4HABCE) stop 2 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCD.ne.b) stop 3 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.eq.b) stop 4 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.lt.a) stop 5 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.gt.4HABCE) stop 6 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.le.a) stop 7 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.ge.4HABCE) stop 8 ! { dg-warning "Conversion from HOLLERITH" }
++  ! Character literals
++  if (a.ne."ABCD") stop 9 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.eq."ABCE") stop 10 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCD".ne.b) stop 11 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".eq.b) stop 12 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".lt.a) stop 13 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.gt."ABCE") stop 14 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".le.a) stop 15 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.ge."ABCE") stop 16 ! { dg-warning "Conversion from CHARACTER" }
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-real_2.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-real_2.f90
+new file mode 100644
+index 00000000000..244abb84868
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-real_2.f90
+@@ -0,0 +1,31 @@
++! { dg-do run }
++! { dg-options "-std=legacy -fdec-comparisons -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  real(4) :: a
++  real(4) :: b
++  a = 4HABCD ! { dg-warning "Conversion from HOLLERITH" }
++  b = transfer("ABCD", b)
++  ! Hollerith constants
++  if (a.ne.4HABCD) stop 1 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.eq.4HABCE) stop 2 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCD.ne.b) stop 3 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.eq.b) stop 4 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.lt.a) stop 5 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.gt.4HABCE) stop 6 ! { dg-warning "Conversion from HOLLERITH" }
++  if (4HABCE.le.a) stop 7 ! { dg-warning "Conversion from HOLLERITH" }
++  if (a.ge.4HABCE) stop 8 ! { dg-warning "Conversion from HOLLERITH" }
++  ! Character literals
++  if (a.ne."ABCD") stop 9 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.eq."ABCE") stop 10 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCD".ne.b) stop 11 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".eq.b) stop 12 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".lt.a) stop 13 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.gt."ABCE") stop 14 ! { dg-warning "Conversion from CHARACTER" }
++  if ("ABCE".le.a) stop 15 ! { dg-warning "Conversion from CHARACTER" }
++  if (a.ge."ABCE") stop 16 ! { dg-warning "Conversion from CHARACTER" }
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison-real_3.f90 b/gcc/testsuite/gfortran.dg/dec-comparison-real_3.f90
+new file mode 100644
+index 00000000000..111c648f08c
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison-real_3.f90
+@@ -0,0 +1,31 @@
++! { dg-do compile }
++! { dg-options "-std=legacy -fdec -fno-dec-comparisons -Wconversion" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++
++program convert
++  real(4) :: a
++  real(4) :: b
++  a = 4HABCD ! { dg-warning "Conversion from HOLLERITH" }
++  b = transfer("ABCD", b)
++  ! Hollerith constants
++  if (a.ne.4HABCD) stop 1 ! { dg-error "Operands of comparison" }
++  if (a.eq.4HABCE) stop 2 ! { dg-error "Operands of comparison" }
++  if (4HABCD.ne.b) stop 3 ! { dg-error "Operands of comparison" }
++  if (4HABCE.eq.b) stop 4 ! { dg-error "Operands of comparison" }
++  if (4HABCE.lt.a) stop 5 ! { dg-error "Operands of comparison" }
++  if (a.gt.4HABCE) stop 6 ! { dg-error "Operands of comparison" }
++  if (4HABCE.le.a) stop 7 ! { dg-error "Operands of comparison" }
++  if (a.ge.4HABCE) stop 8 ! { dg-error "Operands of comparison" }
++  ! Character literals
++  if (a.ne."ABCD") stop 9 ! { dg-error "Operands of comparison" }
++  if (a.eq."ABCE") stop 10 ! { dg-error "Operands of comparison" }
++  if ("ABCD".ne.b) stop 11 ! { dg-error "Operands of comparison" }
++  if ("ABCE".eq.b) stop 12 ! { dg-error "Operands of comparison" }
++  if ("ABCE".lt.a) stop 13 ! { dg-error "Operands of comparison" }
++  if (a.gt."ABCE") stop 14 ! { dg-error "Operands of comparison" }
++  if ("ABCE".le.a) stop 15 ! { dg-error "Operands of comparison" }
++  if (a.ge."ABCE") stop 16 ! { dg-error "Operands of comparison" }
++end program
++
+diff --git a/gcc/testsuite/gfortran.dg/dec-comparison.f90 b/gcc/testsuite/gfortran.dg/dec-comparison.f90
+new file mode 100644
+index 00000000000..b0b28e55111
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec-comparison.f90
+@@ -0,0 +1,41 @@
++! { dg-do compile }
++! { dg-options "-fdec" }
++!
++! Test case contributed by Mark Eggleston  <mark.eggleston@codethink.com>
++!
++! Hollerith constants and character literals are allowed in comparisons,
++! check that character variables can not be compared with numeric variables.
++
++program convert
++  character(4) :: a = 4hJMAC
++  integer(4) :: b = "JMAC"
++  real(4) :: c = "JMAC"
++  complex(4) :: d = "JMACJMAC"
++  ! integers
++  if (a.ne.b) stop 1 ! { dg-error "Operands of comparison" }
++  if (b.eq.a) stop 2 ! { dg-error "Operands of comparison" }
++  if (a.ge.b) stop 3 ! { dg-error "Operands of comparison" }
++  if (b.ge.a) stop 4 ! { dg-error "Operands of comparison" }
++  if (a.gt.b) stop 5 ! { dg-error "Operands of comparison" }
++  if (b.gt.a) stop 6 ! { dg-error "Operands of comparison" }
++  if (a.le.b) stop 3 ! { dg-error "Operands of comparison" }
++  if (b.le.a) stop 4 ! { dg-error "Operands of comparison" }
++  if (a.lt.b) stop 5 ! { dg-error "Operands of comparison" }
++  if (b.lt.a) stop 6 ! { dg-error "Operands of comparison" }
++  ! reals
++  if (a.ne.c) stop 7 ! { dg-error "Operands of comparison" }
++  if (c.eq.a) stop 8 ! { dg-error "Operands of comparison" }
++  if (a.ge.c) stop 9 ! { dg-error "Operands of comparison" }
++  if (c.ge.a) stop 10 ! { dg-error "Operands of comparison" }
++  if (a.gt.c) stop 11 ! { dg-error "Operands of comparison" }
++  if (c.gt.a) stop 12 ! { dg-error "Operands of comparison" }
++  if (a.le.c) stop 13 ! { dg-error "Operands of comparison" }
++  if (c.le.a) stop 14 ! { dg-error "Operands of comparison" }
++  if (a.lt.c) stop 15 ! { dg-error "Operands of comparison" }
++  if (c.lt.a) stop 16 ! { dg-error "Operands of comparison" }
++  ! complexes
++  a = "JMACJMAC"
++  if (a.ne.d) stop 17 ! { dg-error "Operands of comparison" }
++  if (d.eq.a) stop 18 ! { dg-error "Operands of comparison" }
++end program
++
+-- 
+2.11.0
+
diff --git a/SOURCES/0006-Allow-blank-format-items-in-format-strings.patch b/SOURCES/0006-Allow-blank-format-items-in-format-strings.patch
new file mode 100644
index 0000000..e3ad8d0
--- /dev/null
+++ b/SOURCES/0006-Allow-blank-format-items-in-format-strings.patch
@@ -0,0 +1,150 @@
+From 8a5920d930429f91b269d9265323bf2507a6b8e5 Mon Sep 17 00:00:00 2001
+From: Jim MacArthur <jim.macarthur@codethink.co.uk>
+Date: Thu, 4 Feb 2016 16:59:41 +0000
+Subject: [PATCH 06/16] Allow blank format items in format strings
+
+This has to be written in a slightly verbose manner because GCC 7
+defaults to building with -Werror=implicit-fallthrough which prevents
+us from just falling through to the default: case.
+
+Test written by: Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
+
+Use -fdec-blank-format-item to enable. Also enabled by -fdec.
+---
+ gcc/fortran/io.c                                    | 10 ++++++++++
+ gcc/fortran/lang.opt                                |  4 ++++
+ gcc/fortran/options.c                               |  1 +
+ gcc/testsuite/gfortran.dg/dec_format_empty_item_1.f | 19 +++++++++++++++++++
+ gcc/testsuite/gfortran.dg/dec_format_empty_item_2.f | 19 +++++++++++++++++++
+ gcc/testsuite/gfortran.dg/dec_format_empty_item_3.f | 19 +++++++++++++++++++
+ 6 files changed, 72 insertions(+)
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_format_empty_item_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_format_empty_item_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_format_empty_item_3.f
+
+diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
+index 57117579627..5b355952840 100644
+--- a/gcc/fortran/io.c
++++ b/gcc/fortran/io.c
+@@ -756,6 +756,16 @@ format_item_1:
+       error = unexpected_end;
+       goto syntax;
+ 
++    case FMT_RPAREN:
++      /* Oracle allows a blank format item. */
++      if (flag_dec_blank_format_item)
++	goto finished;
++      else
++	{
++	  error = unexpected_element;
++	  goto syntax;
++	}
++
+     default:
+       error = unexpected_element;
+       goto syntax;
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index a957b90707f..3d8aaeaaf44 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -440,6 +440,10 @@ fdec
+ Fortran Var(flag_dec)
+ Enable all DEC language extensions.
+ 
++fdec-blank-format-item
++Fortran Var(flag_dec_blank_format_item)
++Enable the use of blank format items in format strings.
++
+ fdec-duplicates
+ Fortran Var(flag_dec_duplicates)
+ Allow varibles to be duplicated in the type specification matches.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index b652be70f3d..a8c2cf71c3b 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -78,6 +78,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_duplicates, value, value);
+   SET_BITFLAG (flag_dec_char_conversions, value, value);
+   SET_BITFLAG (flag_dec_comparisons, value, value);
++  SET_BITFLAG (flag_dec_blank_format_item, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/testsuite/gfortran.dg/dec_format_empty_item_1.f b/gcc/testsuite/gfortran.dg/dec_format_empty_item_1.f
+new file mode 100644
+index 00000000000..ed27c18944b
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_format_empty_item_1.f
+@@ -0,0 +1,19 @@
++! { dg-do run }
++! { dg-options "-fdec" }
++!
++! Test blank/empty format items in format string
++!
++! Test case contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM blank_format_items
++          INTEGER A/0/
++
++          OPEN(1, status="scratch")
++          WRITE(1, 10) 100
++          REWIND(1)
++          READ(1, 10) A
++          IF (a.NE.100) STOP 1
++          PRINT 10, A
++10        FORMAT( I5,)
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_format_empty_item_2.f b/gcc/testsuite/gfortran.dg/dec_format_empty_item_2.f
+new file mode 100644
+index 00000000000..2793cb16225
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_format_empty_item_2.f
+@@ -0,0 +1,19 @@
++! { dg-do run }
++! { dg-options "-fdec-blank-format-item" }
++!
++! Test blank/empty format items in format string
++!
++! Test case contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM blank_format_items
++          INTEGER A/0/
++
++          OPEN(1, status="scratch")
++          WRITE(1, 10) 100
++          REWIND(1)
++          READ(1, 10) A
++          IF (a.NE.100) STOP 1
++          PRINT 10, A
++10        FORMAT( I5,)
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_format_empty_item_3.f b/gcc/testsuite/gfortran.dg/dec_format_empty_item_3.f
+new file mode 100644
+index 00000000000..499db922876
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_format_empty_item_3.f
+@@ -0,0 +1,19 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-blank-format-item" }
++!
++! Test blank/empty format items in format string
++!
++! Test case contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM blank_format_items
++          INTEGER A/0/
++
++          OPEN(1, status="scratch")
++          WRITE(1, 10) 100 ! { dg-error "FORMAT label 10 at \\(1\\) not defined" }
++          REWIND(1)
++          READ(1, 10) A ! { dg-error "FORMAT label 10 at \\(1\\) not defined" }
++          IF (a.NE.100) STOP 1
++          PRINT 10, A ! { dg-error "FORMAT label 10 at \\(1\\) not defined" }
++10        FORMAT( I5,) ! { dg-error "Unexpected element" }
++        END
+-- 
+2.11.0
+
diff --git a/SOURCES/0007-Allow-more-than-one-character-as-argument-to-ICHAR.patch b/SOURCES/0007-Allow-more-than-one-character-as-argument-to-ICHAR.patch
new file mode 100644
index 0000000..a70ca2b
--- /dev/null
+++ b/SOURCES/0007-Allow-more-than-one-character-as-argument-to-ICHAR.patch
@@ -0,0 +1,78 @@
+From d15e5e207e2a6b46edee2f2b5d3e4c1cc7cdb80f Mon Sep 17 00:00:00 2001
+From: Jim MacArthur <jim.macarthur@codethink.co.uk>
+Date: Mon, 5 Oct 2015 13:45:15 +0100
+Subject: [PATCH 07/16] Allow more than one character as argument to ICHAR
+
+Use -fdec to enable..
+---
+ gcc/fortran/check.c                                 |  2 +-
+ gcc/fortran/simplify.c                              |  4 ++--
+ gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f | 21 +++++++++++++++++++++
+ 3 files changed, 24 insertions(+), 3 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f
+
+diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
+index a04f0d66655..0ba4d0a031f 100644
+--- a/gcc/fortran/check.c
++++ b/gcc/fortran/check.c
+@@ -2603,7 +2603,7 @@ gfc_check_ichar_iachar (gfc_expr *c, gfc_expr *kind)
+   else
+     return true;
+ 
+-  if (i != 1)
++  if (i != 1 && !flag_dec)
+     {
+       gfc_error ("Argument of %s at %L must be of length one",
+ 		 gfc_current_intrinsic, &c->where);
+diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
+index 7d7e3f22f73..7aff256c6b3 100644
+--- a/gcc/fortran/simplify.c
++++ b/gcc/fortran/simplify.c
+@@ -3229,7 +3229,7 @@ gfc_simplify_iachar (gfc_expr *e, gfc_expr *kind)
+   if (e->expr_type != EXPR_CONSTANT)
+     return NULL;
+ 
+-  if (e->value.character.length != 1)
++  if (e->value.character.length != 1 && !flag_dec)
+     {
+       gfc_error ("Argument of IACHAR at %L must be of length one", &e->where);
+       return &gfc_bad_expr;
+@@ -3427,7 +3427,7 @@ gfc_simplify_ichar (gfc_expr *e, gfc_expr *kind)
+   if (e->expr_type != EXPR_CONSTANT)
+     return NULL;
+ 
+-  if (e->value.character.length != 1)
++  if (e->value.character.length != 1 && !flag_dec)
+     {
+       gfc_error ("Argument of ICHAR at %L must be of length one", &e->where);
+       return &gfc_bad_expr;
+diff --git a/gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f b/gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f
+new file mode 100644
+index 00000000000..85efccecc0f
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_ichar_with_string_1.f
+@@ -0,0 +1,21 @@
++! { dg-do run }
++! { dg-options "-fdec" }
++!
++! Test ICHAR and IACHAR with more than one character as argument
++!
++! Test case contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM ichar_more_than_one_character
++          CHARACTER*4 st/'Test'/
++          INTEGER i
++
++          i = ICHAR(st)
++          if (i.NE.84) STOP 1
++          i = IACHAR(st)
++          if (i.NE.84) STOP 2
++          i = ICHAR('Test')
++          if (i.NE.84) STOP 3
++          i = IACHAR('Test')
++          if (i.NE.84) STOP 4
++        END
+-- 
+2.11.0
+
diff --git a/SOURCES/0008-Allow-non-integer-substring-indexes.patch b/SOURCES/0008-Allow-non-integer-substring-indexes.patch
new file mode 100644
index 0000000..b165df8
--- /dev/null
+++ b/SOURCES/0008-Allow-non-integer-substring-indexes.patch
@@ -0,0 +1,158 @@
+From 96563a652406d3c8471d75e6527ba634fa013400 Mon Sep 17 00:00:00 2001
+From: Jim MacArthur <jim.macarthur@codethink.co.uk>
+Date: Mon, 5 Oct 2015 14:05:03 +0100
+Subject: [PATCH 08/16] Allow non-integer substring indexes
+
+Use -fdec-non-integer-index compiler flag to enable. Also enabled by -fdec.
+---
+ gcc/fortran/lang.opt                                 |  4 ++++
+ gcc/fortran/options.c                                |  1 +
+ gcc/fortran/resolve.c                                | 20 ++++++++++++++++++++
+ .../dec_not_integer_substring_indexes_1.f            | 18 ++++++++++++++++++
+ .../dec_not_integer_substring_indexes_2.f            | 18 ++++++++++++++++++
+ .../dec_not_integer_substring_indexes_3.f            | 18 ++++++++++++++++++
+ 6 files changed, 79 insertions(+)
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f
+
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 3d8aaeaaf44..772cf5e81f1 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -474,6 +474,10 @@ fdec-math
+ Fortran Var(flag_dec_math)
+ Enable legacy math intrinsics for compatibility.
+ 
++fdec-non-integer-index
++Fortran Var(flag_dec_non_integer_index)
++Enable support for non-integer substring indexes.
++
+ fdec-structure
+ Fortran Var(flag_dec_structure)
+ Enable support for DEC STRUCTURE/RECORD.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index a8c2cf71c3b..e0ef03e6cc5 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -79,6 +79,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_char_conversions, value, value);
+   SET_BITFLAG (flag_dec_comparisons, value, value);
+   SET_BITFLAG (flag_dec_blank_format_item, value, value);
++  SET_BITFLAG (flag_dec_non_integer_index, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
+index c8b6333874b..04679d3a15d 100644
+--- a/gcc/fortran/resolve.c
++++ b/gcc/fortran/resolve.c
+@@ -4992,6 +4992,16 @@ resolve_substring (gfc_ref *ref, bool *equal_length)
+       if (!gfc_resolve_expr (ref->u.ss.start))
+ 	return false;
+ 
++      /* In legacy mode, allow non-integer string indexes by converting */
++      if (flag_dec_non_integer_index && ref->u.ss.start->ts.type != BT_INTEGER
++	  && gfc_numeric_ts (&ref->u.ss.start->ts))
++	{
++	  gfc_typespec t;
++	  t.type = BT_INTEGER;
++	  t.kind = ref->u.ss.start->ts.kind;
++	  gfc_convert_type_warn (ref->u.ss.start, &t, 2, 1);
++	}
++
+       if (ref->u.ss.start->ts.type != BT_INTEGER)
+ 	{
+ 	  gfc_error ("Substring start index at %L must be of type INTEGER",
+@@ -5021,6 +5031,16 @@ resolve_substring (gfc_ref *ref, bool *equal_length)
+       if (!gfc_resolve_expr (ref->u.ss.end))
+ 	return false;
+ 
++      /* Non-integer string index endings, as for start */
++      if (flag_dec_non_integer_index && ref->u.ss.end->ts.type != BT_INTEGER
++	  && gfc_numeric_ts (&ref->u.ss.end->ts))
++	{
++	  gfc_typespec t;
++	  t.type = BT_INTEGER;
++	  t.kind = ref->u.ss.end->ts.kind;
++	  gfc_convert_type_warn (ref->u.ss.end, &t, 2, 1);
++	}
++
+       if (ref->u.ss.end->ts.type != BT_INTEGER)
+ 	{
+ 	  gfc_error ("Substring end index at %L must be of type INTEGER",
+diff --git a/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f
+new file mode 100644
+index 00000000000..0be28abaa4b
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_1.f
+@@ -0,0 +1,18 @@
++! { dg-do run }
++! { dg-options "-fdec" }
++!
++! Test not integer substring indexes
++!
++! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM not_integer_substring_indexes
++          CHARACTER*5 st/'Tests'/
++          REAL ir/1.0/
++          REAL ir2/4.0/
++
++          if (st(ir:4).ne.'Test') stop 1
++          if (st(1:ir2).ne.'Test') stop 2
++          if (st(1.0:4).ne.'Test') stop 3
++          if (st(1:4.0).ne.'Test') stop 4
++          if (st(2.5:4).ne.'est') stop 5
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f
+new file mode 100644
+index 00000000000..3cf05296d0c
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_2.f
+@@ -0,0 +1,18 @@
++! { dg-do run }
++! { dg-options "-fdec-non-integer-index" }
++!
++! Test not integer substring indexes
++!
++! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM not_integer_substring_indexes
++          CHARACTER*5 st/'Tests'/
++          REAL ir/1.0/
++          REAL ir2/4.0/
++
++          if (st(ir:4).ne.'Test') stop 1
++          if (st(1:ir2).ne.'Test') stop 2
++          if (st(1.0:4).ne.'Test') stop 3
++          if (st(1:4.0).ne.'Test') stop 4
++          if (st(2.5:4).ne.'est') stop 5
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f
+new file mode 100644
+index 00000000000..703de995897
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_not_integer_substring_indexes_3.f
+@@ -0,0 +1,18 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-non-integer-index" }
++!
++! Test not integer substring indexes
++!
++! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM not_integer_substring_indexes
++          CHARACTER*5 st/'Tests'/
++          REAL ir/1.0/
++          REAL ir2/4.0/
++
++          if (st(ir:4).ne.'Test') stop 1 ! { dg-error "Substring start index" }
++          if (st(1:ir2).ne.'Test') stop 2 ! { dg-error "Substring end index" }
++          if (st(1.0:4).ne.'Test') stop 3 ! { dg-error "Substring start index" }
++          if (st(1:4.0).ne.'Test') stop 4 ! { dg-error "Substring end index" }
++          if (st(2.5:4).ne.'est') stop 5 ! { dg-error "Substring start index" }
++        END
+-- 
+2.11.0
+
diff --git a/SOURCES/0009-Allow-old-style-initializers-in-derived-types.patch b/SOURCES/0009-Allow-old-style-initializers-in-derived-types.patch
new file mode 100644
index 0000000..d9a3a9e
--- /dev/null
+++ b/SOURCES/0009-Allow-old-style-initializers-in-derived-types.patch
@@ -0,0 +1,185 @@
+From 772fea9acdac79164f3496f54ef4f63dd2562a0c Mon Sep 17 00:00:00 2001
+From: Jim MacArthur <jim.macarthur@codethink.co.uk>
+Date: Thu, 4 Feb 2016 16:00:30 +0000
+Subject: [PATCH 09/16] Allow old-style initializers in derived types
+
+This allows simple declarations in derived types and structures, such as:
+    LOGICAL*1      NIL      /0/
+Only single value expressions are allowed at the moment.
+
+Use -fdec-old-init to enable. Also enabled by -fdec.
+---
+ gcc/fortran/decl.c                                 | 27 ++++++++++++++++++----
+ gcc/fortran/lang.opt                               |  4 ++++
+ gcc/fortran/options.c                              |  1 +
+ .../dec_derived_types_initialised_old_style_1.f    | 25 ++++++++++++++++++++
+ .../dec_derived_types_initialised_old_style_2.f    | 25 ++++++++++++++++++++
+ .../dec_derived_types_initialised_old_style_3.f    | 26 +++++++++++++++++++++
+ 6 files changed, 103 insertions(+), 5 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f
+
+diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
+index 66f1094aa3d..cdf161a7efa 100644
+--- a/gcc/fortran/decl.c
++++ b/gcc/fortran/decl.c
+@@ -2739,12 +2739,29 @@ variable_decl (int elem)
+          but not components of derived types.  */
+       else if (gfc_current_state () == COMP_DERIVED)
+ 	{
+-	  gfc_error ("Invalid old style initialization for derived type "
+-		     "component at %C");
+-	  m = MATCH_ERROR;
+-	  goto cleanup;
++	  if (flag_dec_old_init)
++	    {
++	      /* Attempt to match an old-style initializer which is a simple
++		 integer or character expression; this will not work with
++		 multiple values. */
++	      m = gfc_match_init_expr (&initializer);
++	      if (m == MATCH_ERROR)
++		goto cleanup;
++	      else if (m == MATCH_YES)
++		{
++		  m = gfc_match ("/");
++		  if (m != MATCH_YES)
++		    goto cleanup;
++		}
++	    }
++	  else
++	    {
++	      gfc_error ("Invalid old style initialization for derived type "
++			 "component at %C");
++	      m = MATCH_ERROR;
++	      goto cleanup;
++	    }
+ 	}
+-
+       /* For structure components, read the initializer as a special
+          expression and let the rest of this function apply the initializer
+          as usual.  */
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 772cf5e81f1..610d91b6cfd 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -478,6 +478,10 @@ fdec-non-integer-index
+ Fortran Var(flag_dec_non_integer_index)
+ Enable support for non-integer substring indexes.
+ 
++fdec-old-init
++Fortran Var(flag_dec_old_init)
++Enable support for old style initializers in derived types.
++
+ fdec-structure
+ Fortran Var(flag_dec_structure)
+ Enable support for DEC STRUCTURE/RECORD.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index e0ef03e6cc5..0aa16825980 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -80,6 +80,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_comparisons, value, value);
+   SET_BITFLAG (flag_dec_blank_format_item, value, value);
+   SET_BITFLAG (flag_dec_non_integer_index, value, value);
++  SET_BITFLAG (flag_dec_old_init, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f
+new file mode 100644
+index 00000000000..eac4f9bfcf1
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_1.f
+@@ -0,0 +1,25 @@
++! { dg-do run }
++! { dg-options "-fdec" }
++!
++! Test old style initializers in derived types
++!
++! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM spec_in_var
++          TYPE STRUCT1
++            INTEGER*4      ID       /8/
++            INTEGER*4      TYPE     /5/
++            INTEGER*8      DEFVAL   /0/
++            CHARACTER*(5)  NAME     /'tests'/
++            LOGICAL*1      NIL      /0/
++          END TYPE STRUCT1
++
++          TYPE (STRUCT1) SINST
++
++          IF(SINST%ID.NE.8) STOP 1
++          IF(SINST%TYPE.NE.5) STOP 2
++          IF(SINST%DEFVAL.NE.0) STOP 3
++          IF(SINST%NAME.NE.'tests') STOP 4
++          IF(SINST%NIL) STOP 5
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f
+new file mode 100644
+index 00000000000..d904c8b2974
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_2.f
+@@ -0,0 +1,25 @@
++! { dg-do run }
++! { dg-options "-std=legacy -fdec-old-init" }
++!
++! Test old style initializers in derived types
++!
++! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM spec_in_var
++          TYPE STRUCT1
++            INTEGER*4      ID       /8/
++            INTEGER*4      TYPE     /5/
++            INTEGER*8      DEFVAL   /0/
++            CHARACTER*(5)  NAME     /'tests'/
++            LOGICAL*1      NIL      /0/
++          END TYPE STRUCT1
++
++          TYPE (STRUCT1) SINST
++
++          IF(SINST%ID.NE.8) STOP 1
++          IF(SINST%TYPE.NE.5) STOP 2
++          IF(SINST%DEFVAL.NE.0) STOP 3
++          IF(SINST%NAME.NE.'tests') STOP 4
++          IF(SINST%NIL) STOP 5
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f
+new file mode 100644
+index 00000000000..58c2b4b66cf
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_derived_types_initialised_old_style_3.f
+@@ -0,0 +1,26 @@
++! { dg-do compile }
++! { dg-options "-std=legacy -fdec -fno-dec-old-init" }
++!
++! Test old style initializers in derived types
++!
++! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++
++        PROGRAM spec_in_var
++          TYPE STRUCT1
++            INTEGER*4      ID       /8/ ! { dg-error "Invalid old style initialization" }
++            INTEGER*4      TYPE     /5/ ! { dg-error "Invalid old style initialization" }
++            INTEGER*8      DEFVAL   /0/ ! { dg-error "Invalid old style initialization" }
++            CHARACTER*(5)  NAME     /'tests'/ ! { dg-error "Invalid old style initialization" }
++            LOGICAL*1      NIL      /0/ ! { dg-error "Invalid old style initialization" }
++          END TYPE STRUCT1
++
++          TYPE (STRUCT1) SINST
++
++          IF(SINST%ID.NE.8) STOP 1 ! { dg-error "'id' at \\(1\\) is not a member" }
++          IF(SINST%TYPE.NE.5) STOP 2 ! { dg-error "'type' at \\(1\\) is not a member" }
++          IF(SINST%DEFVAL.NE.0) STOP 3  ! { dg-error "'defval' at \\(1\\) is not a member" }
++          IF(SINST%NAME.NE.'tests') STOP 4 ! { dg-error "'name' at \\(1\\) is not a member" }
++          IF(SINST%NIL) STOP 5 ! { dg-error "'nil' at \\(1\\) is not a member" }
++        END
+-- 
+2.11.0
+
diff --git a/SOURCES/0010-Allow-string-length-and-kind-to-be-specified-on-a-pe.patch b/SOURCES/0010-Allow-string-length-and-kind-to-be-specified-on-a-pe.patch
new file mode 100644
index 0000000..e4bde41
--- /dev/null
+++ b/SOURCES/0010-Allow-string-length-and-kind-to-be-specified-on-a-pe.patch
@@ -0,0 +1,587 @@
+From 08e63b85674f146b5f242906d7d5f063b2abd31c Mon Sep 17 00:00:00 2001
+From: Jim MacArthur <jim.macarthur@codethink.co.uk>
+Date: Wed, 7 Oct 2015 17:04:06 -0400
+Subject: [PATCH 10/16] Allow string length and kind to be specified on a per
+ variable basis.
+
+This allows kind/length to be mixed with array specification in
+declarations.
+
+e.g.
+
+      INTEGER*4 x*2, y*8
+      CHARACTER names*20(10)
+      REAL v(100)*8, vv*4(50)
+
+The per-variable size overrides the kind or length specified for the type.
+
+Use -fdec-override-kind to enable. Also enabled by -fdec.
+
+Note: this feature is a merger of two previously separate features.
+
+Now accepts named constants as kind parameters:
+
+      INTEGER A
+      PARAMETER (A=2)
+      INTEGER B*(A)
+
+Contributed by Mark Eggleston <mark.eggleston@codethink.com>
+
+Now rejects invalid kind parameters and prints error messages:
+
+      INTEGER X*3
+
+caused an internal compiler error.
+
+Contributed by Mark Eggleston <mark.eggleston@codethink.com>
+---
+ gcc/fortran/decl.c                                 | 156 ++++++++++++++++-----
+ gcc/fortran/lang.opt                               |   4 +
+ gcc/fortran/options.c                              |   1 +
+ .../dec_mixed_char_array_declaration_1.f           |  13 ++
+ .../dec_mixed_char_array_declaration_2.f           |  13 ++
+ .../dec_mixed_char_array_declaration_3.f           |  13 ++
+ gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f |  31 ++++
+ gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f |  31 ++++
+ gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f |  31 ++++
+ gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f |  14 ++
+ gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f |  19 +++
+ gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f |  19 +++
+ gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f |  15 ++
+ gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f |  14 ++
+ 14 files changed, 340 insertions(+), 34 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f
+
+diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
+index cdf161a7efa..eb26bf3bc2d 100644
+--- a/gcc/fortran/decl.c
++++ b/gcc/fortran/decl.c
+@@ -1153,6 +1153,54 @@ syntax:
+   return MATCH_ERROR;
+ }
+ 
++/* This matches the nonstandard kind given after a variable name, like:
++   INTEGER x*2, y*4
++   The per-variable kind will override any kind given in the type
++   declaration.
++*/
++
++static match
++match_per_symbol_kind (int *length)
++{
++  match m;
++  gfc_expr *expr = NULL;
++
++  m = gfc_match_char ('*');
++  if (m != MATCH_YES)
++    return m;
++
++  m = gfc_match_small_literal_int (length, NULL);
++  if (m == MATCH_YES || m == MATCH_ERROR)
++    return m;
++
++  if (gfc_match_char ('(') == MATCH_NO)
++    return MATCH_ERROR;
++
++  m = gfc_match_expr (&expr);
++  if (m == MATCH_YES)
++    {
++      m = MATCH_ERROR; // Assume error
++      if (gfc_expr_check_typed (expr, gfc_current_ns, false))
++	{
++	  if ((expr->expr_type == EXPR_CONSTANT)
++	      && (expr->ts.type == BT_INTEGER))
++	    {
++	      *length = mpz_get_si(expr->value.integer);
++	      m = MATCH_YES;
++	    }
++	}
++
++	if (m == MATCH_YES)
++	  {
++	    if (gfc_match_char (')') == MATCH_NO)
++	       m = MATCH_ERROR;
++  }
++     }
++
++  if (expr != NULL)
++     gfc_free_expr (expr);
++  return m;
++}
+ 
+ /* Special subroutine for finding a symbol.  Check if the name is found
+    in the current name space.  If not, and we're compiling a function or
+@@ -2390,6 +2438,35 @@ check_function_name (char *name)
+ }
+ 
+ 
++static match
++match_character_length_clause (gfc_charlen **cl, bool *cl_deferred, int elem)
++{
++  gfc_expr* char_len;
++  char_len = NULL;
++
++  match m = match_char_length (&char_len, cl_deferred, false);
++  if (m == MATCH_YES)
++    {
++      *cl = gfc_new_charlen (gfc_current_ns, NULL);
++      (*cl)->length = char_len;
++    }
++  else if (m == MATCH_NO)
++    {
++      if (elem > 1
++	  && (current_ts.u.cl->length == NULL
++	      || current_ts.u.cl->length->expr_type != EXPR_CONSTANT))
++	{
++	  *cl = gfc_new_charlen (gfc_current_ns, NULL);
++	  (*cl)->length = gfc_copy_expr (current_ts.u.cl->length);
++	}
++      else
++      *cl = current_ts.u.cl;
++
++      *cl_deferred = current_ts.deferred;
++    }
++  return m;
++}
++
+ /* Match a variable name with an optional initializer.  When this
+    subroutine is called, a variable is expected to be parsed next.
+    Depending on what is happening at the moment, updates either the
+@@ -2400,7 +2477,7 @@ variable_decl (int elem)
+ {
+   char name[GFC_MAX_SYMBOL_LEN + 1];
+   static unsigned int fill_id = 0;
+-  gfc_expr *initializer, *char_len;
++  gfc_expr *initializer;
+   gfc_array_spec *as;
+   gfc_array_spec *cp_as; /* Extra copy for Cray Pointees.  */
+   gfc_charlen *cl;
+@@ -2409,10 +2486,14 @@ variable_decl (int elem)
+   match m;
+   bool t;
+   gfc_symbol *sym;
++  match cl_match;
++  match kind_match;
++  int overridden_kind;
+ 
+   initializer = NULL;
+   as = NULL;
+   cp_as = NULL;
++  kind_match = MATCH_NO;
+ 
+   /* When we get here, we've just matched a list of attributes and
+      maybe a type and a double colon.  The next thing we expect to see
+@@ -2461,6 +2542,28 @@ variable_decl (int elem)
+ 
+   var_locus = gfc_current_locus;
+ 
++
++  cl = NULL;
++  cl_deferred = false;
++  cl_match = MATCH_NO;
++
++  /* Check for a character length clause before an array clause */
++  if (flag_dec_override_kind)
++    {
++      if (current_ts.type == BT_CHARACTER)
++	{
++	  cl_match = match_character_length_clause (&cl, &cl_deferred, elem);
++	  if (cl_match == MATCH_ERROR)
++	    goto cleanup;
++	}
++      else
++	{
++	  kind_match = match_per_symbol_kind (&overridden_kind);
++	  if (kind_match == MATCH_ERROR)
++	    goto cleanup;
++	}
++    }
++
+   /* Now we could see the optional array spec. or character length.  */
+   m = gfc_match_array_spec (&as, true, true);
+   if (m == MATCH_ERROR)
+@@ -2579,40 +2682,12 @@ variable_decl (int elem)
+ 	}
+     }
+ 
+-  char_len = NULL;
+-  cl = NULL;
+-  cl_deferred = false;
+-
+-  if (current_ts.type == BT_CHARACTER)
++  /* Second chance for a character length clause */
++  if (cl_match == MATCH_NO && current_ts.type == BT_CHARACTER)
+     {
+-      switch (match_char_length (&char_len, &cl_deferred, false))
+-	{
+-	case MATCH_YES:
+-	  cl = gfc_new_charlen (gfc_current_ns, NULL);
+-
+-	  cl->length = char_len;
+-	  break;
+-
+-	/* Non-constant lengths need to be copied after the first
+-	   element.  Also copy assumed lengths.  */
+-	case MATCH_NO:
+-	  if (elem > 1
+-	      && (current_ts.u.cl->length == NULL
+-		  || current_ts.u.cl->length->expr_type != EXPR_CONSTANT))
+-	    {
+-	      cl = gfc_new_charlen (gfc_current_ns, NULL);
+-	      cl->length = gfc_copy_expr (current_ts.u.cl->length);
+-	    }
+-	  else
+-	    cl = current_ts.u.cl;
+-
+-	  cl_deferred = current_ts.deferred;
+-
+-	  break;
+-
+-	case MATCH_ERROR:
+-	  goto cleanup;
+-	}
++      m = match_character_length_clause (&cl, &cl_deferred, elem);
++      if (m == MATCH_ERROR)
++	goto cleanup;
+     }
+ 
+   /* The dummy arguments and result of the abreviated form of MODULE
+@@ -2714,6 +2789,19 @@ variable_decl (int elem)
+       goto cleanup;
+     }
+ 
++  if (kind_match == MATCH_YES)
++    {
++      gfc_find_symbol (name, gfc_current_ns, 1, &sym);
++      /* sym *must* be found at this point */
++      sym->ts.kind = overridden_kind;
++      if (gfc_validate_kind (sym->ts.type, sym->ts.kind, true) < 0)
++	{
++	  gfc_error ("Kind %d not supported for type %s at %C",
++		     sym->ts.kind, gfc_basic_typename (sym->ts.type));
++	  return MATCH_ERROR;
++	}
++    }
++
+   if (!check_function_name (name))
+     {
+       m = MATCH_ERROR;
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 610d91b6cfd..38d31e620bf 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -478,6 +478,10 @@ fdec-non-integer-index
+ Fortran Var(flag_dec_non_integer_index)
+ Enable support for non-integer substring indexes.
+ 
++fdec-override-kind
++Fortran Var(flag_dec_override_kind)
++Enable support for per variable kind specification.
++
+ fdec-old-init
+ Fortran Var(flag_dec_old_init)
+ Enable support for old style initializers in derived types.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index 0aa16825980..720fd25b570 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -81,6 +81,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_blank_format_item, value, value);
+   SET_BITFLAG (flag_dec_non_integer_index, value, value);
+   SET_BITFLAG (flag_dec_old_init, value, value);
++  SET_BITFLAG (flag_dec_override_kind, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f
+new file mode 100644
+index 00000000000..706ea4112a4
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f
+@@ -0,0 +1,13 @@
++! { dg-do run }
++! { dg-options "-fdec" }
++!
++! Test character declaration with mixed string length and array specification
++!
++! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++       PROGRAM character_declaration
++          CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/
++          CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/
++          if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f
+new file mode 100644
+index 00000000000..26d2acf01de
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f
+@@ -0,0 +1,13 @@
++! { dg-do run }
++! { dg-options "-fdec-override-kind" }
++!
++! Test character declaration with mixed string length and array specification
++!
++! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM character_declaration
++          CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/
++          CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/
++          if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f
+new file mode 100644
+index 00000000000..76e4f0bdb93
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f
+@@ -0,0 +1,13 @@
++! { dg-do compile }
++! { dg-options "-fdec-override-kind -fno-dec-override-kind" }
++!
++! Test character declaration with mixed string length and array specification
++!
++! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM character_declaration
++          CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ ! { dg-error "Syntax error" }
++          CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/
++          if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 ! { dg-error " Operands of comparison operator" }
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f
+new file mode 100644
+index 00000000000..edd0f5874b7
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f
+@@ -0,0 +1,31 @@
++! { dg-do run }
++! { dg-options "-fdec" }
++!
++! Test kind specification in variable not in type
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        program spec_in_var
++          integer*8  ai*1, bi*4, ci
++          real*4 ar*4, br*8, cr
++
++          ai = 1
++          ar = 1.0
++          bi = 2
++          br = 2.0
++          ci = 3
++          cr = 3.0
++
++          if (ai .ne. 1) stop 1
++          if (abs(ar - 1.0) > 1.0D-6) stop 2
++          if (bi .ne. 2) stop 3
++          if (abs(br - 2.0) > 1.0D-6) stop 4
++          if (ci .ne. 3) stop 5
++          if (abs(cr - 3.0) > 1.0D-6) stop 6
++          if (kind(ai) .ne. 1) stop 7
++          if (kind(ar) .ne. 4) stop 8
++          if (kind(bi) .ne. 4) stop 9
++          if (kind(br) .ne. 8) stop 10
++          if (kind(ci) .ne. 8) stop 11
++          if (kind(cr) .ne. 4) stop 12
++        end
+diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f
+new file mode 100644
+index 00000000000..bfaba584dbb
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f
+@@ -0,0 +1,31 @@
++! { dg-do run }
++! { dg-options "-fdec-override-kind" }
++!
++! Test kind specification in variable not in type
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        program spec_in_var
++          integer*8  ai*1, bi*4, ci
++          real*4 ar*4, br*8, cr
++
++          ai = 1
++          ar = 1.0
++          bi = 2
++          br = 2.0
++          ci = 3
++          cr = 3.0
++
++          if (ai .ne. 1) stop 1
++          if (abs(ar - 1.0) > 1.0D-6) stop 2
++          if (bi .ne. 2) stop 3
++          if (abs(br - 2.0) > 1.0D-6) stop 4
++          if (ci .ne. 3) stop 5
++          if (abs(cr - 3.0) > 1.0D-6) stop 6
++          if (kind(ai) .ne. 1) stop 7
++          if (kind(ar) .ne. 4) stop 8
++          if (kind(bi) .ne. 4) stop 9
++          if (kind(br) .ne. 8) stop 10
++          if (kind(ci) .ne. 8) stop 11
++          if (kind(cr) .ne. 4) stop 12
++        end
+diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f
+new file mode 100644
+index 00000000000..5ff434e7466
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f
+@@ -0,0 +1,31 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-override-kind" }
++!
++! Test kind specification in variable not in type
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        program spec_in_var
++          integer*8  ai*1, bi*4, ci ! { dg-error "Syntax error" }
++          real*4 ar*4, br*8, cr ! { dg-error "Syntax error" }
++
++          ai = 1
++          ar = 1.0
++          bi = 2
++          br = 2.0
++          ci = 3
++          cr = 3.0
++
++          if (ai .ne. 1) stop 1
++          if (abs(ar - 1.0) > 1.0D-6) stop 2
++          if (bi .ne. 2) stop 3
++          if (abs(br - 2.0) > 1.0D-6) stop 4
++          if (ci .ne. 3) stop 5
++          if (abs(cr - 3.0) > 1.0D-6) stop 6
++          if (kind(ai) .ne. 1) stop 7
++          if (kind(ar) .ne. 4) stop 8
++          if (kind(bi) .ne. 4) stop 9
++          if (kind(br) .ne. 8) stop 10
++          if (kind(ci) .ne. 8) stop 11
++          if (kind(cr) .ne. 4) stop 12
++        end
+diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f
+new file mode 100644
+index 00000000000..c01980e8b9d
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f
+@@ -0,0 +1,14 @@
++! { dg-do compile }
++!
++! Test kind specification in variable not in type. The per variable
++! kind specification is not enabled so these should fail
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        program spec_in_var
++          integer a
++          parameter(a=2)
++          integer b*(a) ! { dg-error "Syntax error" }
++          real c*(8)    ! { dg-error "Syntax error" }
++          logical d*1_1 ! { dg-error "Syntax error" }
++        end
+diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f
+new file mode 100644
+index 00000000000..e2f39da3f4f
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f
+@@ -0,0 +1,19 @@
++! { dg-do run }
++! { dg-options "-fdec-override-kind" }
++!
++! Test kind specification in variable not in type
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        program spec_in_var
++          integer a
++          parameter(a=2)
++          integer b*(a)
++          real c*(8)
++          logical d*(1_1)
++          character e*(a)
++          if (kind(b).ne.2) stop 1
++          if (kind(c).ne.8) stop 2
++          if (kind(d).ne.1) stop 3
++          if (len(e).ne.2) stop 4
++        end
+diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f
+new file mode 100644
+index 00000000000..569747874e3
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f
+@@ -0,0 +1,19 @@
++! { dg-do run }
++! { dg-options "-fdec" }
++!
++! Test kind specification in variable not in type
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        program spec_in_var
++          integer a
++          parameter(a=2)
++          integer b*(a)
++          real c*(8)
++          logical d*(1_1)
++          character e*(a)
++          if (kind(b).ne.2) stop 1
++          if (kind(c).ne.8) stop 2
++          if (kind(d).ne.1) stop 3
++          if (len(e).ne.2) stop 4
++        end
+diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f
+new file mode 100644
+index 00000000000..b975bfd15c5
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f
+@@ -0,0 +1,15 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-override-kind" }
++!
++! Test kind specification in variable not in type as the per variable
++! kind specification is not enables these should fail
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        program spec_in_var
++          integer a
++          parameter(a=2)
++          integer b*(a) ! { dg-error "Syntax error" }
++          real c*(8)    ! { dg-error "Syntax error" }
++          logical d*1_1 ! { dg-error "Syntax error" }
++        end
+diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f
+new file mode 100644
+index 00000000000..85732e0bd85
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f
+@@ -0,0 +1,14 @@
++! { dg-do compile }
++! { dg-options "-fdec" }
++!
++! Check that invalid kind values are rejected.
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        program spec_in_var
++          integer a
++          parameter(a=3)
++          integer b*(a) ! { dg-error "Kind 3 not supported" }
++          real c*(78)   ! { dg-error "Kind 78 not supported" }
++          logical d*(*) ! { dg-error "Invalid character" }
++        end
+-- 
+2.11.0
+
diff --git a/SOURCES/0011-Allow-non-logical-expressions-in-IF-statements.patch b/SOURCES/0011-Allow-non-logical-expressions-in-IF-statements.patch
new file mode 100644
index 0000000..7152a0b
--- /dev/null
+++ b/SOURCES/0011-Allow-non-logical-expressions-in-IF-statements.patch
@@ -0,0 +1,378 @@
+From f6197d0e59059a172f68a697e25cd585ad158937 Mon Sep 17 00:00:00 2001
+From: Jim MacArthur <jim.macarthur@codethink.co.uk>
+Date: Wed, 11 Nov 2015 15:37:00 +0000
+Subject: [PATCH 11/16] Allow non-logical expressions in IF statements
+
+Use -fdec-non-logical-if to enable feature. Also enabled using -fdec.
+---
+ gcc/fortran/lang.opt                               |  4 ++
+ gcc/fortran/options.c                              |  1 +
+ gcc/fortran/resolve.c                              | 60 ++++++++++++++++++----
+ ...ec_logical_expressions_if_statements_blocks_1.f | 25 +++++++++
+ ...ec_logical_expressions_if_statements_blocks_2.f | 25 +++++++++
+ ...ec_logical_expressions_if_statements_blocks_3.f | 25 +++++++++
+ ...ec_logical_expressions_if_statements_blocks_4.f | 45 ++++++++++++++++
+ ...ec_logical_expressions_if_statements_blocks_5.f | 45 ++++++++++++++++
+ ...ec_logical_expressions_if_statements_blocks_6.f | 45 ++++++++++++++++
+ 9 files changed, 266 insertions(+), 9 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f
+
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 38d31e620bf..fa2851ae837 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -482,6 +482,10 @@ fdec-override-kind
+ Fortran Var(flag_dec_override_kind)
+ Enable support for per variable kind specification.
+ 
++fdec-non-logical-if
++Fortran Var(flag_dec_non_logical_if)
++Enable support for non-logical expressions in if statements.
++
+ fdec-old-init
+ Fortran Var(flag_dec_old_init)
+ Enable support for old style initializers in derived types.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index 720fd25b570..7b04a681f7b 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -82,6 +82,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_non_integer_index, value, value);
+   SET_BITFLAG (flag_dec_old_init, value, value);
+   SET_BITFLAG (flag_dec_override_kind, value, value);
++  SET_BITFLAG (flag_dec_non_logical_if, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
+index 04679d3a15d..a90f7f849b5 100644
+--- a/gcc/fortran/resolve.c
++++ b/gcc/fortran/resolve.c
+@@ -10398,10 +10398,31 @@ gfc_resolve_blocks (gfc_code *b, gfc_namespace *ns)
+       switch (b->op)
+ 	{
+ 	case EXEC_IF:
+-	  if (t && b->expr1 != NULL
+-	      && (b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0))
+-	    gfc_error ("IF clause at %L requires a scalar LOGICAL expression",
+-		       &b->expr1->where);
++	  if (t && b->expr1 != NULL)
++	    {
++	      if (flag_dec_non_logical_if && b->expr1->ts.type != BT_LOGICAL)
++		{
++		  gfc_expr* cast;
++		  cast = gfc_ne (b->expr1,
++				 gfc_get_int_expr (1, &gfc_current_locus, 0),
++				 INTRINSIC_NE);
++		  if (cast == NULL)
++		    gfc_internal_error ("gfc_resolve_blocks(): Failed to cast "
++					"to LOGICAL in IF");
++		  b->expr1 = cast;
++                  if (warn_conversion_extra)
++		    {
++		      gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in"
++				   " IF statement condition %L will be true if"
++				   " it evaluates to nonzero",
++				   &b->expr1->where);
++		    }
++		}
++
++	      if ((b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0))
++		gfc_error ("IF clause at %L requires a scalar LOGICAL "
++			   "expression", &b->expr1->where);
++	    }
+ 	  break;
+ 
+ 	case EXEC_WHERE:
+@@ -11690,11 +11711,32 @@ start:
+ 	  break;
+ 
+ 	case EXEC_IF:
+-	  if (t && code->expr1 != NULL
+-	      && (code->expr1->ts.type != BT_LOGICAL
+-		  || code->expr1->rank != 0))
+-	    gfc_error ("IF clause at %L requires a scalar LOGICAL expression",
+-		       &code->expr1->where);
++	  if (t && code->expr1 != NULL)
++	    {
++	      if (flag_dec_non_logical_if
++		  && code->expr1->ts.type != BT_LOGICAL)
++		{
++		  gfc_expr* cast;
++		  cast = gfc_ne (code->expr1,
++				 gfc_get_int_expr (1, &gfc_current_locus, 0),
++				 INTRINSIC_NE);
++		  if (cast == NULL)
++		    gfc_internal_error ("gfc_resolve_code(): Failed to cast "
++					"to LOGICAL in IF");
++		  code->expr1 = cast;
++                  if (warn_conversion_extra)
++		    {
++		      gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in"
++				   " IF statement condition %L will be true if"
++				   " it evaluates to nonzero",
++				   &code->expr1->where);
++		    }
++		}
++
++	      if (code->expr1->ts.type != BT_LOGICAL || code->expr1->rank != 0)
++		gfc_error ("IF clause at %L requires a scalar LOGICAL "
++			   "expression", &code->expr1->where);
++	    }
+ 	  break;
+ 
+ 	case EXEC_CALL:
+diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f
+new file mode 100644
+index 00000000000..0101db893ca
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f
+@@ -0,0 +1,25 @@
++! { dg-do run }
++! { dg-options "-fdec -Wconversion-extra" }
++!
++! Allow logical expressions in if statements and blocks
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM logical_exp_if_st_bl
++          INTEGER ipos/1/
++          INTEGER ineg/0/
++
++          ! Test non logical variables
++          if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" }
++          if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" }
++
++          ! Test non logical expressions in if statements
++          if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" }
++
++          ! Test non logical expressions in if blocks
++          if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" }
++            STOP 4
++          endif
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f
+new file mode 100644
+index 00000000000..876f4e09508
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f
+@@ -0,0 +1,25 @@
++! { dg-do run }
++! { dg-options "-fdec-non-logical-if -Wconversion-extra" }
++!
++! Allow logical expressions in if statements and blocks
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM logical_exp_if_st_bl
++          INTEGER ipos/1/
++          INTEGER ineg/0/
++
++          ! Test non logical variables
++          if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" }
++          if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" }
++
++          ! Test non logical expressions in if statements
++          if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" }
++
++          ! Test non logical expressions in if blocks
++          if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" }
++            STOP 4
++          endif
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f
+new file mode 100644
+index 00000000000..35cb4c51b8d
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f
+@@ -0,0 +1,25 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-non-logical-if" }
++!
++! Allow logical expressions in if statements and blocks
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        PROGRAM logical_exp_if_st_bl
++          INTEGER ipos/1/
++          INTEGER ineg/0/
++
++          ! Test non logical variables
++          if (ineg) STOP 1 ! { dg-error "IF clause at" }
++          if (0) STOP 2 ! { dg-error "IF clause at" }
++
++          ! Test non logical expressions in if statements
++          if (MOD(ipos, 1)) STOP 3 ! { dg-error "IF clause at" }
++
++          ! Test non logical expressions in if blocks
++          if (MOD(2 * ipos, 2)) then ! { dg-error "IF clause at" }
++            STOP 4
++          endif
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f
+new file mode 100644
+index 00000000000..7b60b60827f
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f
+@@ -0,0 +1,45 @@
++! { dg-do run }
++! { dg-options "-fdec -Wconversion-extra" }
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++       function othersub1()
++        integer*4 othersub1
++        othersub1 = 9
++       end
++
++       function othersub2()
++        integer*4 othersub2
++        othersub2 = 0
++       end
++
++       program MAIN
++        integer*4 othersub1
++        integer*4 othersub2
++        integer a /1/
++        integer b /2/        
++ 
++        if (othersub1()) then ! { dg-warning "if it evaluates to nonzero" }
++           write(*,*) "OK"
++        else
++           stop 1
++        end if
++        if (othersub2()) then ! { dg-warning "if it evaluates to nonzero" }
++           stop 2
++        else
++           write(*,*) "OK"
++        end if
++        if (a-b) then ! { dg-warning "if it evaluates to nonzero" }
++           write(*,*) "OK"
++        else
++           stop 3
++        end if
++        if (b-(a+1)) then ! { dg-warning "if it evaluates to nonzero" }
++           stop 3
++        else
++           write(*,*) "OK"
++        end if
++       end
++
+diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f
+new file mode 100644
+index 00000000000..80336f48ca1
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f
+@@ -0,0 +1,45 @@
++! { dg-do run }
++! { dg-options "-fdec-non-logical-if -Wconversion-extra" }
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++       function othersub1()
++        integer*4 othersub1
++        othersub1 = 9
++       end
++
++       function othersub2()
++        integer*4 othersub2
++        othersub2 = 0
++       end
++
++       program MAIN
++        integer*4 othersub1
++        integer*4 othersub2
++        integer a /1/
++        integer b /2/        
++ 
++        if (othersub1()) then ! { dg-warning "Non-LOGICAL type in IF statement" }
++           write(*,*) "OK"
++        else
++           stop 1
++        end if
++        if (othersub2()) then ! { dg-warning "Non-LOGICAL type in IF statement" }
++           stop 2
++        else
++           write(*,*) "OK"
++        end if
++        if (a-b) then ! { dg-warning "Non-LOGICAL type in IF statement" }
++           write(*,*) "OK"
++        else
++           stop 3
++        end if
++        if (b-(a+1)) then ! { dg-warning "Non-LOGICAL type in IF statement" }
++           stop 3
++        else
++           write(*,*) "OK"
++        end if
++       end
++
+diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f
+new file mode 100644
+index 00000000000..e1125ca717a
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f
+@@ -0,0 +1,45 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-non-logical-if" }
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++       function othersub1()
++        integer*4 othersub1
++        othersub1 = 9
++       end
++
++       function othersub2()
++        integer*4 othersub2
++        othersub2 = 0
++       end
++
++       program MAIN
++        integer*4 othersub1
++        integer*4 othersub2
++        integer a /1/
++        integer b /2/        
++ 
++        if (othersub1()) then ! { dg-error "IF clause at" }
++           write(*,*) "OK"
++        else
++           stop 1
++        end if
++        if (othersub2()) then ! { dg-error "IF clause at" }
++           stop 2
++        else
++           write(*,*) "OK"
++        end if
++        if (a-b) then ! { dg-error "IF clause at" }
++           write(*,*) "OK"
++        else
++           stop 3
++        end if
++        if (b-(a+1)) then ! { dg-error "IF clause at" }
++           stop 3
++        else
++           write(*,*) "OK"
++        end if
++       end
++
+-- 
+2.11.0
+
diff --git a/SOURCES/0012-Support-type-promotion-in-calls-to-intrinsics.patch b/SOURCES/0012-Support-type-promotion-in-calls-to-intrinsics.patch
new file mode 100644
index 0000000..3b67735
--- /dev/null
+++ b/SOURCES/0012-Support-type-promotion-in-calls-to-intrinsics.patch
@@ -0,0 +1,2151 @@
+From 79bc3c8c15122dd929703f5ca7e468ffd46c3c3e Mon Sep 17 00:00:00 2001
+From: Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
+Date: Mon, 9 Apr 2018 15:10:02 +0100
+Subject: [PATCH 12/16] Support type promotion in calls to intrinsics
+
+Use -fdec-promotion or -fdec to enable this feature.
+
+Merged 2 commits: worked on by Ben Brewer <ben.brewer@codethink.co.uk>,
+Francisco Redondo Marchena <francisco.marchena@codethink.co.uk and
+Jeff Law <law@redhat.com>
+
+Re-worked by Mark Eggleston <mark.eggleston@codethink.com>
+---
+ gcc/fortran/check.c                                |  71 +++++-
+ gcc/fortran/intrinsic.c                            |   5 +
+ gcc/fortran/iresolve.c                             |  91 ++++---
+ gcc/fortran/lang.opt                               |   4 +
+ gcc/fortran/options.c                              |   1 +
+ gcc/fortran/simplify.c                             | 266 ++++++++++++++++-----
+ ...ec_intrinsic_int_real_array_const_promotion_1.f |  18 ++
+ ...ec_intrinsic_int_real_array_const_promotion_2.f |  18 ++
+ ...ec_intrinsic_int_real_array_const_promotion_3.f |  18 ++
+ .../dec_intrinsic_int_real_const_promotion_1.f     |  90 +++++++
+ .../dec_intrinsic_int_real_const_promotion_2.f     |  90 +++++++
+ .../dec_intrinsic_int_real_const_promotion_3.f     |  92 +++++++
+ .../dec_intrinsic_int_real_promotion_1.f           | 130 ++++++++++
+ .../dec_intrinsic_int_real_promotion_2.f           | 130 ++++++++++
+ .../dec_intrinsic_int_real_promotion_3.f           | 130 ++++++++++
+ .../dec_intrinsic_int_real_promotion_4.f           | 118 +++++++++
+ .../dec_intrinsic_int_real_promotion_5.f           | 118 +++++++++
+ .../dec_intrinsic_int_real_promotion_6.f           | 118 +++++++++
+ .../dec_intrinsic_int_real_promotion_7.f           | 118 +++++++++
+ gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f   |  40 ++++
+ gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f   |  40 ++++
+ gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f   |  40 ++++
+ 22 files changed, 1655 insertions(+), 91 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f
+
+diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
+index 0ba4d0a031f..89416ba368d 100644
+--- a/gcc/fortran/check.c
++++ b/gcc/fortran/check.c
+@@ -947,12 +947,40 @@ gfc_check_allocated (gfc_expr *array)
+ }
+ 
+ 
++/* Check function where both arguments must be real or integer
++   and warn if they are different types.  */
++
++bool
++check_int_real_promotion (gfc_expr *a, gfc_expr *b)
++{
++  gfc_expr *i;
++
++  if (!int_or_real_check (a, 0))
++    return false;
++
++  if (!int_or_real_check (b, 1))
++    return false;
++
++  if (a->ts.type != b->ts.type)
++    {
++      i = (a->ts.type != BT_REAL ? a : b);
++      gfc_warning_now (OPT_Wconversion, "Conversion from INTEGER to REAL "
++		       "at %L might lose precision", &i->where);
++    }
++
++  return true;
++}
++
++
+ /* Common check function where the first argument must be real or
+    integer and the second argument must be the same as the first.  */
+ 
+ bool
+ gfc_check_a_p (gfc_expr *a, gfc_expr *p)
+ {
++  if (flag_dec_promotion)
++    return check_int_real_promotion (a, p);
++
+   if (!int_or_real_check (a, 0))
+     return false;
+ 
+@@ -3126,6 +3154,41 @@ check_rest (bt type, int kind, gfc_actual_arglist *arglist)
+ }
+ 
+ 
++/* Check function where all arguments of an argument list must be real
++   or integer.  */
++
++static bool
++check_rest_int_real (gfc_actual_arglist *arglist)
++{
++  gfc_actual_arglist *arg, *tmp;
++  gfc_expr *x;
++  int m, n;
++
++  if (!min_max_args (arglist))
++    return false;
++
++  for (arg = arglist, n=1; arg; arg = arg->next, n++)
++    {
++      x = arg->expr;
++      if (x->ts.type != BT_INTEGER && x->ts.type != BT_REAL)
++	{
++	  gfc_error ("%<a%d%> argument of %qs intrinsic at %L must be "
++		     "INTEGER or REAL", n, gfc_current_intrinsic, &x->where);
++	  return false;
++	}
++
++      for (tmp = arglist, m=1; tmp != arg; tmp = tmp->next, m++)
++	if (!gfc_check_conformance (tmp->expr, x,
++				    "arguments 'a%d' and 'a%d' for "
++				    "intrinsic '%s'", m, n,
++				    gfc_current_intrinsic))
++	  return false;
++    }
++
++  return true;
++}
++
++
+ bool
+ gfc_check_min_max (gfc_actual_arglist *arg)
+ {
+@@ -3150,7 +3213,10 @@ gfc_check_min_max (gfc_actual_arglist *arg)
+       return false;
+     }
+ 
+-  return check_rest (x->ts.type, x->ts.kind, arg);
++  if (flag_dec_promotion && x->ts.type != BT_CHARACTER)
++    return check_rest_int_real (arg);
++  else
++    return check_rest (x->ts.type, x->ts.kind, arg);
+ }
+ 
+ 
+@@ -4488,6 +4554,9 @@ gfc_check_shift (gfc_expr *i, gfc_expr *shift)
+ bool
+ gfc_check_sign (gfc_expr *a, gfc_expr *b)
+ {
++  if (flag_dec_promotion)
++    return check_int_real_promotion (a, b);
++
+   if (!int_or_real_check (a, 0))
+     return false;
+ 
+diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
+index 6d47ae3105f..a4b23bc244a 100644
+--- a/gcc/fortran/intrinsic.c
++++ b/gcc/fortran/intrinsic.c
+@@ -4329,6 +4329,11 @@ check_arglist (gfc_actual_arglist **ap, gfc_intrinsic_sym *sym,
+       if (ts.kind == 0)
+ 	ts.kind = actual->expr->ts.kind;
+ 
++      /* If kind promotion is allowed don't check for kind if it is smaller */
++      if (flag_dec_promotion && ts.type == BT_INTEGER)
++	if (actual->expr->ts.kind < ts.kind)
++	  ts.kind = actual->expr->ts.kind;
++
+       if (!gfc_compare_types (&ts, &actual->expr->ts))
+ 	{
+ 	  if (error_flag)
+diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
+index 53338dda0a7..92d50c3deb9 100644
+--- a/gcc/fortran/iresolve.c
++++ b/gcc/fortran/iresolve.c
+@@ -893,19 +893,22 @@ gfc_resolve_dble (gfc_expr *f, gfc_expr *a)
+ void
+ gfc_resolve_dim (gfc_expr *f, gfc_expr *a, gfc_expr *p)
+ {
+-  f->ts.type = a->ts.type;
+   if (p != NULL)
+-    f->ts.kind = gfc_kind_max (a,p);
+-  else
+-    f->ts.kind = a->ts.kind;
+-
+-  if (p != NULL && a->ts.kind != p->ts.kind)
+     {
+-      if (a->ts.kind == gfc_kind_max (a,p))
+-	gfc_convert_type (p, &a->ts, 2);
++      f->ts.kind = gfc_kind_max (a,p);
++      if (a->ts.type == BT_REAL || p->ts.type == BT_REAL)
++	f->ts.type = BT_REAL;
+       else
+-	gfc_convert_type (a, &p->ts, 2);
++	f->ts.type = BT_INTEGER;
++
++      if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type)
++	gfc_convert_type (a, &f->ts, 2);
++
++      if (p->ts.kind != f->ts.kind || p->ts.type != f->ts.type)
++	gfc_convert_type (p, &f->ts, 2);
+     }
++  else
++    f->ts = a->ts;
+ 
+   f->value.function.name
+     = gfc_get_string ("__dim_%c%d", gfc_type_letter (f->ts.type), f->ts.kind);
+@@ -1669,14 +1672,17 @@ gfc_resolve_minmax (const char *name, gfc_expr *f, gfc_actual_arglist *args)
+   /* Find the largest type kind.  */
+   for (a = args->next; a; a = a->next)
+     {
++      if (a->expr-> ts.type == BT_REAL)
++	f->ts.type = BT_REAL;
++
+       if (a->expr->ts.kind > f->ts.kind)
+ 	f->ts.kind = a->expr->ts.kind;
+     }
+ 
+-  /* Convert all parameters to the required kind.  */
++  /* Convert all parameters to the required type and/or kind.  */
+   for (a = args; a; a = a->next)
+     {
+-      if (a->expr->ts.kind != f->ts.kind)
++      if (a->expr->ts.type != f->ts.type || a->expr->ts.kind != f->ts.kind)
+ 	gfc_convert_type (a->expr, &f->ts, 2);
+     }
+ 
+@@ -2169,19 +2175,22 @@ gfc_resolve_minval (gfc_expr *f, gfc_expr *array, gfc_expr *dim,
+ void
+ gfc_resolve_mod (gfc_expr *f, gfc_expr *a, gfc_expr *p)
+ {
+-  f->ts.type = a->ts.type;
+   if (p != NULL)
+-    f->ts.kind = gfc_kind_max (a,p);
+-  else
+-    f->ts.kind = a->ts.kind;
+-
+-  if (p != NULL && a->ts.kind != p->ts.kind)
+     {
+-      if (a->ts.kind == gfc_kind_max (a,p))
+-	gfc_convert_type (p, &a->ts, 2);
++      f->ts.kind = gfc_kind_max (a,p);
++      if (a->ts.type == BT_REAL || p->ts.type == BT_REAL)
++	f->ts.type = BT_REAL;
+       else
+-	gfc_convert_type (a, &p->ts, 2);
++	f->ts.type = BT_INTEGER;
++
++      if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type)
++	gfc_convert_type (a, &f->ts, 2);
++
++      if (p->ts.kind != f->ts.kind || p->ts.type != f->ts.type)
++	gfc_convert_type (p, &f->ts, 2);
+     }
++  else
++    f->ts = a->ts;
+ 
+   f->value.function.name
+     = gfc_get_string ("__mod_%c%d", gfc_type_letter (f->ts.type), f->ts.kind);
+@@ -2191,19 +2200,22 @@ gfc_resolve_mod (gfc_expr *f, gfc_expr *a, gfc_expr *p)
+ void
+ gfc_resolve_modulo (gfc_expr *f, gfc_expr *a, gfc_expr *p)
+ {
+-  f->ts.type = a->ts.type;
+   if (p != NULL)
+-    f->ts.kind = gfc_kind_max (a,p);
+-  else
+-    f->ts.kind = a->ts.kind;
+-
+-  if (p != NULL && a->ts.kind != p->ts.kind)
+     {
+-      if (a->ts.kind == gfc_kind_max (a,p))
+-	gfc_convert_type (p, &a->ts, 2);
++      f->ts.kind = gfc_kind_max (a,p);
++      if (a->ts.type == BT_REAL || p->ts.type == BT_REAL)
++	f->ts.type = BT_REAL;
+       else
+-	gfc_convert_type (a, &p->ts, 2);
++	f->ts.type = BT_INTEGER;
++
++      if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type)
++	gfc_convert_type (a, &f->ts, 2);
++
++      if (p->ts.kind != f->ts.kind || p->ts.type != f->ts.type)
++	gfc_convert_type (p, &f->ts, 2);
+     }
++  else
++    f->ts = a->ts;
+ 
+   f->value.function.name
+     = gfc_get_string ("__modulo_%c%d", gfc_type_letter (f->ts.type),
+@@ -2578,9 +2590,26 @@ gfc_resolve_shift (gfc_expr *f, gfc_expr *i, gfc_expr *shift ATTRIBUTE_UNUSED)
+ 
+ 
+ void
+-gfc_resolve_sign (gfc_expr *f, gfc_expr *a, gfc_expr *b ATTRIBUTE_UNUSED)
++gfc_resolve_sign (gfc_expr *f, gfc_expr *a, gfc_expr *b)
+ {
+-  f->ts = a->ts;
++  if (b != NULL)
++    {
++      f->ts.kind = gfc_kind_max (a, b);
++      if (a->ts.type == BT_REAL || b->ts.type == BT_REAL)
++	f->ts.type = BT_REAL;
++      else
++	f->ts.type = BT_INTEGER;
++
++      if (a->ts.kind != f->ts.kind || a->ts.type != f->ts.type)
++	gfc_convert_type (a, &f->ts, 2);
++
++      if (b->ts.kind != f->ts.kind || b->ts.type != f->ts.type)
++	gfc_convert_type (b, &f->ts, 2);
++    }
++  else
++    {
++      f->ts = a->ts;
++    }
+   f->value.function.name
+     = gfc_get_string ("__sign_%c%d", gfc_type_letter (a->ts.type), a->ts.kind);
+ }
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index fa2851ae837..2a8f5f661a8 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -490,6 +490,10 @@ fdec-old-init
+ Fortran Var(flag_dec_old_init)
+ Enable support for old style initializers in derived types.
+ 
++fdec-promotion
++Fortran Var(flag_dec_promotion)
++Add support for type promotion in intrinsic arguments.
++
+ fdec-structure
+ Fortran Var(flag_dec_structure)
+ Enable support for DEC STRUCTURE/RECORD.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index 7b04a681f7b..7a2583a2076 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -83,6 +83,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_old_init, value, value);
+   SET_BITFLAG (flag_dec_override_kind, value, value);
+   SET_BITFLAG (flag_dec_non_logical_if, value, value);
++  SET_BITFLAG (flag_dec_promotion, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
+index 7aff256c6b3..cb5f93e293d 100644
+--- a/gcc/fortran/simplify.c
++++ b/gcc/fortran/simplify.c
+@@ -2256,39 +2256,79 @@ gfc_simplify_digits (gfc_expr *x)
+ }
+ 
+ 
++/* Simplify function which sets the floating-point value of ar from
++   the value of a independently if a is integer of real.  */
++
++static void
++simplify_int_real_promotion (const gfc_expr *a, const gfc_expr *b, mpfr_t *ar)
++{
++  if (a->ts.type == BT_REAL)
++    {
++      mpfr_init2 (*ar, (a->ts.kind * 8));
++      mpfr_set (*ar, a->value.real, GFC_RND_MODE);
++    }
++  else
++    {
++      mpfr_init2 (*ar, (b->ts.kind * 8));
++      mpfr_set_z (*ar, a->value.integer, GFC_RND_MODE);
++    }
++}
++
++
++/* Simplify function which promotes a and b arguments from integer to real if
++   required in ar and br floating-point values. This function returns true if
++   a or b are reals and false otherwise. */
++
++static bool
++simplify_int_real_promotion2 (const gfc_expr *a, const gfc_expr *b, mpfr_t *ar,
++			      mpfr_t *br)
++{
++  if (a->ts.type != BT_REAL && b->ts.type != BT_REAL)
++    return false;
++
++  simplify_int_real_promotion (a, b, ar);
++  simplify_int_real_promotion (b, a, br);
++
++  return true;
++}
++
++
+ gfc_expr *
+ gfc_simplify_dim (gfc_expr *x, gfc_expr *y)
+ {
+   gfc_expr *result;
+   int kind;
+ 
++  mpfr_t xr;
++  mpfr_t yr;
++
+   if (x->expr_type != EXPR_CONSTANT || y->expr_type != EXPR_CONSTANT)
+     return NULL;
+ 
+-  kind = x->ts.kind > y->ts.kind ? x->ts.kind : y->ts.kind;
+-  result = gfc_get_constant_expr (x->ts.type, kind, &x->where);
+-
+-  switch (x->ts.type)
++  if ((x->ts.type != BT_REAL && x->ts.type != BT_INTEGER)
++      || (y->ts.type != BT_REAL && y->ts.type != BT_INTEGER))
+     {
+-      case BT_INTEGER:
+-	if (mpz_cmp (x->value.integer, y->value.integer) > 0)
+-	  mpz_sub (result->value.integer, x->value.integer, y->value.integer);
+-	else
+-	  mpz_set_ui (result->value.integer, 0);
+-
+-	break;
+-
+-      case BT_REAL:
+-	if (mpfr_cmp (x->value.real, y->value.real) > 0)
+-	  mpfr_sub (result->value.real, x->value.real, y->value.real,
+-		    GFC_RND_MODE);
+-	else
+-	  mpfr_set_ui (result->value.real, 0, GFC_RND_MODE);
++      gfc_internal_error ("gfc_simplify_dim(): Bad arguments");
++      return NULL;
++    }
+ 
+-	break;
++  kind = x->ts.kind > y->ts.kind ? x->ts.kind : y->ts.kind;
+ 
+-      default:
+-	gfc_internal_error ("gfc_simplify_dim(): Bad type");
++  if (simplify_int_real_promotion2 (x, y, &xr, &yr))
++    {
++      result = gfc_get_constant_expr (BT_REAL, kind, &x->where);
++      if (mpfr_cmp (xr, yr) > 0)
++	mpfr_sub (result->value.real, xr, yr, GFC_RND_MODE);
++      else
++	mpfr_set_ui (result->value.real, 0, GFC_RND_MODE);
++    }
++  else
++    {
++      result = gfc_get_constant_expr (BT_INTEGER, kind, &x->where);
++      if (mpz_cmp (x->value.integer, y->value.integer) > 0)
++	mpz_sub (result->value.integer, x->value.integer, y->value.integer);
++      else
++	mpz_set_ui (result->value.integer, 0);
+     }
+ 
+   return range_check (result, "DIM");
+@@ -4886,13 +4926,87 @@ min_max_choose (gfc_expr *arg, gfc_expr *extremum, int sign, bool back_val)
+ {
+   int ret;
+ 
++  mpfr_t *arp;
++  mpfr_t *erp;
++  mpfr_t ar;
++  mpfr_t er;
++
++  if (arg->ts.type != extremum->ts.type)
++    {
++      if (arg->ts.type == BT_REAL)
++	{
++	  arp = &arg->value.real;
++	}
++      else
++	{
++	  mpfr_init2 (ar, (arg->ts.kind * 8));
++	  mpfr_set_z (ar, arg->value.integer, GFC_RND_MODE);
++	  arp = &ar;
++	}
++
++      if (extremum->ts.type == BT_REAL)
++	{
++	  erp = &extremum->value.real;
++	}
++      else
++	{
++	  mpfr_init2 (er, (extremum->ts.kind * 8));
++	  mpfr_set_z (er, extremum->value.integer, GFC_RND_MODE);
++	  erp = &er;
++	}
++
++      if (mpfr_nan_p (*erp))
++	{
++	  ret = 1;
++	  extremum->ts.type = arg->ts.type;
++	  extremum->ts.kind = arg->ts.kind;
++	  if (arg->ts.type == BT_INTEGER)
++	    {
++	      mpz_init2 (extremum->value.integer, (arg->ts.kind * 8));
++	      mpz_set (extremum->value.integer, arg->value.integer);
++	    }
++	  else
++	    {
++	      mpfr_init2 (extremum->value.real, (arg->ts.kind * 8));
++	      mpfr_set (extremum->value.real, *arp, GFC_RND_MODE);
++	    }
++	}
++      else if (mpfr_nan_p (*arp))
++	ret = -1;
++      else
++	{
++	  ret = mpfr_cmp (*arp, *erp) * sign;
++	  if (ret > 0)
++	    {
++	      extremum->ts.type = arg->ts.type;
++	      extremum->ts.kind = arg->ts.kind;
++	      if (arg->ts.type == BT_INTEGER)
++		{
++		  mpz_init2 (extremum->value.integer, (arg->ts.kind * 8));
++		  mpz_set (extremum->value.integer, arg->value.integer);
++		}
++	      else
++		{
++		  mpfr_init2 (extremum->value.real, (arg->ts.kind * 8));
++		  mpfr_set (extremum->value.real, *arp, GFC_RND_MODE);
++		}
++	    }
++	}
++
++      return ret;
++    }
++
+   switch (arg->ts.type)
+     {
+       case BT_INTEGER:
+ 	ret = mpz_cmp (arg->value.integer,
+ 		       extremum->value.integer) * sign;
+ 	if (ret > 0)
+-	  mpz_set (extremum->value.integer, arg->value.integer);
++	  {
++	    if (arg->ts.kind > extremum->ts.kind)
++	      extremum->ts.kind = arg->ts.kind;
++	    mpz_set (extremum->value.integer, arg->value.integer);
++	  }
+ 	break;
+ 
+       case BT_REAL:
+@@ -5841,7 +5955,9 @@ gfc_simplify_mod (gfc_expr *a, gfc_expr *p)
+   gfc_expr *result;
+   int kind;
+ 
+-  /* First check p.  */
++  mpfr_t ar;
++  mpfr_t pr;
++
+   if (p->expr_type != EXPR_CONSTANT)
+     return NULL;
+ 
+@@ -5852,18 +5968,18 @@ gfc_simplify_mod (gfc_expr *a, gfc_expr *p)
+ 	if (mpz_cmp_ui (p->value.integer, 0) == 0)
+ 	  {
+ 	    gfc_error ("Argument %qs of MOD at %L shall not be zero",
+-			"P", &p->where);
++	               "P", &p->where);
+ 	    return &gfc_bad_expr;
+ 	  }
+-	break;
++      break;
+       case BT_REAL:
+ 	if (mpfr_cmp_ui (p->value.real, 0) == 0)
+ 	  {
+ 	    gfc_error ("Argument %qs of MOD at %L shall not be zero",
+-			"P", &p->where);
++	               "P", &p->where);
+ 	    return &gfc_bad_expr;
+-	  }
+-	break;
++	   }
++      break;
+       default:
+ 	gfc_internal_error ("gfc_simplify_mod(): Bad arguments");
+     }
+@@ -5871,16 +5987,24 @@ gfc_simplify_mod (gfc_expr *a, gfc_expr *p)
+   if (a->expr_type != EXPR_CONSTANT)
+     return NULL;
+ 
++  if (a->ts.type != BT_REAL && a->ts.type != BT_INTEGER)
++    {
++      gfc_internal_error ("gfc_simplify_mod(): Bad arguments");
++      return NULL;
++    }
++
+   kind = a->ts.kind > p->ts.kind ? a->ts.kind : p->ts.kind;
+-  result = gfc_get_constant_expr (a->ts.type, kind, &a->where);
+ 
+-  if (a->ts.type == BT_INTEGER)
+-    mpz_tdiv_r (result->value.integer, a->value.integer, p->value.integer);
+-  else
++  if (simplify_int_real_promotion2 (a, p, &ar, &pr))
+     {
++      result = gfc_get_constant_expr (BT_REAL, kind, &a->where);
+       gfc_set_model_kind (kind);
+-      mpfr_fmod (result->value.real, a->value.real, p->value.real,
+-		 GFC_RND_MODE);
++      mpfr_fmod (result->value.real, ar, pr, GFC_RND_MODE);
++    }
++  else
++    {
++      result = gfc_get_constant_expr (BT_INTEGER, kind, &a->where);
++      mpz_tdiv_r (result->value.integer, a->value.integer, p->value.integer);
+     }
+ 
+   return range_check (result, "MOD");
+@@ -5893,7 +6017,9 @@ gfc_simplify_modulo (gfc_expr *a, gfc_expr *p)
+   gfc_expr *result;
+   int kind;
+ 
+-  /* First check p.  */
++  mpfr_t ar;
++  mpfr_t pr;
++
+   if (p->expr_type != EXPR_CONSTANT)
+     return NULL;
+ 
+@@ -5904,44 +6030,52 @@ gfc_simplify_modulo (gfc_expr *a, gfc_expr *p)
+ 	if (mpz_cmp_ui (p->value.integer, 0) == 0)
+ 	  {
+ 	    gfc_error ("Argument %qs of MODULO at %L shall not be zero",
+-			"P", &p->where);
++	               "P", &p->where);
+ 	    return &gfc_bad_expr;
+ 	  }
+-	break;
++      break;
+       case BT_REAL:
+ 	if (mpfr_cmp_ui (p->value.real, 0) == 0)
+ 	  {
+ 	    gfc_error ("Argument %qs of MODULO at %L shall not be zero",
+-			"P", &p->where);
++	               "P", &p->where);
+ 	    return &gfc_bad_expr;
+-	  }
+-	break;
++	   }
++      break;
+       default:
+ 	gfc_internal_error ("gfc_simplify_modulo(): Bad arguments");
+     }
+ 
++  if (a->ts.type != BT_REAL && a->ts.type != BT_INTEGER)
++    {
++      gfc_internal_error ("gfc_simplify_modulo(): Bad arguments");
++      return NULL;
++    }
++
+   if (a->expr_type != EXPR_CONSTANT)
+     return NULL;
+ 
+   kind = a->ts.kind > p->ts.kind ? a->ts.kind : p->ts.kind;
+-  result = gfc_get_constant_expr (a->ts.type, kind, &a->where);
+ 
+-  if (a->ts.type == BT_INTEGER)
+-	mpz_fdiv_r (result->value.integer, a->value.integer, p->value.integer);
+-  else
++  if (simplify_int_real_promotion2 (a, p, &ar, &pr))
+     {
++      result = gfc_get_constant_expr (BT_REAL, kind, &a->where);
+       gfc_set_model_kind (kind);
+-      mpfr_fmod (result->value.real, a->value.real, p->value.real,
+-                 GFC_RND_MODE);
++      mpfr_fmod (result->value.real, ar, pr, GFC_RND_MODE);
+       if (mpfr_cmp_ui (result->value.real, 0) != 0)
+-        {
+-          if (mpfr_signbit (a->value.real) != mpfr_signbit (p->value.real))
+-            mpfr_add (result->value.real, result->value.real, p->value.real,
+-                      GFC_RND_MODE);
+-	    }
+-	  else
+-        mpfr_copysign (result->value.real, result->value.real,
+-                       p->value.real, GFC_RND_MODE);
++	{
++	  if (mpfr_signbit (ar) != mpfr_signbit (pr))
++	    mpfr_add (result->value.real, result->value.real, pr,
++		      GFC_RND_MODE);
++	}
++      else
++	mpfr_copysign (result->value.real, result->value.real, pr,
++		       GFC_RND_MODE);
++    }
++  else
++    {
++      result = gfc_get_constant_expr (BT_INTEGER, kind, &a->where);
++      mpz_fdiv_r (result->value.integer, a->value.integer, p->value.integer);
+     }
+ 
+   return range_check (result, "MODULO");
+@@ -7442,27 +7576,41 @@ gfc_expr *
+ gfc_simplify_sign (gfc_expr *x, gfc_expr *y)
+ {
+   gfc_expr *result;
++  bool neg;
+ 
+   if (x->expr_type != EXPR_CONSTANT || y->expr_type != EXPR_CONSTANT)
+     return NULL;
+ 
+   result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where);
+ 
++  switch (y->ts.type)
++    {
++      case BT_INTEGER:
++	neg = (mpz_sgn (y->value.integer) < 0);
++	break;
++
++      case BT_REAL:
++	neg = (mpfr_sgn (y->value.real) < 0);
++	break;
++
++      default:
++	gfc_internal_error ("Bad type in gfc_simplify_sign");
++    }
++
+   switch (x->ts.type)
+     {
+       case BT_INTEGER:
+ 	mpz_abs (result->value.integer, x->value.integer);
+-	if (mpz_sgn (y->value.integer) < 0)
++	if (neg)
+ 	  mpz_neg (result->value.integer, result->value.integer);
+ 	break;
+ 
+       case BT_REAL:
+-	if (flag_sign_zero)
++	if (flag_sign_zero && y->ts.type == BT_REAL)
+ 	  mpfr_copysign (result->value.real, x->value.real, y->value.real,
+-			GFC_RND_MODE);
++			 GFC_RND_MODE);
+ 	else
+-	  mpfr_setsign (result->value.real, x->value.real,
+-			mpfr_sgn (y->value.real) < 0 ? 1 : 0, GFC_RND_MODE);
++	  mpfr_setsign (result->value.real, x->value.real, neg, GFC_RND_MODE);
+ 	break;
+ 
+       default:
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f
+new file mode 100644
+index 00000000000..25763852139
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_1.f
+@@ -0,0 +1,18 @@
++! { dg-do compile }
++! { dg-options "-fdec" }
++!
++! Test promotion between integers and reals for mod and modulo where
++! A is a constant array and P is zero.
++!
++! Compilation errors are expected
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      program promotion_int_real_array_const
++          real a(2) = mod([12, 34], 0.0)*4    ! { dg-error "shall not be zero" }
++          a = mod([12.0, 34.0], 0)*4          ! { dg-error "shall not be zero" }
++          real b(2) = modulo([12, 34], 0.0)*4 ! { dg-error "shall not be zero" }
++          b = modulo([12.0, 34.0], 0)*4       ! { dg-error "shall not be zero" }
++      end program
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f
+new file mode 100644
+index 00000000000..b78a46054f4
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_2.f
+@@ -0,0 +1,18 @@
++! { dg-do compile }
++! { dg-options "-fdec-promotion" }
++!
++! Test promotion between integers and reals for mod and modulo where
++! A is a constant array and P is zero.
++!
++! Compilation errors are expected
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      program promotion_int_real_array_const
++          real a(2) = mod([12, 34], 0.0)*4    ! { dg-error "shall not be zero" }
++          a = mod([12.0, 34.0], 0)*4          ! { dg-error "shall not be zero" }
++          real b(2) = modulo([12, 34], 0.0)*4 ! { dg-error "shall not be zero" }
++          b = modulo([12.0, 34.0], 0)*4       ! { dg-error "shall not be zero" }
++      end program
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f
+new file mode 100644
+index 00000000000..318ab5db97e
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_array_const_promotion_3.f
+@@ -0,0 +1,18 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-promotion" }
++!
++! Test promotion between integers and reals for mod and modulo where
++! A is a constant array and P is zero.
++!
++! Compilation errors are expected
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      program promotion_int_real_array_const
++          real a(2) = mod([12, 34], 0.0)*4    ! { dg-error "'a' and 'p' arguments of 'mod'" }
++          a = mod([12.0, 34.0], 0)*4          ! { dg-error "'a' and 'p' arguments of 'mod'" }
++          real b(2) = modulo([12, 34], 0.0)*4 ! { dg-error "'a' and 'p' arguments of 'modulo'" }
++          b = modulo([12.0, 34.0], 0)*4       ! { dg-error "'a' and 'p' arguments of 'modulo'" }
++      end program
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f
+new file mode 100644
+index 00000000000..27eb2582bb2
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_1.f
+@@ -0,0 +1,90 @@
++! { dg-do run }
++! { dg-options "-fdec -finit-real=snan" }
++!
++! Test promotion between integers and reals in intrinsic operations.
++! These operations are: mod, modulo, dim, sign, min, max, minloc and
++! maxloc.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      PROGRAM promotion_int_real_const
++        ! array_nan 4th position value is NAN
++        REAL array_nan(4)
++        DATA array_nan(1)/-4.0/
++        DATA array_nan(2)/3.0/
++        DATA array_nan(3)/-2/
++
++        INTEGER m_i/0/
++        REAL m_r/0.0/
++
++        INTEGER md_i/0/
++        REAL md_r/0.0/
++
++        INTEGER d_i/0/
++        REAL d_r/0.0/
++
++        INTEGER s_i/0/
++        REAL s_r/0.0/
++
++        INTEGER mn_i/0/
++        REAL mn_r/0.0/
++
++        INTEGER mx_i/0/
++        REAL mx_r/0.0/
++
++        m_i = MOD(4, 3)
++        if (m_i .ne. 1) STOP 1
++        m_r = MOD(4.0, 3.0)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 2
++        m_r = MOD(4, 3.0)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 3
++        m_r = MOD(4.0, 3)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 4
++
++        md_i = MODULO(4, 3)
++        if (md_i .ne. 1) STOP 5
++        md_r = MODULO(4.0, 3.0)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 6
++        md_r = MODULO(4, 3.0)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 7
++        md_r = MODULO(4.0, 3)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 8
++
++        d_i = DIM(4, 3)
++        if (d_i .ne. 1) STOP 9
++        d_r = DIM(4.0, 3.0)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 10
++        d_r = DIM(4.0, 3)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 11
++        d_r = DIM(3, 4.0)
++        if (abs(d_r) > 1.0D-6) STOP 12
++
++        s_i = SIGN(-4, 3)
++        if (s_i .ne. 4) STOP 13
++        s_r = SIGN(4.0, -3.0)
++        if (abs(s_r - (-4.0)) > 1.0D-6) STOP 14
++        s_r = SIGN(4.0, -3)
++        if (abs(s_r - (-4.0)) > 1.0D-6) STOP 15
++        s_r = SIGN(-4, 3.0)
++        if (abs(s_r - 4.0) > 1.0D-6) STOP 16
++
++        mx_i = MAX(-4, -3, 2, 1)
++        if (mx_i .ne. 2) STOP 17
++        mx_r = MAX(-4.0, -3.0, 2.0, 1.0)
++        if (abs(mx_r - 2.0) > 1.0D-6) STOP 18
++        mx_r = MAX(-4, -3.0, 2.0, 1)
++        if (abs(mx_r - 2.0) > 1.0D-6) STOP 19
++        mx_i = MAXLOC(array_nan, 1)
++        if (mx_i .ne. 2) STOP 20
++
++        mn_i = MIN(-4, -3, 2, 1)
++        if (mn_i .ne. -4) STOP 21
++        mn_r = MIN(-4.0, -3.0, 2.0, 1.0)
++        if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 22
++        mn_r = MIN(-4, -3.0, 2.0, 1)
++        if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 23
++        mn_i = MINLOC(array_nan, 1)
++        if (mn_i .ne. 1) STOP 24
++      END PROGRAM
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f
+new file mode 100644
+index 00000000000..bdd017b7280
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_2.f
+@@ -0,0 +1,90 @@
++! { dg-do run }
++! { dg-options "-fdec-promotion -finit-real=snan" }
++!
++! Test promotion between integers and reals in intrinsic operations.
++! These operations are: mod, modulo, dim, sign, min, max, minloc and
++! maxloc.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      PROGRAM promotion_int_real_const
++        ! array_nan 4th position value is NAN
++        REAL array_nan(4)
++        DATA array_nan(1)/-4.0/
++        DATA array_nan(2)/3.0/
++        DATA array_nan(3)/-2/
++
++        INTEGER m_i/0/
++        REAL m_r/0.0/
++
++        INTEGER md_i/0/
++        REAL md_r/0.0/
++
++        INTEGER d_i/0/
++        REAL d_r/0.0/
++
++        INTEGER s_i/0/
++        REAL s_r/0.0/
++
++        INTEGER mn_i/0/
++        REAL mn_r/0.0/
++
++        INTEGER mx_i/0/
++        REAL mx_r/0.0/
++
++        m_i = MOD(4, 3)
++        if (m_i .ne. 1) STOP 1
++        m_r = MOD(4.0, 3.0)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 2
++        m_r = MOD(4, 3.0)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 3
++        m_r = MOD(4.0, 3)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 4
++
++        md_i = MODULO(4, 3)
++        if (md_i .ne. 1) STOP 5
++        md_r = MODULO(4.0, 3.0)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 6
++        md_r = MODULO(4, 3.0)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 7
++        md_r = MODULO(4.0, 3)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 8
++
++        d_i = DIM(4, 3)
++        if (d_i .ne. 1) STOP 9
++        d_r = DIM(4.0, 3.0)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 10
++        d_r = DIM(4.0, 3)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 11
++        d_r = DIM(3, 4.0)
++        if (abs(d_r) > 1.0D-6) STOP 12
++
++        s_i = SIGN(-4, 3)
++        if (s_i .ne. 4) STOP 13
++        s_r = SIGN(4.0, -3.0)
++        if (abs(s_r - (-4.0)) > 1.0D-6) STOP 14
++        s_r = SIGN(4.0, -3)
++        if (abs(s_r - (-4.0)) > 1.0D-6) STOP 15
++        s_r = SIGN(-4, 3.0)
++        if (abs(s_r - 4.0) > 1.0D-6) STOP 16
++
++        mx_i = MAX(-4, -3, 2, 1)
++        if (mx_i .ne. 2) STOP 17
++        mx_r = MAX(-4.0, -3.0, 2.0, 1.0)
++        if (abs(mx_r - 2.0) > 1.0D-6) STOP 18
++        mx_r = MAX(-4, -3.0, 2.0, 1)
++        if (abs(mx_r - 2.0) > 1.0D-6) STOP 19
++        mx_i = MAXLOC(array_nan, 1)
++        if (mx_i .ne. 2) STOP 20
++
++        mn_i = MIN(-4, -3, 2, 1)
++        if (mn_i .ne. -4) STOP 21
++        mn_r = MIN(-4.0, -3.0, 2.0, 1.0)
++        if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 22
++        mn_r = MIN(-4, -3.0, 2.0, 1)
++        if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 23
++        mn_i = MINLOC(array_nan, 1)
++        if (mn_i .ne. 1) STOP 24
++      END PROGRAM
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f
+new file mode 100644
+index 00000000000..ce90a5667d6
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_const_promotion_3.f
+@@ -0,0 +1,92 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-promotion -finit-real=snan" }
++!
++! Test that there is no promotion between integers and reals in
++! intrinsic operations.
++!
++! These operations are: mod, modulo, dim, sign, min, max, minloc and
++! maxloc.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      PROGRAM promotion_int_real_const
++        ! array_nan 4th position value is NAN
++        REAL array_nan(4)
++        DATA array_nan(1)/-4.0/
++        DATA array_nan(2)/3.0/
++        DATA array_nan(3)/-2/
++
++        INTEGER m_i/0/
++        REAL m_r/0.0/
++
++        INTEGER md_i/0/
++        REAL md_r/0.0/
++
++        INTEGER d_i/0/
++        REAL d_r/0.0/
++
++        INTEGER s_i/0/
++        REAL s_r/0.0/
++
++        INTEGER mn_i/0/
++        REAL mn_r/0.0/
++
++        INTEGER mx_i/0/
++        REAL mx_r/0.0/
++
++        m_i = MOD(4, 3)
++        if (m_i .ne. 1) STOP 1
++        m_r = MOD(4.0, 3.0)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 2
++        m_r = MOD(4, 3.0) ! { dg-error "'a' and 'p' arguments" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 3
++        m_r = MOD(4.0, 3) ! { dg-error "'a' and 'p' arguments" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 4
++
++        md_i = MODULO(4, 3)
++        if (md_i .ne. 1) STOP 5
++        md_r = MODULO(4.0, 3.0)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 6
++        md_r = MODULO(4, 3.0) ! { dg-error "'a' and 'p' arguments" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 7
++        md_r = MODULO(4.0, 3) ! { dg-error "'a' and 'p' arguments" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 8
++
++        d_i = DIM(4, 3)
++        if (d_i .ne. 1) STOP 9
++        d_r = DIM(4.0, 3.0)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 10
++        d_r = DIM(4.0, 3) ! { dg-error "'x' and 'y' arguments" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 11
++        d_r = DIM(3, 4.0) ! { dg-error "'x' and 'y' arguments" }
++        if (abs(d_r) > 1.0D-6) STOP 12
++
++        s_i = SIGN(-4, 3)
++        if (s_i .ne. 4) STOP 13
++        s_r = SIGN(4.0, -3.0)
++        if (abs(s_r - (-4.0)) > 1.0D-6) STOP 14
++        s_r = SIGN(4.0, -3) ! { dg-error "'b' argument" }
++        if (abs(s_r - (-4.0)) > 1.0D-6) STOP 15
++        s_r = SIGN(-4, 3.0) ! { dg-error "'b' argument" }
++        if (abs(s_r - 4.0) > 1.0D-6) STOP 16
++
++        mx_i = MAX(-4, -3, 2, 1)
++        if (mx_i .ne. 2) STOP 17
++        mx_r = MAX(-4.0, -3.0, 2.0, 1.0)
++        if (abs(mx_r - 2.0) > 1.0D-6) STOP 18
++        mx_r = MAX(-4, -3.0, 2.0, 1) ! { dg-error "'a2' argument" }
++        if (abs(mx_r - 2.0) > 1.0D-6) STOP 19
++        mx_i = MAXLOC(array_nan, 1)
++        if (mx_i .ne. 2) STOP 20
++
++        mn_i = MIN(-4, -3, 2, 1)
++        if (mn_i .ne. -4) STOP 21
++        mn_r = MIN(-4.0, -3.0, 2.0, 1.0)
++        if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 22
++        mn_r = MIN(-4, -3.0, 2.0, 1) ! { dg-error "'a2' argument" }
++        if (abs(mn_r - (-4.0)) > 1.0D-6) STOP 23
++        mn_i = MINLOC(array_nan, 1)
++        if (mn_i .ne. 1) STOP 24
++      END PROGRAM
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f
+new file mode 100644
+index 00000000000..5c2cd931a4b
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_1.f
+@@ -0,0 +1,130 @@
++! { dg-do run }
++! { dg-options "-fdec" }
++!
++! Test promotion between integers and reals in intrinsic operations.
++! These operations are: mod, modulo, dim, sign, min, max, minloc and
++! maxloc.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      PROGRAM promotion_int_real
++        REAL l/0.0/
++        INTEGER a_i/4/
++        INTEGER*4 a2_i/4/
++        INTEGER b_i/3/
++        INTEGER*8 b2_i/3/
++        INTEGER x_i/2/
++        INTEGER y_i/1/
++        REAL a_r/4.0/
++        REAL*4 a2_r/4.0/
++        REAL b_r/3.0/
++        REAL*8 b2_r/3.0/
++        REAL x_r/2.0/
++        REAL y_r/1.0/
++
++        REAL array_nan(4)
++        DATA array_nan(1)/-4.0/
++        DATA array_nan(2)/3.0/
++        DATA array_nan(3)/-2/
++
++        INTEGER m_i/0/
++        REAL m_r/0.0/
++
++        INTEGER md_i/0/
++        REAL md_r/0.0/
++
++        INTEGER d_i/0/
++        REAL d_r/0.0/
++
++        INTEGER s_i/0/
++        REAL s_r/0.0/
++
++        INTEGER mn_i/0/
++        REAL mn_r/0.0/
++
++        INTEGER mx_i/0/
++        REAL mx_r/0.0/
++
++        ! array_nan 4th position value is NAN
++        array_nan(4) = 0/l
++
++        m_i = MOD(a_i, b_i)
++        if (m_i .ne. 1) STOP 1
++        m_i = MOD(a2_i, b2_i)
++        if (m_i .ne. 1) STOP 2
++        m_r = MOD(a_r, b_r)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 3
++        m_r = MOD(a2_r, b2_r)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 4
++        m_r = MOD(a_i, b_r)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 5
++        m_r = MOD(a_r, b_i)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 6
++
++        md_i = MODULO(a_i, b_i)
++        if (md_i .ne. 1) STOP 7
++        md_i = MODULO(a2_i, b2_i)
++        if (md_i .ne. 1) STOP 8
++        md_r = MODULO(a_r, b_r)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 9
++        md_r = MODULO(a2_r, b2_r)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 10
++        md_r = MODULO(a_i, b_r)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 11
++        md_r = MODULO(a_r, b_i)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 12
++
++        d_i = DIM(a_i, b_i)
++        if (d_i .ne. 1) STOP 13
++        d_i = DIM(a2_i, b2_i)
++        if (d_i .ne. 1) STOP 14
++        d_r = DIM(a_r, b_r)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 15
++        d_r = DIM(a2_r, b2_r)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 16
++        d_r = DIM(a_r, b_i)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 17
++        d_r = DIM(b_i, a_r)
++        if (abs(d_r) > 1.0D-6) STOP 18
++
++        s_i = SIGN(-a_i, b_i)
++        if (s_i .ne. 4) STOP 19
++        s_i = SIGN(-a2_i, b2_i)
++        if (s_i .ne. 4) STOP 20
++        s_r = SIGN(a_r, -b_r)
++        if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21
++        s_r = SIGN(a2_r, -b2_r)
++        if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22
++        s_r = SIGN(a_r, -b_i)
++        if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23
++        s_r = SIGN(-a_i, b_r)
++        if (abs(s_r - a_r) > 1.0D-6) STOP 24
++
++        mx_i = MAX(-a_i, -b_i, x_i, y_i)
++        if (mx_i .ne. x_i) STOP 25
++        mx_i = MAX(-a2_i, -b2_i, x_i, y_i)
++        if (mx_i .ne. x_i) STOP 26
++        mx_r = MAX(-a_r, -b_r, x_r, y_r)
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 27
++        mx_r = MAX(-a_r, -b_r, x_r, y_r)
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 28
++        mx_r = MAX(-a_i, -b_r, x_r, y_i)
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 29
++        mx_i = MAXLOC(array_nan, 1)
++        if (mx_i .ne. 2) STOP 30
++
++        mn_i = MIN(-a_i, -b_i, x_i, y_i)
++        if (mn_i .ne. -a_i) STOP 31
++        mn_i = MIN(-a2_i, -b2_i, x_i, y_i)
++        if (mn_i .ne. -a2_i) STOP 32
++        mn_r = MIN(-a_r, -b_r, x_r, y_r)
++        if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33
++        mn_r = MIN(-a2_r, -b2_r, x_r, y_r)
++        if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34
++        mn_r = MIN(-a_i, -b_r, x_r, y_i)
++        if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35
++        mn_i = MINLOC(array_nan, 1)
++        if (mn_i .ne. 1) STOP 36
++      END PROGRAM
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f
+new file mode 100644
+index 00000000000..d64d468f7d1
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_2.f
+@@ -0,0 +1,130 @@
++! { dg-do run }
++! { dg-options "-fdec-promotion" }
++!
++! Test promotion between integers and reals in intrinsic operations.
++! These operations are: mod, modulo, dim, sign, min, max, minloc and
++! maxloc.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      PROGRAM promotion_int_real
++        REAL l/0.0/
++        INTEGER a_i/4/
++        INTEGER*4 a2_i/4/
++        INTEGER b_i/3/
++        INTEGER*8 b2_i/3/
++        INTEGER x_i/2/
++        INTEGER y_i/1/
++        REAL a_r/4.0/
++        REAL*4 a2_r/4.0/
++        REAL b_r/3.0/
++        REAL*8 b2_r/3.0/
++        REAL x_r/2.0/
++        REAL y_r/1.0/
++
++        REAL array_nan(4)
++        DATA array_nan(1)/-4.0/
++        DATA array_nan(2)/3.0/
++        DATA array_nan(3)/-2/
++
++        INTEGER m_i/0/
++        REAL m_r/0.0/
++
++        INTEGER md_i/0/
++        REAL md_r/0.0/
++
++        INTEGER d_i/0/
++        REAL d_r/0.0/
++
++        INTEGER s_i/0/
++        REAL s_r/0.0/
++
++        INTEGER mn_i/0/
++        REAL mn_r/0.0/
++
++        INTEGER mx_i/0/
++        REAL mx_r/0.0/
++
++        ! array_nan 4th position value is NAN
++        array_nan(4) = 0/l
++
++        m_i = MOD(a_i, b_i)
++        if (m_i .ne. 1) STOP 1
++        m_i = MOD(a2_i, b2_i)
++        if (m_i .ne. 1) STOP 2
++        m_r = MOD(a_r, b_r)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 3
++        m_r = MOD(a2_r, b2_r)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 4
++        m_r = MOD(a_i, b_r)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 5
++        m_r = MOD(a_r, b_i)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 6
++
++        md_i = MODULO(a_i, b_i)
++        if (md_i .ne. 1) STOP 7
++        md_i = MODULO(a2_i, b2_i)
++        if (md_i .ne. 1) STOP 8
++        md_r = MODULO(a_r, b_r)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 9
++        md_r = MODULO(a2_r, b2_r)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 10
++        md_r = MODULO(a_i, b_r)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 11
++        md_r = MODULO(a_r, b_i)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 12
++
++        d_i = DIM(a_i, b_i)
++        if (d_i .ne. 1) STOP 13
++        d_i = DIM(a2_i, b2_i)
++        if (d_i .ne. 1) STOP 14
++        d_r = DIM(a_r, b_r)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 15
++        d_r = DIM(a2_r, b2_r)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 16
++        d_r = DIM(a_r, b_i)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 17
++        d_r = DIM(b_i, a_r)
++        if (abs(d_r) > 1.0D-6) STOP 18
++
++        s_i = SIGN(-a_i, b_i)
++        if (s_i .ne. 4) STOP 19
++        s_i = SIGN(-a2_i, b2_i)
++        if (s_i .ne. 4) STOP 20
++        s_r = SIGN(a_r, -b_r)
++        if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21
++        s_r = SIGN(a2_r, -b2_r)
++        if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22
++        s_r = SIGN(a_r, -b_i)
++        if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23
++        s_r = SIGN(-a_i, b_r)
++        if (abs(s_r - a_r) > 1.0D-6) STOP 24
++
++        mx_i = MAX(-a_i, -b_i, x_i, y_i)
++        if (mx_i .ne. x_i) STOP 25
++        mx_i = MAX(-a2_i, -b2_i, x_i, y_i)
++        if (mx_i .ne. x_i) STOP 26
++        mx_r = MAX(-a_r, -b_r, x_r, y_r)
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 27
++        mx_r = MAX(-a_r, -b_r, x_r, y_r)
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 28
++        mx_r = MAX(-a_i, -b_r, x_r, y_i)
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 29
++        mx_i = MAXLOC(array_nan, 1)
++        if (mx_i .ne. 2) STOP 30
++
++        mn_i = MIN(-a_i, -b_i, x_i, y_i)
++        if (mn_i .ne. -a_i) STOP 31
++        mn_i = MIN(-a2_i, -b2_i, x_i, y_i)
++        if (mn_i .ne. -a2_i) STOP 32
++        mn_r = MIN(-a_r, -b_r, x_r, y_r)
++        if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33
++        mn_r = MIN(-a2_r, -b2_r, x_r, y_r)
++        if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34
++        mn_r = MIN(-a_i, -b_r, x_r, y_i)
++        if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35
++        mn_i = MINLOC(array_nan, 1)
++        if (mn_i .ne. 1) STOP 36
++      END PROGRAM
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f
+new file mode 100644
+index 00000000000..0708b666633
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_3.f
+@@ -0,0 +1,130 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-promotion" }
++!
++! Test promotion between integers and reals in intrinsic operations.
++! These operations are: mod, modulo, dim, sign, min, max, minloc and
++! maxloc.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      PROGRAM promotion_int_real
++        REAL l/0.0/
++        INTEGER a_i/4/
++        INTEGER*4 a2_i/4/
++        INTEGER b_i/3/
++        INTEGER*8 b2_i/3/
++        INTEGER x_i/2/
++        INTEGER y_i/1/
++        REAL a_r/4.0/
++        REAL*4 a2_r/4.0/
++        REAL b_r/3.0/
++        REAL*8 b2_r/3.0/
++        REAL x_r/2.0/
++        REAL y_r/1.0/
++
++        REAL array_nan(4)
++        DATA array_nan(1)/-4.0/
++        DATA array_nan(2)/3.0/
++        DATA array_nan(3)/-2/
++
++        INTEGER m_i/0/
++        REAL m_r/0.0/
++
++        INTEGER md_i/0/
++        REAL md_r/0.0/
++
++        INTEGER d_i/0/
++        REAL d_r/0.0/
++
++        INTEGER s_i/0/
++        REAL s_r/0.0/
++
++        INTEGER mn_i/0/
++        REAL mn_r/0.0/
++
++        INTEGER mx_i/0/
++        REAL mx_r/0.0/
++
++        ! array_nan 4th position value is NAN
++        array_nan(4) = 0/l
++
++        m_i = MOD(a_i, b_i)
++        if (m_i .ne. 1) STOP 1
++        m_i = MOD(a2_i, b2_i)
++        if (m_i .ne. 1) STOP 2
++        m_r = MOD(a_r, b_r)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 3
++        m_r = MOD(a2_r, b2_r)
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 4
++        m_r = MOD(a_i, b_r) ! { dg-error "'a' and 'p' arguments" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 5
++        m_r = MOD(a_r, b_i) ! { dg-error "'a' and 'p' arguments" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 6
++
++        md_i = MODULO(a_i, b_i)
++        if (md_i .ne. 1) STOP 7
++        md_i = MODULO(a2_i, b2_i)
++        if (md_i .ne. 1) STOP 8
++        md_r = MODULO(a_r, b_r)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 9
++        md_r = MODULO(a2_r, b2_r)
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 10
++        md_r = MODULO(a_i, b_r) ! { dg-error "'a' and 'p' arguments" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 11
++        md_r = MODULO(a_r, b_i) ! { dg-error "'a' and 'p' arguments" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 12
++
++        d_i = DIM(a_i, b_i)
++        if (d_i .ne. 1) STOP 13
++        d_i = DIM(a2_i, b2_i)
++        if (d_i .ne. 1) STOP 14
++        d_r = DIM(a_r, b_r)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 15
++        d_r = DIM(a2_r, b2_r)
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 16
++        d_r = DIM(a_r, b_i) ! { dg-error "'x' and 'y' arguments" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 17
++        d_r = DIM(b_i, a_r) ! { dg-error "'x' and 'y' arguments" }
++        if (abs(d_r) > 1.0D-6) STOP 18
++
++        s_i = SIGN(-a_i, b_i)
++        if (s_i .ne. 4) STOP 19
++        s_i = SIGN(-a2_i, b2_i) ! { dg-error "'b' argument" }
++        if (s_i .ne. 4) STOP 20
++        s_r = SIGN(a_r, -b_r)
++        if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21
++        s_r = SIGN(a2_r, -b2_r) ! { dg-error "'b' argument" }
++        if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22
++        s_r = SIGN(a_r, -b_i) ! { dg-error "'b' argument" }
++        if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23
++        s_r = SIGN(-a_i, b_r) ! { dg-error "'b' argument" }
++        if (abs(s_r - a_r) > 1.0D-6) STOP 24
++
++        mx_i = MAX(-a_i, -b_i, x_i, y_i)
++        if (mx_i .ne. x_i) STOP 25
++        mx_i = MAX(-a2_i, -b2_i, x_i, y_i)
++        if (mx_i .ne. x_i) STOP 26
++        mx_r = MAX(-a_r, -b_r, x_r, y_r)
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 27
++        mx_r = MAX(-a_r, -b_r, x_r, y_r)
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 28
++        mx_r = MAX(-a_i, -b_r, x_r, y_i) ! { dg-error "'a2' argument" }
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 29
++        mx_i = MAXLOC(array_nan, 1)
++        if (mx_i .ne. 2) STOP 30
++
++        mn_i = MIN(-a_i, -b_i, x_i, y_i)
++        if (mn_i .ne. -a_i) STOP 31
++        mn_i = MIN(-a2_i, -b2_i, x_i, y_i)
++        if (mn_i .ne. -a2_i) STOP 32
++        mn_r = MIN(-a_r, -b_r, x_r, y_r)
++        if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33
++        mn_r = MIN(-a2_r, -b2_r, x_r, y_r)
++        if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34
++        mn_r = MIN(-a_i, -b_r, x_r, y_i) ! { dg-error "'a2' argument" }
++        if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35
++        mn_i = MINLOC(array_nan, 1)
++        if (mn_i .ne. 1) STOP 36
++      END PROGRAM
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f
+new file mode 100644
+index 00000000000..efa4f236410
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_4.f
+@@ -0,0 +1,118 @@
++! { dg-do compile }
++! { dg-options "-fdec" }
++!
++! Test promotion between integers and reals in intrinsic operations.
++! These operations are: mod, modulo, dim, sign, min, max, minloc and
++! maxloc.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      PROGRAM promotion_int_real
++        REAL l/0.0/
++        LOGICAL a_l
++        LOGICAL*4 a2_l
++        LOGICAL b_l
++        LOGICAL*8 b2_l
++        LOGICAL x_l
++        LOGICAL y_l
++        CHARACTER a_c
++        CHARACTER*4 a2_c
++        CHARACTER b_c
++        CHARACTER*8 b2_c
++        CHARACTER x_c
++        CHARACTER y_c
++
++        INTEGER m_i/0/
++        REAL m_r/0.0/
++
++        INTEGER md_i/0/
++        REAL md_r/0.0/
++
++        INTEGER d_i/0/
++        REAL d_r/0.0/
++
++        INTEGER s_i/0/
++        REAL s_r/0.0/
++
++        INTEGER mn_i/0/
++        REAL mn_r/0.0/
++
++        INTEGER mx_i/0/
++        REAL mx_r/0.0/
++
++        m_i = MOD(a_l, b_l)                     ! { dg-error "" }
++        if (m_i .ne. 1) STOP 1
++        m_i = MOD(a2_l, b2_l)                   ! { dg-error "" }
++        if (m_i .ne. 1) STOP 2
++        m_r = MOD(a_c, b_c)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 3
++        m_r = MOD(a2_c, b2_c)                   ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 4
++        m_r = MOD(a_l, b_c)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 5
++        m_r = MOD(a_c, b_l)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 6
++
++        md_i = MODULO(a_l, b_l)                 ! { dg-error "" }
++        if (md_i .ne. 1) STOP 7
++        md_i = MODULO(a2_l, b2_l)               ! { dg-error "" }
++        if (md_i .ne. 1) STOP 8
++        md_r = MODULO(a_c, b_c)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 9
++        md_r = MODULO(a2_c, b2_c)               ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 10
++        md_r = MODULO(a_l, b_c)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 11
++        md_r = MODULO(a_c, b_l)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 12
++
++        d_i = DIM(a_l, b_l)                     ! { dg-error "" }
++        if (d_i .ne. 1) STOP 13
++        d_i = DIM(a2_l, b2_l)                   ! { dg-error "" }
++        if (d_i .ne. 1) STOP 14
++        d_r = DIM(a_c, b_c)                     ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 15
++        d_r = DIM(a2_c, b2_c)                   ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 16
++        d_r = DIM(a_c, b_l)                     ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 17
++        d_r = DIM(b_l, a_c)                     ! { dg-error "" }
++        if (abs(d_r) > 1.0D-6) STOP 18
++
++        s_i = SIGN(-a_l, b_l)                   ! { dg-error "" }
++        if (s_i .ne. 4) STOP 19
++        s_i = SIGN(-a2_l, b2_l)                 ! { dg-error "" }
++        if (s_i .ne. 4) STOP 20
++        s_r = SIGN(a_c, -b_c)                   ! { dg-error "" }
++        if (abs(s_r - (-a_c)) > 1.0D-6) STOP 21 ! { dg-error "" }
++        s_r = SIGN(a2_c, -b2_c)                 ! { dg-error "" }
++        if (abs(s_r - (-a2_c)) > 1.0D-6) STOP 22 ! { dg-error "" }
++        s_r = SIGN(a_c, -b_l)                   ! { dg-error "" }
++        if (abs(s_r - (-a_c)) > 1.0D-6) STOP 23 ! { dg-error "" }
++        s_r = SIGN(-a_l, b_c)                   ! { dg-error "" }
++        if (abs(s_r - a_c) > 1.0D-6) STOP 24    ! { dg-error "" }
++
++        mx_i = MAX(-a_l, -b_l, x_l, y_l)        ! { dg-error "" }
++        if (mx_i .ne. x_l) STOP 25              ! { dg-error "" }
++        mx_i = MAX(-a2_l, -b2_l, x_l, y_l)      ! { dg-error "" }
++        if (mx_i .ne. x_l) STOP 26              ! { dg-error "" }
++        mx_r = MAX(-a_c, -b_c, x_c, y_c)        ! { dg-error "" }
++        if (abs(mx_r - x_c) > 1.0D-6) STOP 27   ! { dg-error "" }
++        mx_r = MAX(-a_c, -b_c, x_c, y_c)        ! { dg-error "" }
++        if (abs(mx_r - x_c) > 1.0D-6) STOP 28   ! { dg-error "" }
++        mx_r = MAX(-a_l, -b_c, x_c, y_l)        ! { dg-error "" }
++        if (abs(mx_r - x_c) > 1.0D-6) STOP 29   ! { dg-error "" }
++
++        mn_i = MIN(-a_l, -b_l, x_l, y_l)        ! { dg-error "" }
++        if (mn_i .ne. -a_l) STOP 31             ! { dg-error "" }
++        mn_i = MIN(-a2_l, -b2_l, x_l, y_l)      ! { dg-error "" }
++        if (mn_i .ne. -a2_l) STOP 32            ! { dg-error "" }
++        mn_r = MIN(-a_c, -b_c, x_c, y_c)        ! { dg-error "" }
++        if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 33 ! { dg-error "" }
++        mn_r = MIN(-a2_c, -b2_c, x_c, y_c)      ! { dg-error "" }
++        if (abs(mn_r - (-a2_c)) > 1.0D-6) STOP 34 ! { dg-error "" }
++        mn_r = MIN(-a_l, -b_c, x_c, y_l)        ! { dg-error "" }
++        if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 35 ! { dg-error "" }
++      END PROGRAM
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f
+new file mode 100644
+index 00000000000..d023af5086d
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_5.f
+@@ -0,0 +1,118 @@
++! { dg-do compile }
++! { dg-options "-fdec-promotion" }
++!
++! Test promotion between integers and reals in intrinsic operations.
++! These operations are: mod, modulo, dim, sign, min, max, minloc and
++! maxloc.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      PROGRAM promotion_int_real
++        REAL l/0.0/
++        LOGICAL a_l
++        LOGICAL*4 a2_l
++        LOGICAL b_l
++        LOGICAL*8 b2_l
++        LOGICAL x_l
++        LOGICAL y_l
++        CHARACTER a_c
++        CHARACTER*4 a2_c
++        CHARACTER b_c
++        CHARACTER*8 b2_c
++        CHARACTER x_c
++        CHARACTER y_c
++
++        INTEGER m_i/0/
++        REAL m_r/0.0/
++
++        INTEGER md_i/0/
++        REAL md_r/0.0/
++
++        INTEGER d_i/0/
++        REAL d_r/0.0/
++
++        INTEGER s_i/0/
++        REAL s_r/0.0/
++
++        INTEGER mn_i/0/
++        REAL mn_r/0.0/
++
++        INTEGER mx_i/0/
++        REAL mx_r/0.0/
++
++        m_i = MOD(a_l, b_l)                     ! { dg-error "" }
++        if (m_i .ne. 1) STOP 1
++        m_i = MOD(a2_l, b2_l)                   ! { dg-error "" }
++        if (m_i .ne. 1) STOP 2
++        m_r = MOD(a_c, b_c)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 3
++        m_r = MOD(a2_c, b2_c)                   ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 4
++        m_r = MOD(a_l, b_c)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 5
++        m_r = MOD(a_c, b_l)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 6
++
++        md_i = MODULO(a_l, b_l)                 ! { dg-error "" }
++        if (md_i .ne. 1) STOP 7
++        md_i = MODULO(a2_l, b2_l)               ! { dg-error "" }
++        if (md_i .ne. 1) STOP 8
++        md_r = MODULO(a_c, b_c)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 9
++        md_r = MODULO(a2_c, b2_c)               ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 10
++        md_r = MODULO(a_l, b_c)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 11
++        md_r = MODULO(a_c, b_l)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 12
++
++        d_i = DIM(a_l, b_l)                     ! { dg-error "" }
++        if (d_i .ne. 1) STOP 13
++        d_i = DIM(a2_l, b2_l)                   ! { dg-error "" }
++        if (d_i .ne. 1) STOP 14
++        d_r = DIM(a_c, b_c)                     ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 15
++        d_r = DIM(a2_c, b2_c)                   ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 16
++        d_r = DIM(a_c, b_l)                     ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 17
++        d_r = DIM(b_l, a_c)                     ! { dg-error "" }
++        if (abs(d_r) > 1.0D-6) STOP 18
++
++        s_i = SIGN(-a_l, b_l)                   ! { dg-error "" }
++        if (s_i .ne. 4) STOP 19
++        s_i = SIGN(-a2_l, b2_l)                 ! { dg-error "" }
++        if (s_i .ne. 4) STOP 20
++        s_r = SIGN(a_c, -b_c)                   ! { dg-error "" }
++        if (abs(s_r - (-a_c)) > 1.0D-6) STOP 21 ! { dg-error "" }
++        s_r = SIGN(a2_c, -b2_c)                 ! { dg-error "" }
++        if (abs(s_r - (-a2_c)) > 1.0D-6) STOP 22 ! { dg-error "" }
++        s_r = SIGN(a_c, -b_l)                   ! { dg-error "" }
++        if (abs(s_r - (-a_c)) > 1.0D-6) STOP 23 ! { dg-error "" }
++        s_r = SIGN(-a_l, b_c)                   ! { dg-error "" }
++        if (abs(s_r - a_c) > 1.0D-6) STOP 24    ! { dg-error "" }
++
++        mx_i = MAX(-a_l, -b_l, x_l, y_l)        ! { dg-error "" }
++        if (mx_i .ne. x_l) STOP 25              ! { dg-error "" }
++        mx_i = MAX(-a2_l, -b2_l, x_l, y_l)      ! { dg-error "" }
++        if (mx_i .ne. x_l) STOP 26              ! { dg-error "" }
++        mx_r = MAX(-a_c, -b_c, x_c, y_c)        ! { dg-error "" }
++        if (abs(mx_r - x_c) > 1.0D-6) STOP 27   ! { dg-error "" }
++        mx_r = MAX(-a_c, -b_c, x_c, y_c)        ! { dg-error "" }
++        if (abs(mx_r - x_c) > 1.0D-6) STOP 28   ! { dg-error "" }
++        mx_r = MAX(-a_l, -b_c, x_c, y_l)        ! { dg-error "" }
++        if (abs(mx_r - x_c) > 1.0D-6) STOP 29   ! { dg-error "" }
++
++        mn_i = MIN(-a_l, -b_l, x_l, y_l)        ! { dg-error "" }
++        if (mn_i .ne. -a_l) STOP 31             ! { dg-error "" }
++        mn_i = MIN(-a2_l, -b2_l, x_l, y_l)      ! { dg-error "" }
++        if (mn_i .ne. -a2_l) STOP 32            ! { dg-error "" }
++        mn_r = MIN(-a_c, -b_c, x_c, y_c)        ! { dg-error "" }
++        if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 33 ! { dg-error "" }
++        mn_r = MIN(-a2_c, -b2_c, x_c, y_c)      ! { dg-error "" }
++        if (abs(mn_r - (-a2_c)) > 1.0D-6) STOP 34 ! { dg-error "" }
++        mn_r = MIN(-a_l, -b_c, x_c, y_l)        ! { dg-error "" }
++        if (abs(mn_r - (-a_c)) > 1.0D-6) STOP 35 ! { dg-error "" }
++      END PROGRAM
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f
+new file mode 100644
+index 00000000000..00f8fb88f1b
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_6.f
+@@ -0,0 +1,118 @@
++! { dg-do compile }
++! { dg-options "-fdec" }
++!
++! Test promotion between integers and reals in intrinsic operations.
++! These operations are: mod, modulo, dim, sign, min, max, minloc and
++! maxloc.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      PROGRAM promotion_int_real
++        REAL l/0.0/
++        INTEGER a_i/4/
++        INTEGER*4 a2_i/4/
++        CHARACTER b_c
++        CHARACTER*8 b2_c
++        INTEGER x_i/2/
++        CHARACTER y_c
++        REAL a_r/4.0/
++        REAL*4 a2_r/4.0/
++        LOGICAL b_l
++        LOGICAL*8 b2_l
++        REAL x_r/2.0/
++        LOGICAL y_l
++
++        INTEGER m_i/0/
++        REAL m_r/0.0/
++
++        INTEGER md_i/0/
++        REAL md_r/0.0/
++
++        INTEGER d_i/0/
++        REAL d_r/0.0/
++
++        INTEGER s_i/0/
++        REAL s_r/0.0/
++
++        INTEGER mn_i/0/
++        REAL mn_r/0.0/
++
++        INTEGER mx_i/0/
++        REAL mx_r/0.0/
++
++        m_i = MOD(a_i, b_c)                     ! { dg-error "" }
++        if (m_i .ne. 1) STOP 1
++        m_i = MOD(a2_i, b2_c)                   ! { dg-error "" }
++        if (m_i .ne. 1) STOP 2
++        m_r = MOD(a_r, b_l)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 3
++        m_r = MOD(a2_r, b2_l)                   ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 4
++        m_r = MOD(a_i, b_l)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 5
++        m_r = MOD(a_r, b_c)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 6
++
++        md_i = MODULO(a_i, b_c)                 ! { dg-error "" }
++        if (md_i .ne. 1) STOP 7
++        md_i = MODULO(a2_i, b2_c)               ! { dg-error "" }
++        if (md_i .ne. 1) STOP 8
++        md_r = MODULO(a_r, b_l)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 9
++        md_r = MODULO(a2_r, b2_l)               ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 10
++        md_r = MODULO(a_i, b_l)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 11
++        md_r = MODULO(a_r, b_c)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 12
++
++        d_i = DIM(a_i, b_c)                     ! { dg-error "" }
++        if (d_i .ne. 1) STOP 13
++        d_i = DIM(a2_i, b2_c)                   ! { dg-error "" }
++        if (d_i .ne. 1) STOP 14
++        d_r = DIM(a_r, b_l)                     ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 15
++        d_r = DIM(a2_r, b2_l)                   ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 16
++        d_r = DIM(a_r, b_c)                     ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 17
++        d_r = DIM(b_c, a_r)                     ! { dg-error "" }
++        if (abs(d_r) > 1.0D-6) STOP 18
++
++        s_i = SIGN(-a_i, b_c)                   ! { dg-error "" }
++        if (s_i .ne. 4) STOP 19
++        s_i = SIGN(-a2_i, b2_c)                 ! { dg-error "" }
++        if (s_i .ne. 4) STOP 20
++        s_r = SIGN(a_r, -b_l)                   ! { dg-error "" }
++        if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21
++        s_r = SIGN(a2_r, -b2_l)                 ! { dg-error "" }
++        if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22
++        s_r = SIGN(a_r, -b_c)                   ! { dg-error "" }
++        if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23
++        s_r = SIGN(-a_i, b_l)                   ! { dg-error "" }
++        if (abs(s_r - a_r) > 1.0D-6) STOP 24
++
++        mx_i = MAX(-a_i, -b_c, x_i, y_c)        ! { dg-error "" }
++        if (mx_i .ne. x_i) STOP 25
++        mx_i = MAX(-a2_i, -b2_c, x_i, y_c)      ! { dg-error "" }
++        if (mx_i .ne. x_i) STOP 26
++        mx_r = MAX(-a_r, -b_l, x_r, y_l)        ! { dg-error "" }
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 27
++        mx_r = MAX(-a_r, -b_l, x_r, y_l)        ! { dg-error "" }
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 28
++        mx_r = MAX(-a_i, -b_l, x_r, y_c)        ! { dg-error "" }
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 29
++
++        mn_i = MIN(-a_i, -b_c, x_i, y_c)        ! { dg-error "" }
++        if (mn_i .ne. -a_i) STOP 31
++        mn_i = MIN(-a2_i, -b2_c, x_i, y_c)      ! { dg-error "" }
++        if (mn_i .ne. -a2_i) STOP 32
++        mn_r = MIN(-a_r, -b_l, x_r, y_l)        ! { dg-error "" }
++        if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33
++        mn_r = MIN(-a2_r, -b2_l, x_r, y_l)      ! { dg-error "" }
++        if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34
++        mn_r = MIN(-a_i, -b_l, x_r, y_c)        ! { dg-error "" }
++        if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35
++      END PROGRAM
+diff --git a/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f
+new file mode 100644
+index 00000000000..1d4150d81c0
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_intrinsic_int_real_promotion_7.f
+@@ -0,0 +1,118 @@
++! { dg-do compile }
++! { dg-options "-fdec-promotion" }
++!
++! Test promotion between integers and reals in intrinsic operations.
++! These operations are: mod, modulo, dim, sign, min, max, minloc and
++! maxloc.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++!             and Jeff Law <law@redhat.com>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      PROGRAM promotion_int_real
++        REAL l/0.0/
++        INTEGER a_i/4/
++        INTEGER*4 a2_i/4/
++        CHARACTER b_c
++        CHARACTER*8 b2_c
++        INTEGER x_i/2/
++        CHARACTER y_c
++        REAL a_r/4.0/
++        REAL*4 a2_r/4.0/
++        LOGICAL b_l
++        LOGICAL*8 b2_l
++        REAL x_r/2.0/
++        LOGICAL y_l
++
++        INTEGER m_i/0/
++        REAL m_r/0.0/
++
++        INTEGER md_i/0/
++        REAL md_r/0.0/
++
++        INTEGER d_i/0/
++        REAL d_r/0.0/
++
++        INTEGER s_i/0/
++        REAL s_r/0.0/
++
++        INTEGER mn_i/0/
++        REAL mn_r/0.0/
++
++        INTEGER mx_i/0/
++        REAL mx_r/0.0/
++
++        m_i = MOD(a_i, b_c)                     ! { dg-error "" }
++        if (m_i .ne. 1) STOP 1
++        m_i = MOD(a2_i, b2_c)                   ! { dg-error "" }
++        if (m_i .ne. 1) STOP 2
++        m_r = MOD(a_r, b_l)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 3
++        m_r = MOD(a2_r, b2_l)                   ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 4
++        m_r = MOD(a_i, b_l)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 5
++        m_r = MOD(a_r, b_c)                     ! { dg-error "" }
++        if (abs(m_r - 1.0) > 1.0D-6) STOP 6
++
++        md_i = MODULO(a_i, b_c)                 ! { dg-error "" }
++        if (md_i .ne. 1) STOP 7
++        md_i = MODULO(a2_i, b2_c)               ! { dg-error "" }
++        if (md_i .ne. 1) STOP 8
++        md_r = MODULO(a_r, b_l)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 9
++        md_r = MODULO(a2_r, b2_l)               ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 10
++        md_r = MODULO(a_i, b_l)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 11
++        md_r = MODULO(a_r, b_c)                 ! { dg-error "" }
++        if (abs(md_r - 1.0) > 1.0D-6) STOP 12
++
++        d_i = DIM(a_i, b_c)                     ! { dg-error "" }
++        if (d_i .ne. 1) STOP 13
++        d_i = DIM(a2_i, b2_c)                   ! { dg-error "" }
++        if (d_i .ne. 1) STOP 14
++        d_r = DIM(a_r, b_l)                     ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 15
++        d_r = DIM(a2_r, b2_l)                   ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 16
++        d_r = DIM(a_r, b_c)                     ! { dg-error "" }
++        if (abs(d_r - 1.0) > 1.0D-6) STOP 17
++        d_r = DIM(b_c, a_r)                     ! { dg-error "" }
++        if (abs(d_r) > 1.0D-6) STOP 18
++
++        s_i = SIGN(-a_i, b_c)                   ! { dg-error "" }
++        if (s_i .ne. 4) STOP 19
++        s_i = SIGN(-a2_i, b2_c)                 ! { dg-error "" }
++        if (s_i .ne. 4) STOP 20
++        s_r = SIGN(a_r, -b_l)                   ! { dg-error "" }
++        if (abs(s_r - (-a_r)) > 1.0D-6) STOP 21
++        s_r = SIGN(a2_r, -b2_l)                 ! { dg-error "" }
++        if (abs(s_r - (-a2_r)) > 1.0D-6) STOP 22
++        s_r = SIGN(a_r, -b_c)                   ! { dg-error "" }
++        if (abs(s_r - (-a_r)) > 1.0D-6) STOP 23
++        s_r = SIGN(-a_i, b_l)                   ! { dg-error "" }
++        if (abs(s_r - a_r) > 1.0D-6) STOP 24
++
++        mx_i = MAX(-a_i, -b_c, x_i, y_c)        ! { dg-error "" }
++        if (mx_i .ne. x_i) STOP 25
++        mx_i = MAX(-a2_i, -b2_c, x_i, y_c)      ! { dg-error "" }
++        if (mx_i .ne. x_i) STOP 26
++        mx_r = MAX(-a_r, -b_l, x_r, y_l)        ! { dg-error "" }
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 27
++        mx_r = MAX(-a_r, -b_l, x_r, y_l)        ! { dg-error "" }
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 28
++        mx_r = MAX(-a_i, -b_l, x_r, y_c)        ! { dg-error "" }
++        if (abs(mx_r - x_r) > 1.0D-6) STOP 29
++
++        mn_i = MIN(-a_i, -b_c, x_i, y_c)        ! { dg-error "" }
++        if (mn_i .ne. -a_i) STOP 31
++        mn_i = MIN(-a2_i, -b2_c, x_i, y_c)      ! { dg-error "" }
++        if (mn_i .ne. -a2_i) STOP 32
++        mn_r = MIN(-a_r, -b_l, x_r, y_l)        ! { dg-error "" }
++        if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 33
++        mn_r = MIN(-a2_r, -b2_l, x_r, y_l)      ! { dg-error "" }
++        if (abs(mn_r - (-a2_r)) > 1.0D-6) STOP 34
++        mn_r = MIN(-a_i, -b_l, x_r, y_c)        ! { dg-error "" }
++        if (abs(mn_r - (-a_r)) > 1.0D-6) STOP 35
++      END PROGRAM
+diff --git a/gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f b/gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f
+new file mode 100644
+index 00000000000..435bf98350c
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_kind_promotion-1.f
+@@ -0,0 +1,40 @@
++!{ dg-do run }
++!{ dg-options "-fdec" }
++!
++! integer types of a smaller kind than expected should be
++! accepted by type specific intrinsic functions
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      program test_small_type_promtion
++        implicit none
++        integer(1) :: a = 1
++        integer :: i
++        if (iiabs(-9_1).ne.9) stop 1
++        if (iabs(-9_1).ne.9) stop 2
++        if (iabs(-9_2).ne.9) stop 3
++        if (jiabs(-9_1).ne.9) stop 4
++        if (jiabs(-9_2).ne.9) stop 5
++        if (iishft(1_1, 2).ne.4) stop 6
++        if (jishft(1_1, 2).ne.4) stop 7
++        if (jishft(1_2, 2).ne.4) stop 8
++        if (kishft(1_1, 2).ne.4) stop 9
++        if (kishft(1_2, 2).ne.4) stop 10
++        if (kishft(1_4, 2).ne.4) stop 11
++        if (imod(17_1, 3).ne.2) stop 12
++        if (jmod(17_1, 3).ne.2) stop 13
++        if (jmod(17_2, 3).ne.2) stop 14
++        if (kmod(17_1, 3).ne.2) stop 15
++        if (kmod(17_2, 3).ne.2) stop 16
++        if (kmod(17_4, 3).ne.2) stop 17
++        if (inot(5_1).ne.-6) stop 18
++        if (jnot(5_1).ne.-6) stop 19
++        if (jnot(5_2).ne.-6) stop 20
++        if (knot(5_1).ne.-6) stop 21
++        if (knot(5_2).ne.-6) stop 22
++        if (knot(5_4).ne.-6) stop 23
++        if (isign(-77_1, 1).ne.77) stop 24
++        if (isign(-77_1, -1).ne.-77) stop 25
++        if (isign(-77_2, 1).ne.77) stop 26
++        if (isign(-77_2, -1).ne.-77) stop 27
++      end program
+diff --git a/gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f b/gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f
+new file mode 100644
+index 00000000000..7b1697ca665
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_kind_promotion-2.f
+@@ -0,0 +1,40 @@
++!{ dg-do run }
++!{ dg-options "-fdec-intrinsic-ints -fdec-promotion" }
++!
++! integer types of a smaller kind than expected should be
++! accepted by type specific intrinsic functions
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      program test_small_type_promtion
++        implicit none
++        integer(1) :: a = 1
++        integer :: i
++        if (iiabs(-9_1).ne.9) stop 1
++        if (iabs(-9_1).ne.9) stop 2
++        if (iabs(-9_2).ne.9) stop 3
++        if (jiabs(-9_1).ne.9) stop 4
++        if (jiabs(-9_2).ne.9) stop 5
++        if (iishft(1_1, 2).ne.4) stop 6
++        if (jishft(1_1, 2).ne.4) stop 7
++        if (jishft(1_2, 2).ne.4) stop 8
++        if (kishft(1_1, 2).ne.4) stop 9
++        if (kishft(1_2, 2).ne.4) stop 10
++        if (kishft(1_4, 2).ne.4) stop 11
++        if (imod(17_1, 3).ne.2) stop 12
++        if (jmod(17_1, 3).ne.2) stop 13
++        if (jmod(17_2, 3).ne.2) stop 14
++        if (kmod(17_1, 3).ne.2) stop 15
++        if (kmod(17_2, 3).ne.2) stop 16
++        if (kmod(17_4, 3).ne.2) stop 17
++        if (inot(5_1).ne.-6) stop 18
++        if (jnot(5_1).ne.-6) stop 19
++        if (jnot(5_2).ne.-6) stop 20
++        if (knot(5_1).ne.-6) stop 21
++        if (knot(5_2).ne.-6) stop 22
++        if (knot(5_4).ne.-6) stop 23
++        if (isign(-77_1, 1).ne.77) stop 24
++        if (isign(-77_1, -1).ne.-77) stop 25
++        if (isign(-77_2, 1).ne.77) stop 26
++        if (isign(-77_2, -1).ne.-77) stop 27
++      end program
+diff --git a/gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f b/gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f
+new file mode 100644
+index 00000000000..b9d550a5a48
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_kind_promotion-3.f
+@@ -0,0 +1,40 @@
++!{ dg-do compile }
++!{ dg-options "-fdec -fno-dec-promotion" }
++!
++! integer types of a smaller kind than expected should be
++! accepted by type specific intrinsic functions
++!
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++!
++      program test_small_type_promtion
++        implicit none
++        integer(1) :: a = 1
++        integer :: i
++        if (iiabs(-9_1).ne.9) stop 1
++        if (iabs(-9_1).ne.9) stop 2 ! { dg-error "Type of argument" }
++        if (iabs(-9_2).ne.9) stop 3 ! { dg-error "Type of argument" }
++        if (jiabs(-9_1).ne.9) stop 4
++        if (jiabs(-9_2).ne.9) stop 5
++        if (iishft(1_1, 2).ne.4) stop 6
++        if (jishft(1_1, 2).ne.4) stop 7
++        if (jishft(1_2, 2).ne.4) stop 8
++        if (kishft(1_1, 2).ne.4) stop 9
++        if (kishft(1_2, 2).ne.4) stop 10
++        if (kishft(1_4, 2).ne.4) stop 11
++        if (imod(17_1, 3).ne.2) stop 12
++        if (jmod(17_1, 3).ne.2) stop 13
++        if (jmod(17_2, 3).ne.2) stop 14
++        if (kmod(17_1, 3).ne.2) stop 15
++        if (kmod(17_2, 3).ne.2) stop 16
++        if (kmod(17_4, 3).ne.2) stop 17
++        if (inot(5_1).ne.-6) stop 18
++        if (jnot(5_1).ne.-6) stop 19
++        if (jnot(5_2).ne.-6) stop 20
++        if (knot(5_1).ne.-6) stop 21
++        if (knot(5_2).ne.-6) stop 22
++        if (knot(5_4).ne.-6) stop 23
++        if (isign(-77_1, 1).ne.77) stop 24 ! { dg-error "Type of argument" }
++        if (isign(-77_1, -1).ne.-77) stop 25 ! { dg-error "Type of argument" }
++        if (isign(-77_2, 1).ne.77) stop 26 ! { dg-error "Type of argument" }
++        if (isign(-77_2, -1).ne.-77) stop 27 ! { dg-error "Type of argument" }
++      end program
+-- 
+2.11.0
+
diff --git a/SOURCES/0013-Add-the-SEQUENCE-attribute-by-default-if-it-s-not-pr.patch b/SOURCES/0013-Add-the-SEQUENCE-attribute-by-default-if-it-s-not-pr.patch
new file mode 100644
index 0000000..8c88c18
--- /dev/null
+++ b/SOURCES/0013-Add-the-SEQUENCE-attribute-by-default-if-it-s-not-pr.patch
@@ -0,0 +1,262 @@
+From aafd9c215d41b4a846c6724bc25025b124c65ec4 Mon Sep 17 00:00:00 2001
+From: Jim MacArthur <jim.macarthur@codethink.co.uk>
+Date: Wed, 18 Nov 2015 15:08:56 +0000
+Subject: [PATCH 13/16] Add the SEQUENCE attribute by default if it's not
+ present.
+
+Use -fdec-sequence to enable this feature. Also enabled by -fdec.
+---
+ gcc/fortran/lang.opt                               |  4 ++
+ gcc/fortran/options.c                              |  1 +
+ gcc/fortran/resolve.c                              | 13 +++--
+ ...dec_add_SEQUENCE_to_COMMON_block_by_default_1.f | 57 ++++++++++++++++++++++
+ ...dec_add_SEQUENCE_to_COMMON_block_by_default_2.f | 57 ++++++++++++++++++++++
+ ...dec_add_SEQUENCE_to_COMMON_block_by_default_3.f | 57 ++++++++++++++++++++++
+ 6 files changed, 186 insertions(+), 3 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f
+ create mode 100644 gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f
+
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 2a8f5f661a8..ffd9ce6f270 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -494,6 +494,10 @@ fdec-promotion
+ Fortran Var(flag_dec_promotion)
+ Add support for type promotion in intrinsic arguments.
+ 
++fdec-sequence
++Fortran Var(flag_dec_sequence)
++Add the SEQUENCE attribute by default if it's not present.
++
+ fdec-structure
+ Fortran Var(flag_dec_structure)
+ Enable support for DEC STRUCTURE/RECORD.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index 7a2583a2076..b6fd327d057 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -84,6 +84,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_override_kind, value, value);
+   SET_BITFLAG (flag_dec_non_logical_if, value, value);
+   SET_BITFLAG (flag_dec_promotion, value, value);
++  SET_BITFLAG (flag_dec_sequence, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
+index a90f7f849b5..08627866c9c 100644
+--- a/gcc/fortran/resolve.c
++++ b/gcc/fortran/resolve.c
+@@ -968,9 +968,16 @@ resolve_common_vars (gfc_common_head *common_block, bool named_common)
+ 
+       if (!(csym->ts.u.derived->attr.sequence
+ 	    || csym->ts.u.derived->attr.is_bind_c))
+-	gfc_error_now ("Derived type variable %qs in COMMON at %L "
+-		       "has neither the SEQUENCE nor the BIND(C) "
+-		       "attribute", csym->name, &csym->declared_at);
++	{
++	  if (flag_dec_sequence)
++	    /* Assume sequence. */
++	    csym->ts.u.derived->attr.sequence = 1;
++	  else
++	    gfc_error_now ("Derived type variable '%s' in COMMON at %L "
++			   "has neither the SEQUENCE nor the BIND(C) "
++			   "attribute", csym->name, &csym->declared_at);
++	}
++
+       if (csym->ts.u.derived->attr.alloc_comp)
+ 	gfc_error_now ("Derived type variable %qs in COMMON at %L "
+ 		       "has an ultimate component that is "
+diff --git a/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f
+new file mode 100644
+index 00000000000..fe7b39625eb
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_1.f
+@@ -0,0 +1,57 @@
++! { dg-do run }
++! { dg-options "-fdec" }
++!
++! Test add default SEQUENCE attribute derived types appearing in
++! COMMON blocks and EQUIVALENCE statements.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        MODULE SEQ
++          TYPE STRUCT1
++            INTEGER*4     ID
++            INTEGER*4     TYPE
++            INTEGER*8     DEFVAL
++            CHARACTER*(4) NAME
++            LOGICAL*1     NIL
++          END TYPE STRUCT1
++        END MODULE
++
++        SUBROUTINE A
++          USE SEQ
++          TYPE (STRUCT1) S
++          COMMON /BLOCK1/ S
++          IF (S%ID.NE.5) STOP 1
++          IF (S%TYPE.NE.1000) STOP 2
++          IF (S%DEFVAL.NE.-99) STOP 3
++          IF (S%NAME.NE."JANE") STOP 4
++          IF (S%NIL.NEQV..FALSE.) STOP 5
++        END SUBROUTINE
++
++        PROGRAM sequence_att_common
++          USE SEQ
++          IMPLICIT NONE
++          TYPE (STRUCT1) S1
++          TYPE (STRUCT1) S2
++          TYPE (STRUCT1) S3
++
++          EQUIVALENCE (S1,S2)
++          COMMON /BLOCK1/ S3
++
++          S1%ID = 5
++          S1%TYPE = 1000
++          S1%DEFVAL = -99
++          S1%NAME = "JANE"
++          S1%NIL = .FALSE.
++
++          IF (S2%ID.NE.5) STOP 1
++          IF (S2%TYPE.NE.1000) STOP 2
++          IF (S2%DEFVAL.NE.-99) STOP 3
++          IF (S2%NAME.NE."JANE") STOP 4
++          IF (S2%NIL.NEQV..FALSE.) STOP 5
++
++          S3 = S1
++
++          CALL A
++          
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f
+new file mode 100644
+index 00000000000..83512f0f3a2
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_2.f
+@@ -0,0 +1,57 @@
++! { dg-do run }
++! { dg-options "-fdec-sequence" }
++!
++! Test add default SEQUENCE attribute derived types appearing in
++! COMMON blocks and EQUIVALENCE statements.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        MODULE SEQ
++          TYPE STRUCT1
++            INTEGER*4     ID
++            INTEGER*4     TYPE
++            INTEGER*8     DEFVAL
++            CHARACTER*(4) NAME
++            LOGICAL*1     NIL
++          END TYPE STRUCT1
++        END MODULE
++
++        SUBROUTINE A
++          USE SEQ
++          TYPE (STRUCT1) S
++          COMMON /BLOCK1/ S
++          IF (S%ID.NE.5) STOP 1
++          IF (S%TYPE.NE.1000) STOP 2
++          IF (S%DEFVAL.NE.-99) STOP 3
++          IF (S%NAME.NE."JANE") STOP 4
++          IF (S%NIL.NEQV..FALSE.) STOP 5
++        END SUBROUTINE
++
++        PROGRAM sequence_att_common
++          USE SEQ
++          IMPLICIT NONE
++          TYPE (STRUCT1) S1
++          TYPE (STRUCT1) S2
++          TYPE (STRUCT1) S3
++
++          EQUIVALENCE (S1,S2)
++          COMMON /BLOCK1/ S3
++
++          S1%ID = 5
++          S1%TYPE = 1000
++          S1%DEFVAL = -99
++          S1%NAME = "JANE"
++          S1%NIL = .FALSE.
++
++          IF (S2%ID.NE.5) STOP 1
++          IF (S2%TYPE.NE.1000) STOP 2
++          IF (S2%DEFVAL.NE.-99) STOP 3
++          IF (S2%NAME.NE."JANE") STOP 4
++          IF (S2%NIL.NEQV..FALSE.) STOP 5
++
++          S3 = S1
++
++          CALL A
++          
++        END
+diff --git a/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f
+new file mode 100644
+index 00000000000..26cd59f9090
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/dec_add_SEQUENCE_to_COMMON_block_by_default_3.f
+@@ -0,0 +1,57 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-sequence" }
++!
++! Test add default SEQUENCE attribute derived types appearing in
++! COMMON blocks and EQUIVALENCE statements.
++!
++! Contributed by Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
++! Modified by Mark Eggleston <mark.eggleston@codethink.com>
++!
++        MODULE SEQ
++          TYPE STRUCT1
++            INTEGER*4     ID
++            INTEGER*4     TYPE
++            INTEGER*8     DEFVAL
++            CHARACTER*(4) NAME
++            LOGICAL*1     NIL
++          END TYPE STRUCT1
++        END MODULE
++
++        SUBROUTINE A
++          USE SEQ
++          TYPE (STRUCT1) S ! { dg-error "Derived type variable" }
++          COMMON /BLOCK1/ S
++          IF (S%ID.NE.5) STOP 1
++          IF (S%TYPE.NE.1000) STOP 2
++          IF (S%DEFVAL.NE.-99) STOP 3
++          IF (S%NAME.NE."JANE") STOP 4
++          IF (S%NIL.NEQV..FALSE.) STOP 5
++        END SUBROUTINE
++
++        PROGRAM sequence_att_common
++          USE SEQ
++          IMPLICIT NONE
++          TYPE (STRUCT1) S1
++          TYPE (STRUCT1) S2
++          TYPE (STRUCT1) S3 ! { dg-error "Derived type variable" }
++
++          EQUIVALENCE (S1,S2) ! { dg-error "Derived type variable" }
++          COMMON /BLOCK1/ S3
++
++          S1%ID = 5
++          S1%TYPE = 1000
++          S1%DEFVAL = -99
++          S1%NAME = "JANE"
++          S1%NIL = .FALSE.
++
++          IF (S2%ID.NE.5) STOP 1
++          IF (S2%TYPE.NE.1000) STOP 2
++          IF (S2%DEFVAL.NE.-99) STOP 3
++          IF (S2%NAME.NE."JANE") STOP 4
++          IF (S2%NIL.NEQV..FALSE.) STOP 5
++
++          S3 = S1
++
++          CALL A
++          
++        END
+-- 
+2.11.0
+
diff --git a/SOURCES/0014-Fill-in-missing-array-dimensions-using-the-lower-bou.patch b/SOURCES/0014-Fill-in-missing-array-dimensions-using-the-lower-bou.patch
new file mode 100644
index 0000000..f808856
--- /dev/null
+++ b/SOURCES/0014-Fill-in-missing-array-dimensions-using-the-lower-bou.patch
@@ -0,0 +1,181 @@
+From 60b2e0b9ad2057f256591f56d5433e9ca54bf56f Mon Sep 17 00:00:00 2001
+From: Jim MacArthur <jim.macarthur@codethink.co.uk>
+Date: Fri, 26 Aug 2016 17:46:05 +0100
+Subject: [PATCH 14/16] Fill in missing array dimensions using the lower bound
+
+Use -fdec-add-missing-indexes to enable feature. Also enabled by fdec.
+---
+ gcc/fortran/lang.opt                  |  8 ++++++++
+ gcc/fortran/options.c                 |  1 +
+ gcc/fortran/resolve.c                 | 24 ++++++++++++++++++++++++
+ gcc/testsuite/gfortran.dg/array_6.f90 | 23 +++++++++++++++++++++++
+ gcc/testsuite/gfortran.dg/array_7.f90 | 23 +++++++++++++++++++++++
+ gcc/testsuite/gfortran.dg/array_8.f90 | 23 +++++++++++++++++++++++
+ 6 files changed, 102 insertions(+)
+ create mode 100644 gcc/testsuite/gfortran.dg/array_6.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/array_7.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/array_8.f90
+
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index ffd9ce6f270..dca3fd27aa3 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -281,6 +281,10 @@ Wmissing-include-dirs
+ Fortran
+ ; Documented in C/C++
+ 
++Wmissing-index
++Fortran Var(warn_missing_index) Warning LangEnabledBy(Fortran,Wall)
++Warn that the lower bound of a missing index will be used.
++
+ Wuse-without-only
+ Fortran Var(warn_use_without_only) Warning
+ Warn about USE statements that have no ONLY qualifier.
+@@ -440,6 +444,10 @@ fdec
+ Fortran Var(flag_dec)
+ Enable all DEC language extensions.
+ 
++fdec-add-missing-indexes
++Fortran Var(flag_dec_add_missing_indexes)
++Enable the addition of missing indexes using their lower bounds.
++
+ fdec-blank-format-item
+ Fortran Var(flag_dec_blank_format_item)
+ Enable the use of blank format items in format strings.
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index b6fd327d057..f417f48f6a7 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -85,6 +85,7 @@ set_dec_flags (int value)
+   SET_BITFLAG (flag_dec_non_logical_if, value, value);
+   SET_BITFLAG (flag_dec_promotion, value, value);
+   SET_BITFLAG (flag_dec_sequence, value, value);
++  SET_BITFLAG (flag_dec_add_missing_indexes, value, value);
+ }
+ 
+ /* Finalize DEC flags.  */
+diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
+index 08627866c9c..70093c952f6 100644
+--- a/gcc/fortran/resolve.c
++++ b/gcc/fortran/resolve.c
+@@ -4676,6 +4676,30 @@ compare_spec_to_ref (gfc_array_ref *ar)
+   if (ar->type == AR_FULL)
+     return true;
+ 
++  if (flag_dec_add_missing_indexes && as->rank > ar->dimen)
++    {
++      /* Add in the missing dimensions, assuming they are the lower bound
++         of that dimension if not specified.  */
++      int j;
++      if (warn_missing_index)
++	{
++          gfc_warning (OPT_Wmissing_index, "Using the lower bound for "
++		       "unspecified dimensions in array reference at %L",
++		       &ar->where);
++	}
++      /* Other parts of the code iterate ar->start and ar->end from 0 to
++	 ar->dimen, so it is safe to assume slots from ar->dimen upwards
++	 are unused (i.e. there are no gaps; the specified indexes are
++	 contiguous and start at zero.  */
++      for(j = ar->dimen; j <= as->rank; j++)
++        {
++	  ar->start[j] = gfc_copy_expr (as->lower[j]);
++	  ar->end[j]   = gfc_copy_expr (as->lower[j]);
++	  ar->dimen_type[j] = DIMEN_ELEMENT;
++        }
++      ar->dimen = as->rank;
++    }
++
+   if (as->rank != ar->dimen)
+     {
+       gfc_error ("Rank mismatch in array reference at %L (%d/%d)",
+diff --git a/gcc/testsuite/gfortran.dg/array_6.f90 b/gcc/testsuite/gfortran.dg/array_6.f90
+new file mode 100644
+index 00000000000..5c26e18ab3e
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/array_6.f90
+@@ -0,0 +1,23 @@
++! { dg-do run }
++! { dg-options "-fdec -Wmissing-index" }!
++! Checks that under-specified arrays (referencing arrays with fewer
++! dimensions than the array spec) generates a warning.
++!
++! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Updated by Mark Eggleston <mark.eggleston@codethink.co.uk>
++!
++
++program under_specified_array
++    integer chessboard(8,8)
++    integer chessboard3d(8,8,3:5)
++    chessboard(3,1) = 5
++    chessboard(3,2) = 55
++    chessboard3d(4,1,3) = 6
++    chessboard3d(4,1,4) = 66
++    chessboard3d(4,4,3) = 7
++    chessboard3d(4,4,4) = 77
++  
++    if (chessboard(3).ne.5) stop 1  ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" }
++    if (chessboard3d(4).ne.6) stop 2  ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" }
++    if (chessboard3d(4,4).ne.7) stop 3  ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" }
++end program
+diff --git a/gcc/testsuite/gfortran.dg/array_7.f90 b/gcc/testsuite/gfortran.dg/array_7.f90
+new file mode 100644
+index 00000000000..5588a5bd02d
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/array_7.f90
+@@ -0,0 +1,23 @@
++! { dg-do run }
++! { dg-options "-fdec-add-missing-indexes -Wmissing-index" }!
++! Checks that under-specified arrays (referencing arrays with fewer
++! dimensions than the array spec) generates a warning.
++!
++! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Updated by Mark Eggleston <mark.eggleston@codethink.co.uk>
++!
++
++program under_specified_array
++    integer chessboard(8,8)
++    integer chessboard3d(8,8,3:5)
++    chessboard(3,1) = 5
++    chessboard(3,2) = 55
++    chessboard3d(4,1,3) = 6
++    chessboard3d(4,1,4) = 66
++    chessboard3d(4,4,3) = 7
++    chessboard3d(4,4,4) = 77
++  
++    if (chessboard(3).ne.5) stop 1  ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" }
++    if (chessboard3d(4).ne.6) stop 2  ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" }
++    if (chessboard3d(4,4).ne.7) stop 3  ! { dg-warning "Using the lower bound for unspecified dimensions in array reference" }
++end program
+diff --git a/gcc/testsuite/gfortran.dg/array_8.f90 b/gcc/testsuite/gfortran.dg/array_8.f90
+new file mode 100644
+index 00000000000..f0d2ef5e37d
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/array_8.f90
+@@ -0,0 +1,23 @@
++! { dg-do compile }
++! { dg-options "-fdec -fno-dec-add-missing-indexes" }!
++! Checks that under-specified arrays (referencing arrays with fewer
++! dimensions than the array spec) generates a warning.
++!
++! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
++! Updated by Mark Eggleston <mark.eggleston@codethink.co.uk>
++!
++
++program under_specified_array
++    integer chessboard(8,8)
++    integer chessboard3d(8,8,3:5)
++    chessboard(3,1) = 5
++    chessboard(3,2) = 55
++    chessboard3d(4,1,3) = 6
++    chessboard3d(4,1,4) = 66
++    chessboard3d(4,4,3) = 7
++    chessboard3d(4,4,4) = 77
++  
++    if (chessboard(3).ne.5) stop 1  ! { dg-error "Rank mismatch" }
++    if (chessboard3d(4).ne.6) stop 2  ! { dg-error "Rank mismatch" }
++    if (chessboard3d(4,4).ne.7) stop 3  ! { dg-error "Rank mismatch" }
++end program
+-- 
+2.11.0
+
diff --git a/SOURCES/0015-Allow-automatics-in-equivalence.patch b/SOURCES/0015-Allow-automatics-in-equivalence.patch
new file mode 100644
index 0000000..8f12dcf
--- /dev/null
+++ b/SOURCES/0015-Allow-automatics-in-equivalence.patch
@@ -0,0 +1,358 @@
+From e6f385f8258148890a097878a618b694be663db6 Mon Sep 17 00:00:00 2001
+From: Mark Eggleston <markeggleston@codethink.com>
+Date: Tue, 11 Sep 2018 12:50:11 +0100
+Subject: [PATCH 15/16] Allow automatics in equivalence
+
+If a variable with an automatic attribute appears in an
+equivalence statement the storage should be allocated on
+the stack.
+
+Note: most of this patch was provided by Jeff Law <law@redhat.com>.
+---
+ gcc/fortran/gfortran.h                        |  1 +
+ gcc/fortran/symbol.c                          |  4 +-
+ gcc/fortran/trans-common.c                    | 75 +++++++++++++++++++++++++--
+ gcc/testsuite/gfortran.dg/auto_in_equiv_1.f90 | 36 +++++++++++++
+ gcc/testsuite/gfortran.dg/auto_in_equiv_2.f90 | 38 ++++++++++++++
+ gcc/testsuite/gfortran.dg/auto_in_equiv_3.f90 | 63 ++++++++++++++++++++++
+ 6 files changed, 210 insertions(+), 7 deletions(-)
+ create mode 100644 gcc/testsuite/gfortran.dg/auto_in_equiv_1.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/auto_in_equiv_2.f90
+ create mode 100644 gcc/testsuite/gfortran.dg/auto_in_equiv_3.f90
+
+diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
+index 23d01b10728..eb2a29fea5f 100644
+--- a/gcc/fortran/gfortran.h
++++ b/gcc/fortran/gfortran.h
+@@ -2993,6 +2993,7 @@ bool gfc_merge_new_implicit (gfc_typespec *);
+ void gfc_set_implicit_none (bool, bool, locus *);
+ void gfc_check_function_type (gfc_namespace *);
+ bool gfc_is_intrinsic_typename (const char *);
++bool check_conflict (symbol_attribute *, const char *, locus *);
+ 
+ gfc_typespec *gfc_get_default_type (const char *, gfc_namespace *);
+ bool gfc_set_default_type (gfc_symbol *, int, gfc_namespace *);
+diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
+index 4247b5b60c8..5fdb46c4b32 100644
+--- a/gcc/fortran/symbol.c
++++ b/gcc/fortran/symbol.c
+@@ -407,7 +407,7 @@ gfc_check_function_type (gfc_namespace *ns)
+                                 goto conflict_std;\
+                               }
+ 
+-static bool
++bool
+ check_conflict (symbol_attribute *attr, const char *name, locus *where)
+ {
+   static const char *dummy = "DUMMY", *save = "SAVE", *pointer = "POINTER",
+@@ -544,7 +544,6 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where)
+   conf (allocatable, elemental);
+ 
+   conf (in_common, automatic);
+-  conf (in_equivalence, automatic);
+   conf (result, automatic);
+   conf (use_assoc, automatic);
+   conf (dummy, automatic);
+@@ -4261,6 +4260,7 @@ save_symbol (gfc_symbol *sym)
+     return;
+ 
+   if (sym->attr.in_common
++      || sym->attr.in_equivalence
+       || sym->attr.dummy
+       || sym->attr.result
+       || sym->attr.flavor != FL_VARIABLE)
+diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c
+index debdbd98ac0..a5fb230bb1b 100644
+--- a/gcc/fortran/trans-common.c
++++ b/gcc/fortran/trans-common.c
+@@ -339,7 +339,7 @@ build_field (segment_info *h, tree union_type, record_layout_info rli)
+ /* Get storage for local equivalence.  */
+ 
+ static tree
+-build_equiv_decl (tree union_type, bool is_init, bool is_saved)
++build_equiv_decl (tree union_type, bool is_init, bool is_saved, bool is_auto)
+ {
+   tree decl;
+   char name[18];
+@@ -359,8 +359,8 @@ build_equiv_decl (tree union_type, bool is_init, bool is_saved)
+   DECL_ARTIFICIAL (decl) = 1;
+   DECL_IGNORED_P (decl) = 1;
+ 
+-  if (!gfc_can_put_var_on_stack (DECL_SIZE_UNIT (decl))
+-      || is_saved)
++  if (!is_auto && (!gfc_can_put_var_on_stack (DECL_SIZE_UNIT (decl))
++      || is_saved))
+     TREE_STATIC (decl) = 1;
+ 
+   TREE_ADDRESSABLE (decl) = 1;
+@@ -611,6 +611,7 @@ create_common (gfc_common_head *com, segment_info *head, bool saw_equiv)
+   tree decl;
+   bool is_init = false;
+   bool is_saved = false;
++  bool is_auto = false;
+ 
+   /* Declare the variables inside the common block.
+      If the current common block contains any equivalence object, then
+@@ -654,6 +655,10 @@ create_common (gfc_common_head *com, segment_info *head, bool saw_equiv)
+       /* Has SAVE attribute.  */
+       if (s->sym->attr.save)
+         is_saved = true;
++
++      /* Has AUTOMATIC attribute.  */
++      if (s->sym->attr.automatic)
++	is_auto = true;
+     }
+ 
+   finish_record_layout (rli, true);
+@@ -661,7 +666,7 @@ create_common (gfc_common_head *com, segment_info *head, bool saw_equiv)
+   if (com)
+     decl = build_common_decl (com, union_type, is_init);
+   else
+-    decl = build_equiv_decl (union_type, is_init, is_saved);
++    decl = build_equiv_decl (union_type, is_init, is_saved, is_auto);
+ 
+   if (is_init)
+     {
+@@ -948,6 +953,61 @@ add_condition (segment_info *f, gfc_equiv *eq1, gfc_equiv *eq2)
+     confirm_condition (f, eq1, n, eq2);
+ }
+ 
++static void
++accumulate_equivalence_attributes (symbol_attribute *dummy_symbol, gfc_equiv *e)
++{
++  symbol_attribute attr = e->expr->symtree->n.sym->attr;
++
++  dummy_symbol->dummy |= attr.dummy;
++  dummy_symbol->pointer |= attr.pointer;
++  dummy_symbol->target |= attr.target;
++  dummy_symbol->external |= attr.external;
++  dummy_symbol->intrinsic |= attr.intrinsic;
++  dummy_symbol->allocatable |= attr.allocatable;
++  dummy_symbol->elemental |= attr.elemental;
++  dummy_symbol->recursive |= attr.recursive;
++  dummy_symbol->in_common |= attr.in_common;
++  dummy_symbol->result |= attr.result;
++  dummy_symbol->in_namelist |= attr.in_namelist;
++  dummy_symbol->optional |= attr.optional;
++  dummy_symbol->entry |= attr.entry;
++  dummy_symbol->function |= attr.function;
++  dummy_symbol->subroutine |= attr.subroutine;
++  dummy_symbol->dimension |= attr.dimension;
++  dummy_symbol->in_equivalence |= attr.in_equivalence;
++  dummy_symbol->use_assoc |= attr.use_assoc;
++  dummy_symbol->cray_pointer |= attr.cray_pointer;
++  dummy_symbol->cray_pointee |= attr.cray_pointee;
++  dummy_symbol->data |= attr.data;
++  dummy_symbol->value |= attr.value;
++  dummy_symbol->volatile_ |= attr.volatile_;
++  dummy_symbol->is_protected |= attr.is_protected;
++  dummy_symbol->is_bind_c |= attr.is_bind_c;
++  dummy_symbol->procedure |= attr.procedure;
++  dummy_symbol->proc_pointer |= attr.proc_pointer;
++  dummy_symbol->abstract |= attr.abstract;
++  dummy_symbol->asynchronous |= attr.asynchronous;
++  dummy_symbol->codimension |= attr.codimension;
++  dummy_symbol->contiguous |= attr.contiguous;
++  dummy_symbol->generic |= attr.generic;
++  dummy_symbol->automatic |= attr.automatic;
++  dummy_symbol->threadprivate |= attr.threadprivate;
++  dummy_symbol->omp_declare_target |= attr.omp_declare_target;
++  dummy_symbol->omp_declare_target_link |= attr.omp_declare_target_link;
++  dummy_symbol->oacc_declare_copyin |= attr.oacc_declare_copyin;
++  dummy_symbol->oacc_declare_create |= attr.oacc_declare_create;
++  dummy_symbol->oacc_declare_deviceptr |= attr.oacc_declare_deviceptr;
++  dummy_symbol->oacc_declare_device_resident
++    |= attr.oacc_declare_device_resident;
++
++  /* Not strictly correct, but probably close enough.  */
++  if (attr.save > dummy_symbol->save)
++    dummy_symbol->save = attr.save;
++  if (attr.intent > dummy_symbol->intent)
++    dummy_symbol->intent = attr.intent;
++  if (attr.access > dummy_symbol->access)
++    dummy_symbol->access = attr.access;
++}
+ 
+ /* Given a segment element, search through the equivalence lists for unused
+    conditions that involve the symbol.  Add these rules to the segment.  */
+@@ -965,9 +1025,12 @@ find_equivalence (segment_info *n)
+       eq = NULL;
+ 
+       /* Search the equivalence list, including the root (first) element
+-         for the symbol that owns the segment.  */
++	 for the symbol that owns the segment.  */
++      symbol_attribute dummy_symbol;
++      memset (&dummy_symbol, 0, sizeof (dummy_symbol));
+       for (e2 = e1; e2; e2 = e2->eq)
+ 	{
++	  accumulate_equivalence_attributes (&dummy_symbol, e2);
+ 	  if (!e2->used && e2->expr->symtree->n.sym == n->sym)
+ 	    {
+ 	      eq = e2;
+@@ -975,6 +1038,8 @@ find_equivalence (segment_info *n)
+ 	    }
+ 	}
+ 
++      check_conflict (&dummy_symbol, e1->expr->symtree->name, &e1->expr->where);
++
+       /* Go to the next root element.  */
+       if (eq == NULL)
+ 	continue;
+diff --git a/gcc/testsuite/gfortran.dg/auto_in_equiv_1.f90 b/gcc/testsuite/gfortran.dg/auto_in_equiv_1.f90
+new file mode 100644
+index 00000000000..61bfd0738c5
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/auto_in_equiv_1.f90
+@@ -0,0 +1,36 @@
++! { dg-compile }
++
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++program test
++  call suba(0)
++  call subb(0)
++  call suba(1)
++
++contains
++  subroutine suba(option) 
++    integer, intent(in) :: option
++    integer, automatic :: a ! { dg-error "AUTOMATIC at \\(1\\) is a DEC extension" }
++    integer :: b
++    integer :: c
++    equivalence (a, b)
++    if (option.eq.0) then
++      ! initialise a and c
++      a = 9
++      c = 99
++      if (a.ne.b) stop 1
++      if (loc(a).ne.loc(b)) stop 2
++    else
++      ! a should've been overwritten
++      if (a.eq.9) stop 3
++    end if
++  end subroutine suba
++
++  subroutine subb(dummy)
++    integer, intent(in) :: dummy
++    integer, automatic :: x ! { dg-error "AUTOMATIC at \\(1\\) is a DEC extension" }
++    integer :: y
++    x = 77
++    y = 7
++  end subroutine subb
++
++end program test
+diff --git a/gcc/testsuite/gfortran.dg/auto_in_equiv_2.f90 b/gcc/testsuite/gfortran.dg/auto_in_equiv_2.f90
+new file mode 100644
+index 00000000000..406e718604a
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/auto_in_equiv_2.f90
+@@ -0,0 +1,38 @@
++! { dg-run }
++! { dg-options "-fdec-static" }
++
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++
++program test
++  call suba(0)
++  call subb(0)
++  call suba(1)
++
++contains
++  subroutine suba(option) 
++    integer, intent(in) :: option
++    integer, automatic :: a
++    integer :: b
++    integer :: c
++    equivalence (a, b)
++    if (option.eq.0) then
++      ! initialise a and c
++      a = 9
++      c = 99
++      if (a.ne.b) stop 1
++      if (loc(a).ne.loc(b)) stop 2
++    else
++      ! a should've been overwritten
++      if (a.eq.9) stop 3
++    end if
++  end subroutine suba
++
++  subroutine subb(dummy)
++    integer, intent(in) :: dummy
++    integer, automatic :: x
++    integer :: y
++    x = 77
++    y = 7
++  end subroutine subb
++
++end program test
+diff --git a/gcc/testsuite/gfortran.dg/auto_in_equiv_3.f90 b/gcc/testsuite/gfortran.dg/auto_in_equiv_3.f90
+new file mode 100644
+index 00000000000..c67aa8c6ac1
+--- /dev/null
++++ b/gcc/testsuite/gfortran.dg/auto_in_equiv_3.f90
+@@ -0,0 +1,63 @@
++! { dg-run }
++! { dg-options "-fdec-static -fno-automatic" }
++
++! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
++
++! Storage is NOT on the static unless explicitly specified using the
++! DEC extension "automatic". The address of the first local variable
++! is used to determine that storage for the automatic local variable
++! is different to that of a local variable with no attributes. The
++! contents of the local variable in suba should be overwritten by the
++! call to subb. 
++!
++program test
++  integer :: dummy
++  integer, parameter :: address = kind(loc(dummy))
++  integer(address) :: ad1
++  integer(address) :: ad2
++  integer(address) :: ad3
++  logical :: ok
++
++  call suba(0, ad1)
++  call subb(0, ad2)
++  call suba(1, ad1)
++  call subc(0, ad3)
++  ok = (ad1.eq.ad3).and.(ad1.ne.ad2)
++  if (.not.ok) stop 4
++
++contains
++  subroutine suba(option, addr) 
++    integer, intent(in) :: option
++    integer(address), intent(out) :: addr
++    integer, automatic :: a
++    integer :: b
++    equivalence (a, b)
++    addr = loc(a)
++    if (option.eq.0) then
++      ! initialise a and c
++      a = 9
++      if (a.ne.b) stop 1
++      if (loc(a).ne.loc(b)) stop 2
++    else
++      ! a should've been overwritten
++      if (a.eq.9) stop 3
++    end if
++  end subroutine suba
++
++  subroutine subb(dummy, addr)
++    integer, intent(in) :: dummy
++    integer(address), intent(out) :: addr
++    integer :: x
++    addr = loc(x)
++    x = 77
++  end subroutine subb
++
++  subroutine subc(dummy, addr)
++    integer, intent(in) :: dummy
++    integer(address), intent(out) :: addr
++    integer, automatic :: y
++    addr = loc(y)
++    y = 77
++  end subroutine subc
++
++end program test
+-- 
+2.11.0
+
diff --git a/SOURCES/0016-Suppress-warning-with-Wno-overwrite-recursive.patch b/SOURCES/0016-Suppress-warning-with-Wno-overwrite-recursive.patch
new file mode 100644
index 0000000..7a283ba
--- /dev/null
+++ b/SOURCES/0016-Suppress-warning-with-Wno-overwrite-recursive.patch
@@ -0,0 +1,49 @@
+From 9bf3b68e118a749ab87f52649fd56aca059470e8 Mon Sep 17 00:00:00 2001
+From: Mark Eggleston <markeggleston@codethink.com>
+Date: Tue, 16 Apr 2019 09:09:12 +0100
+Subject: [PATCH 16/16] Suppress warning with -Wno-overwrite-recursive
+
+The message "Warning: Flag '-fno-automatic' overwrites '-frecursive'" is
+output by default when -fno-automatic and -frecursive are used together.
+It warns that recursion may be broken, however if all the relavent variables
+in the recursive procedure have automatic attributes the warning is
+unnecessary so -Wno-overwrite-recursive can be used to suppress it. This
+will allow compilation when warnings are regarded as errors.
+
+Suppress warning with -Wno-overwrite-recursive
+---
+ gcc/fortran/lang.opt  | 4 ++++
+ gcc/fortran/options.c | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index dca3fd27aa3..e5074f614e3 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -293,6 +293,10 @@ Wopenmp-simd
+ Fortran
+ ; Documented in C
+ 
++Woverwrite-recursive
++Fortran Warning Var(warn_overwrite_recursive) Init(1)
++Warn that -fno-automatic may break recursion.
++
+ Wpedantic
+ Fortran
+ ; Documented in common.opt
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index f417f48f6a7..6cbc64bf1ae 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -418,7 +418,7 @@ gfc_post_options (const char **pfilename)
+       && flag_max_stack_var_size != 0)
+     gfc_warning_now (0, "Flag %<-fno-automatic%> overwrites %<-fmax-stack-var-size=%d%>",
+ 		     flag_max_stack_var_size);
+-  else if (!flag_automatic && flag_recursive)
++  else if (!flag_automatic && flag_recursive && warn_overwrite_recursive)
+     gfc_warning_now (0, "Flag %<-fno-automatic%> overwrites %<-frecursive%>");
+   else if (!flag_automatic && flag_openmp)
+     gfc_warning_now (0, "Flag %<-fno-automatic%> overwrites %<-frecursive%> implied by "
+-- 
+2.11.0
+
diff --git a/SOURCES/doxygen-1.7.1-config.patch b/SOURCES/doxygen-1.7.1-config.patch
new file mode 100644
index 0000000..f6be5b9
--- /dev/null
+++ b/SOURCES/doxygen-1.7.1-config.patch
@@ -0,0 +1,95 @@
+diff -up doxygen-1.7.1/addon/doxywizard/Makefile.in.config doxygen-1.7.1/addon/doxywizard/Makefile.in
+--- doxygen-1.7.1/addon/doxywizard/Makefile.in.config	2010-05-23 16:51:31.000000000 +0200
++++ doxygen-1.7.1/addon/doxywizard/Makefile.in	2010-07-19 13:38:33.000000000 +0200
+@@ -10,8 +10,6 @@
+ # See the GNU General Public License for more details.
+ # 
+ 
+-QMAKE=qmake $(MKSPECS)
+-
+ all: Makefile.doxywizard  
+ 	$(MAKE) -f Makefile.doxywizard 
+ 
+@@ -29,11 +27,11 @@ distclean: Makefile.doxywizard
+ 	$(RM) Makefile.doxywizard
+ 
+ install:
+-	$(INSTTOOL) -d $(INSTALL)/bin	
+-	$(INSTTOOL) -m 755 ../../bin/doxywizard $(INSTALL)/bin	
+-	$(INSTTOOL) -d $(INSTALL)/$(MAN1DIR)
++	$(INSTTOOL) -d $(DESTDIR)$(INSTALL)/bin	
++	$(INSTTOOL) -m 755 ../../bin/doxywizard $(DESTDIR)$(INSTALL)/bin	
++	$(INSTTOOL) -d $(DESTDIR)$(INSTALL)/$(MAN1DIR)
+ 	cat ../../doc/doxywizard.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxywizard.1
+-	$(INSTTOOL) -m 644 doxywizard.1 $(INSTALL)/$(MAN1DIR)/doxywizard.1
++	$(INSTTOOL) -m 644 doxywizard.1 $(DESTDIR)$(INSTALL)/$(MAN1DIR)/doxywizard.1
+ 	rm doxywizard.1
+ 
+ FORCE:
+diff -up doxygen-1.7.1/configure.config doxygen-1.7.1/configure
+--- doxygen-1.7.1/configure.config	2010-06-25 11:46:38.000000000 +0200
++++ doxygen-1.7.1/configure	2010-07-19 12:03:53.000000000 +0200
+@@ -268,9 +268,10 @@ if test "$f_wizard" = YES; then
+   if test -z "$QTDIR"; then
+     echo "  QTDIR environment variable not set!"
+     echo -n "  Checking for Qt..."
+-    for d in /usr/{lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do
++    for d in /usr/{lib64,lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do
+       if test -x "$d/bin/qmake"; then
+         QTDIR=$d
++        QMAKE=$d/bin/qmake
+       fi
+     done
+   else
+@@ -485,6 +486,8 @@ INSTTOOL  = $f_insttool
+ DOXYDOCS  = ..
+ DOCDIR    = $f_docdir
+ QTDIR     = $QTDIR
++QMAKE     = $QMAKE
++MAN1DIR    = share/man/man1
+ EOF
+ 
+ if test "$f_dot" != NO; then
+diff -up doxygen-1.7.1/Makefile.in.config doxygen-1.7.1/Makefile.in
+--- doxygen-1.7.1/Makefile.in.config	2009-08-20 21:41:13.000000000 +0200
++++ doxygen-1.7.1/Makefile.in	2010-07-19 12:03:53.000000000 +0200
+@@ -44,8 +44,6 @@ distclean: clean
+ 
+ DATE=$(shell date "+%B %Y")
+ 
+-MAN1DIR = man/man1
+-
+ install: doxywizard_install 
+ 	$(INSTTOOL) -d $(DESTDIR)/$(INSTALL)/bin
+ 	$(INSTTOOL) -m 755 bin/doxygen    $(DESTDIR)/$(INSTALL)/bin
+diff -up doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf.config doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf
+--- doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf.config	2008-12-06 14:16:20.000000000 +0100
++++ doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf	2010-07-19 12:03:53.000000000 +0200
+@@ -11,7 +11,7 @@ TMAKE_CC		= gcc
+ TMAKE_CFLAGS		= -pipe
+ TMAKE_CFLAGS_WARN_ON	= -Wall -W -fno-exceptions
+ TMAKE_CFLAGS_WARN_OFF	=
+-TMAKE_CFLAGS_RELEASE	= -O2
++TMAKE_CFLAGS_RELEASE	= $(RPM_OPT_FLAGS)
+ TMAKE_CFLAGS_DEBUG	= -g
+ TMAKE_CFLAGS_SHLIB	= -fPIC
+ TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
+@@ -27,12 +27,12 @@ TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YAC
+ 
+ TMAKE_INCDIR		=
+ TMAKE_LIBDIR		=
+-TMAKE_INCDIR_X11	= /usr/X11R6/include
+-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
+-TMAKE_INCDIR_QT		= $(QTDIR)/include
+-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
+-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
+-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
++TMAKE_INCDIR_X11	=
++TMAKE_LIBDIR_X11	=
++TMAKE_INCDIR_QT		=
++TMAKE_LIBDIR_QT		=
++TMAKE_INCDIR_OPENGL	=
++TMAKE_LIBDIR_OPENGL	=
+ 
+ TMAKE_LINK		= g++
+ TMAKE_LINK_SHLIB	= g++
diff --git a/SOURCES/doxygen-1.7.5-timestamp.patch b/SOURCES/doxygen-1.7.5-timestamp.patch
new file mode 100644
index 0000000..efbd992
--- /dev/null
+++ b/SOURCES/doxygen-1.7.5-timestamp.patch
@@ -0,0 +1,63 @@
+diff -up doxygen-1.7.5/src/configoptions.cpp.timestamp doxygen-1.7.5/src/configoptions.cpp
+--- doxygen-1.7.5/src/configoptions.cpp.timestamp	2011-08-03 15:54:50.000000000 +0200
++++ doxygen-1.7.5/src/configoptions.cpp	2011-08-23 12:55:56.000000000 +0200
+@@ -1173,6 +1173,14 @@ void addConfigOptions(Config *cfg)
+   cs->setWidgetType(ConfigString::File);
+   cs->addDependency("GENERATE_HTML");
+   //----
++  cb = cfg->addBool(
++                 "HTML_TIMESTAMP",
++                 "If the HTML_TIMESTAMP tag is set to YES then the generated HTML\n"
++                 "documentation will contain the timesstamp.",
++                 FALSE
++                );
++  cb->addDependency("GENERATE_HTML");
++  //----
+   cs = cfg->addString(
+                  "HTML_STYLESHEET",
+                  "The HTML_STYLESHEET tag can be used to specify a user-defined cascading\n"
+diff -up doxygen-1.7.5/src/config.xml.timestamp doxygen-1.7.5/src/config.xml
+--- doxygen-1.7.5/src/config.xml.timestamp	2011-08-03 15:54:48.000000000 +0200
++++ doxygen-1.7.5/src/config.xml	2011-08-23 12:55:56.000000000 +0200
+@@ -819,6 +819,11 @@ The HTML_FOOTER tag can be used to speci
+ each generated HTML page. If it is left blank doxygen will generate a 
+ standard footer. 
+ ' defval='' depends='GENERATE_HTML'/>
++    <option type='bool' id='HTML_TIMESTAMP' docs='
++If the HTML_TIMESTAMP tag is set to YES then the generated HTML
++documentation will contain the timesstamp.
++' defval='' depends='GENERATE_HTML'/>
++
+     <option type='string' id='HTML_STYLESHEET' format='file' docs='
+ The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+ style sheet that is used by each HTML page. It can be used to 
+diff -up doxygen-1.7.5/src/htmlgen.cpp.timestamp doxygen-1.7.5/src/htmlgen.cpp
+--- doxygen-1.7.5/src/htmlgen.cpp.timestamp	2011-08-01 22:10:17.000000000 +0200
++++ doxygen-1.7.5/src/htmlgen.cpp	2011-08-23 13:01:16.000000000 +0200
+@@ -88,7 +88,7 @@ static const char svgpan_script[]=
+ 
+ static QCString g_header;
+ static QCString g_footer;
+-
++static bool timestamp=false;
+ //------------------------- Pictures for the Tabs ------------------------
+ 
+ // active
+@@ -1072,6 +1072,8 @@ void HtmlGenerator::init()
+   {
+     g_footer = defaultHtmlFooter;
+   }
++  if (Config_getBool("HTML_TIMESTAMP"))
++    timestamp=true;
+   createSubDirs(d);
+ 
+   QCString fileName=dname+"/tabs.css";
+@@ -1285,7 +1287,7 @@ QCString HtmlGenerator::writeLogoAsStrin
+   if (timeStamp)
+   {
+     result += theTranslator->trGeneratedAt(
+-               dateToString(TRUE),
++               dateToString(timestamp),
+                Config_getString("PROJECT_NAME")
+               );
+   }
diff --git a/SOURCES/doxygen-1.8.0-rh856725.patch b/SOURCES/doxygen-1.8.0-rh856725.patch
new file mode 100644
index 0000000..b0b4b4a
--- /dev/null
+++ b/SOURCES/doxygen-1.8.0-rh856725.patch
@@ -0,0 +1,15 @@
+--- doxygen-1.8.0/src/configgen.py	2012-01-29 10:12:54.000000000 -0500
++++ doxygen-1.8.0/src/configgen.py	2012-08-07 17:38:54.751696536 -0400
+@@ -34,8 +34,10 @@
+         if type=='bool':
+         	if len(adefval)>0:
+ 			enabled = adefval
+-		else:
+-			enabled = "TRUE" if defval=='1' else "FALSE"
++		elif defval=='1':
++			enabled = "TRUE"
++		else:
++			enabled = "FALSE"
+ 		print "  cb = cfg->addBool("
+ 		print "                 \"%s\"," % (name)
+ 		print "                 \"%s\"," % (docC)
diff --git a/SOURCES/gcc9-Wno-format-security.patch b/SOURCES/gcc9-Wno-format-security.patch
new file mode 100644
index 0000000..cb21e5d
--- /dev/null
+++ b/SOURCES/gcc9-Wno-format-security.patch
@@ -0,0 +1,27 @@
+2017-02-25  Jakub Jelinek  <jakub@redhat.com>
+
+	* configure.ac: When adding -Wno-format, also add -Wno-format-security.
+	* configure: Regenerated.
+
+--- gcc/configure.ac.jj	2017-02-13 12:20:53.000000000 +0100
++++ gcc/configure.ac	2017-02-25 12:42:32.859175403 +0100
+@@ -481,7 +481,7 @@ AC_ARG_ENABLE(build-format-warnings,
+   AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
+   [],[enable_build_format_warnings=yes])
+ AS_IF([test $enable_build_format_warnings = no],
+-      [wf_opt=-Wno-format],[wf_opt=])
++      [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=])
+ ACX_PROG_CXX_WARNING_OPTS(
+ 	m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
+ 		       [-Wcast-qual $wf_opt])), [loose_warn])
+--- gcc/configure.jj	2017-02-13 12:20:52.000000000 +0100
++++ gcc/configure	2017-02-25 12:42:50.041946391 +0100
+@@ -6647,7 +6647,7 @@ else
+ fi
+ 
+ if test $enable_build_format_warnings = no; then :
+-  wf_opt=-Wno-format
++  wf_opt="-Wno-format -Wno-format-security"
+ else
+   wf_opt=
+ fi
diff --git a/SOURCES/gcc9-alt-compat-test.patch b/SOURCES/gcc9-alt-compat-test.patch
new file mode 100644
index 0000000..3907d55
--- /dev/null
+++ b/SOURCES/gcc9-alt-compat-test.patch
@@ -0,0 +1,49 @@
+--- gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c.jj	2011-01-03 06:50:42.000000000 -0500
++++ gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c	2011-02-18 06:28:53.858200077 -0500
+@@ -1501,6 +1501,8 @@ generate_random_tests (enum FEATURE feat
+   int i, r;
+   if (len > 'z' - 'a' + 1)
+     abort ();
++  if (getenv ("ALT_CXX_UNDER_TEST") != NULL)
++    features &= ~FEATURE_VECTOR;
+   memset (e, 0, sizeof (e));
+   r = generate_random ();
+   if ((r & 7) == 0)
+--- gcc/testsuite/g++.dg/compat/compat.exp.jj	2011-01-03 06:50:42.000000000 -0500
++++ gcc/testsuite/g++.dg/compat/compat.exp	2011-02-18 06:30:54.248200398 -0500
+@@ -116,7 +116,12 @@ if [info exists ALT_CXX_UNDER_TEST] then
+ }
+ 
+ # Main loop.
+-foreach src [lsort [find $srcdir/$subdir *_main.C]] {
++set tests [lsort [find $srcdir/$subdir *_main.C]]
++if { $use_alt != 0 } then {
++    set tests [prune $tests $srcdir/$subdir/decimal/*]
++}
++
++foreach src $tests {
+     # If we're only testing specific files and this isn't one of them, skip it.
+     if ![runtest_file_p $runtests $src] then {
+ 	continue
+--- gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c.jj	2011-01-03 06:49:58.000000000 -0500
++++ gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c	2011-02-18 06:27:54.922262671 -0500
+@@ -1912,6 +1912,8 @@ generate_random_tests (enum FEATURE feat
+   int i, r;
+   if (len > 'z' - 'a' + 1)
+     abort ();
++  if (getenv ("ALT_CC_UNDER_TEST") != NULL)
++    features &= ~FEATURE_VECTOR;
+   memset (e, 0, sizeof (e));
+   r = generate_random ();
+   if ((r & 7) == 0)
+--- gcc/testsuite/lib/c-compat.exp.jj	2011-01-03 06:48:38.000000000 -0500
++++ gcc/testsuite/lib/c-compat.exp	2011-02-18 06:38:19.124265008 -0500
+@@ -75,7 +75,7 @@ proc compat_setup_dfp { } {
+     # If there is an alternate compiler, does it support decimal float types?
+     if { $compat_have_dfp == 1 && $compat_use_alt == 1 && $compat_same_alt == 0 } {
+ 	compat-use-alt-compiler
+-	set compat_have_dfp [check_effective_target_dfprt_nocache]
++	set compat_have_dfp 0
+ 	compat-use-tst-compiler
+ 	verbose "compat_have_dfp for alt compiler: $compat_have_dfp" 2
+     }
diff --git a/SOURCES/gcc9-d-shared-libphobos.patch b/SOURCES/gcc9-d-shared-libphobos.patch
new file mode 100644
index 0000000..392d631
--- /dev/null
+++ b/SOURCES/gcc9-d-shared-libphobos.patch
@@ -0,0 +1,20 @@
+2019-01-17  Jakub Jelinek  <jakub@redhat.com>
+
+	* d-spec.cc (lang_specific_driver): Make -shared-libphobos
+	the default rather than -static-libphobos.
+
+--- gcc/d/d-spec.cc.jj	2019-01-01 12:37:49.502444257 +0100
++++ gcc/d/d-spec.cc	2019-01-17 17:09:45.364949246 +0100
+@@ -405,9 +405,9 @@ lang_specific_driver (cl_decoded_option
+   /* Add `-lgphobos' if we haven't already done so.  */
+   if (phobos_library != PHOBOS_NOLINK && need_phobos)
+     {
+-      /* Default to static linking.  */
+-      if (phobos_library != PHOBOS_DYNAMIC)
+-	phobos_library = PHOBOS_STATIC;
++      /* Default to shared linking.  */
++      if (phobos_library != PHOBOS_STATIC)
++	phobos_library = PHOBOS_DYNAMIC;
+ 
+ #ifdef HAVE_LD_STATIC_DYNAMIC
+       if (phobos_library == PHOBOS_DYNAMIC && static_link)
diff --git a/SOURCES/gcc9-foffload-default.patch b/SOURCES/gcc9-foffload-default.patch
new file mode 100644
index 0000000..ac462f1
--- /dev/null
+++ b/SOURCES/gcc9-foffload-default.patch
@@ -0,0 +1,122 @@
+2019-01-17  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc.c (offload_targets_default): New variable.
+	(process_command): Set it if -foffload is defaulted.
+	(driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1
+	into environment if -foffload has been defaulted.
+	* lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define.
+	(compile_offload_image): If OFFLOAD_TARGET_DEFAULT
+	is in the environment, don't fail if corresponding mkoffload
+	can't be found.
+	(compile_images_for_offload_targets): Likewise.  Free and clear
+	offload_names if no valid offload is found.
+libgomp/
+	* target.c (gomp_load_plugin_for_device): If a plugin can't be
+	dlopened, assume it has no devices silently.
+
+--- gcc/gcc.c.jj	2017-01-17 10:28:40.000000000 +0100
++++ gcc/gcc.c	2017-01-20 16:26:29.649962902 +0100
+@@ -290,6 +290,10 @@ static const char *spec_host_machine = D
+ 
+ static char *offload_targets = NULL;
+ 
++/* Set to true if -foffload has not been used and offload_targets
++   is set to the configured in default.  */
++static bool offload_targets_default;
++
+ /* Nonzero if cross-compiling.
+    When -b is used, the value comes from the `specs' file.  */
+ 
+@@ -4457,7 +4461,10 @@ process_command (unsigned int decoded_op
+   /* If the user didn't specify any, default to all configured offload
+      targets.  */
+   if (ENABLE_OFFLOADING && offload_targets == NULL)
+-    handle_foffload_option (OFFLOAD_TARGETS);
++    {
++      handle_foffload_option (OFFLOAD_TARGETS);
++      offload_targets_default = true;
++    }
+ 
+   if (output_file
+       && strcmp (output_file, "-") != 0
+@@ -7693,6 +7700,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS ()
+       obstack_grow (&collect_obstack, offload_targets,
+ 		    strlen (offload_targets) + 1);
+       xputenv (XOBFINISH (&collect_obstack, char *));
++      if (offload_targets_default)
++	  xputenv ("OFFLOAD_TARGET_DEFAULT=1");
+     }
+ 
+   free (offload_targets);
+--- gcc/lto-wrapper.c.jj	2017-01-01 12:45:34.000000000 +0100
++++ gcc/lto-wrapper.c	2017-01-20 16:34:18.294016997 +0100
+@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3.
+ /* Environment variable, used for passing the names of offload targets from GCC
+    driver to lto-wrapper.  */
+ #define OFFLOAD_TARGET_NAMES_ENV	"OFFLOAD_TARGET_NAMES"
++#define OFFLOAD_TARGET_DEFAULT_ENV	"OFFLOAD_TARGET_DEFAULT"
+ 
+ enum lto_mode_d {
+   LTO_MODE_NONE,			/* Not doing LTO.  */
+@@ -820,6 +821,12 @@ compile_offload_image (const char *targe
+ 	break;
+       }
+ 
++  if (!compiler && getenv (OFFLOAD_TARGET_DEFAULT_ENV))
++    {
++      free_array_of_ptrs ((void **) paths, n_paths);
++      return NULL;
++    }
++
+   if (!compiler)
+     fatal_error (input_location,
+ 		 "could not find %s in %s (consider using %<-B%>)\n",
+@@ -883,6 +890,7 @@ compile_images_for_offload_targets (unsi
+   unsigned num_targets = parse_env_var (target_names, &names, NULL);
+ 
+   int next_name_entry = 0;
++  bool hsa_seen = false;
+   const char *compiler_path = getenv ("COMPILER_PATH");
+   if (!compiler_path)
+     goto out;
+@@ -895,18 +903,26 @@ compile_images_for_offload_targets (unsi
+       /* HSA does not use LTO-like streaming and a different compiler, skip
+ 	 it. */
+       if (strcmp (names[i], "hsa") == 0)
+-	continue;
++	{
++	  hsa_seen = true;
++	  continue;
++	}
+ 
+       offload_names[next_name_entry]
+ 	= compile_offload_image (names[i], compiler_path, in_argc, in_argv,
+ 				 compiler_opts, compiler_opt_count,
+ 				 linker_opts, linker_opt_count);
+       if (!offload_names[next_name_entry])
+-	fatal_error (input_location,
+-		     "problem with building target image for %s\n", names[i]);
++	continue;
+       next_name_entry++;
+     }
+ 
++  if (next_name_entry == 0 && !hsa_seen)
++    {
++      free (offload_names);
++      offload_names = NULL;
++    }
++
+  out:
+   free_array_of_ptrs ((void **) names, num_targets);
+ }
+--- libgomp/target.c.jj	2017-01-01 12:45:52.000000000 +0100
++++ libgomp/target.c	2017-01-20 20:12:13.756710875 +0100
+@@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp
+ 
+   void *plugin_handle = dlopen (plugin_name, RTLD_LAZY);
+   if (!plugin_handle)
+-    goto dl_fail;
++    return 0;
+ 
+   /* Check if all required functions are available in the plugin and store
+      their handlers.  None of the symbols can legitimately be NULL,
diff --git a/SOURCES/gcc9-hack.patch b/SOURCES/gcc9-hack.patch
new file mode 100644
index 0000000..ba80c24
--- /dev/null
+++ b/SOURCES/gcc9-hack.patch
@@ -0,0 +1,126 @@
+--- libada/Makefile.in.jj	2019-01-09 13:01:18.015608205 +0100
++++ libada/Makefile.in	2019-01-11 18:16:23.441726931 +0100
+@@ -71,18 +71,40 @@ version := $(shell @get_gcc_base_ver@ $(
+ libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
+ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
+ 
++DEFAULTMULTIFLAGS :=
++ifeq ($(MULTISUBDIR),)
++targ:=$(subst -, ,$(target))
++arch:=$(word 1,$(targ))
++ifeq ($(words $(targ)),2)
++osys:=$(word 2,$(targ))
++else
++osys:=$(word 3,$(targ))
++endif
++ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),)
++ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
++DEFAULTMULTIFLAGS := -m64
++else
++ifeq ($(strip $(filter-out s390%, $(arch))),)
++DEFAULTMULTIFLAGS := -m31
++else
++DEFAULTMULTIFLAGS := -m32
++endif
++endif
++endif
++endif
++
+ # exeext should not be used because it's the *host* exeext.  We're building
+ # a *target* library, aren't we?!?  Likewise for CC.  Still, provide bogus
+ # definitions just in case something slips through the safety net provided
+ # by recursive make invocations in gcc/ada/Makefile.in
+ LIBADA_FLAGS_TO_PASS = \
+         "MAKEOVERRIDES=" \
+-        "LDFLAGS=$(LDFLAGS)" \
++        "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
+         "LN_S=$(LN_S)" \
+         "SHELL=$(SHELL)" \
+-        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
+-        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
+-        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
++        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
+         "PICFLAG_FOR_TARGET=$(PICFLAG)" \
+         "THREAD_KIND=$(THREAD_KIND)" \
+         "TRACE=$(TRACE)" \
+@@ -93,7 +115,7 @@ LIBADA_FLAGS_TO_PASS = \
+         "exeext=.exeext.should.not.be.used " \
+ 	'CC=the.host.compiler.should.not.be.needed' \
+ 	"GCC_FOR_TARGET=$(CC)" \
+-        "CFLAGS=$(CFLAGS)"
++        "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
+ 
+ .PHONY: libada gnatlib gnatlib-shared gnatlib-sjlj gnatlib-zcx osconstool
+ 
+--- config-ml.in.jj	2019-01-09 12:50:16.646501448 +0100
++++ config-ml.in	2019-01-11 18:16:23.442726914 +0100
+@@ -511,6 +511,8 @@ multi-do:
+ 				ADAFLAGS="$(ADAFLAGS) $${flags}" \
+ 				prefix="$(prefix)" \
+ 				exec_prefix="$(exec_prefix)" \
++				mandir="$(mandir)" \
++				infodir="$(infodir)" \
+ 				GOCFLAGS="$(GOCFLAGS) $${flags}" \
+ 				GDCFLAGS="$(GDCFLAGS) $${flags}" \
+ 				CXXFLAGS="$(CXXFLAGS) $${flags}" \
+--- libcpp/macro.c.jj	2019-01-09 13:01:21.420552123 +0100
++++ libcpp/macro.c	2019-01-11 18:18:17.736876285 +0100
+@@ -3256,8 +3256,6 @@ static cpp_macro *
+ create_iso_definition (cpp_reader *pfile)
+ {
+   bool following_paste_op = false;
+-  const char *paste_op_error_msg =
+-    N_("'##' cannot appear at either end of a macro expansion");
+   unsigned int num_extra_tokens = 0;
+   unsigned nparms = 0;
+   cpp_hashnode **params = NULL;
+@@ -3382,7 +3380,9 @@ create_iso_definition (cpp_reader *pfile
+ 	     function-like macros, but not at the end.  */
+ 	  if (following_paste_op)
+ 	    {
+-	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++	      cpp_error (pfile, CPP_DL_ERROR,
++			 "'##' cannot appear at either end of a macro "
++			 "expansion");
+ 	      goto out;
+ 	    }
+ 	  if (!vaopt_tracker.completed ())
+@@ -3397,7 +3397,9 @@ create_iso_definition (cpp_reader *pfile
+ 	     function-like macros, but not at the beginning.  */
+ 	  if (macro->count == 1)
+ 	    {
+-	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++	      cpp_error (pfile, CPP_DL_ERROR,
++			 "'##' cannot appear at either end of a macro "
++			 "expansion");
+ 	      goto out;
+ 	    }
+ 
+--- libcpp/expr.c.jj	2019-01-09 13:01:22.415535734 +0100
++++ libcpp/expr.c	2019-01-11 18:16:23.444726882 +0100
+@@ -788,16 +788,17 @@ cpp_classify_number (cpp_reader *pfile,
+       if ((result & CPP_N_WIDTH) == CPP_N_LARGE
+ 	  && CPP_OPTION (pfile, cpp_warn_long_long))
+         {
+-          const char *message = CPP_OPTION (pfile, cplusplus) 
+-				? N_("use of C++11 long long integer constant")
+-		                : N_("use of C99 long long integer constant");
+-
+ 	  if (CPP_OPTION (pfile, c99))
+             cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
+-				   0, message);
++				   0, CPP_OPTION (pfile, cplusplus)
++				      ? N_("use of C++11 long long integer constant")
++				      : N_("use of C99 long long integer constant"));
+           else
+             cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
+-				      virtual_location, 0, message);
++				      virtual_location, 0,
++				      CPP_OPTION (pfile, cplusplus)
++				      ? N_("use of C++11 long long integer constant")
++				      : N_("use of C99 long long integer constant"));
+         }
+ 
+       result |= CPP_N_INTEGER;
diff --git a/SOURCES/gcc9-i386-libgomp.patch b/SOURCES/gcc9-i386-libgomp.patch
new file mode 100644
index 0000000..520561e
--- /dev/null
+++ b/SOURCES/gcc9-i386-libgomp.patch
@@ -0,0 +1,11 @@
+--- libgomp/configure.tgt.jj	2008-01-10 20:53:48.000000000 +0100
++++ libgomp/configure.tgt	2008-03-27 12:44:51.000000000 +0100
+@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
+ 	    ;;
+ 	  *)
+ 	    if test -z "$with_arch"; then
+-	      XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
++	      XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
+ 	    fi
+ 	esac
+ 	;;
diff --git a/SOURCES/gcc9-isl-dl.patch b/SOURCES/gcc9-isl-dl.patch
new file mode 100644
index 0000000..46d3b0d
--- /dev/null
+++ b/SOURCES/gcc9-isl-dl.patch
@@ -0,0 +1,715 @@
+--- gcc/Makefile.in.jj	2015-06-06 10:00:25.000000000 +0200
++++ gcc/Makefile.in	2015-11-04 14:56:02.643536437 +0100
+@@ -1046,7 +1046,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
+ # and the system's installed libraries.
+ LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
+ 	$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
+-BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
++BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
+ 	$(ZLIB)
+ # Any system libraries needed just for GNAT.
+ SYSLIBS = @GNAT_LIBEXC@
+@@ -2196,6 +2196,15 @@ $(out_object_file): $(out_file)
+ $(common_out_object_file): $(common_out_file)
+ 	$(COMPILE) $<
+ 	$(POSTCOMPILE)
++
++graphite%.o : \
++  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite.o : \
++  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite%.o : \
++  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
++graphite.o : \
++  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
+ #
+ # Generate header and source files from the machine description,
+ # and compile them.
+--- gcc/graphite.h.jj	2016-01-27 12:44:06.000000000 +0100
++++ gcc/graphite.h	2016-01-27 13:26:38.309876856 +0100
+@@ -39,6 +39,590 @@ along with GCC; see the file COPYING3.
+ #include <isl/schedule_node.h>
+ #include <isl/id.h>
+ #include <isl/space.h>
++#include <isl/version.h>
++#include <dlfcn.h>
++
++#define DYNSYMS \
++  DYNSYM (isl_aff_add_coefficient_si); \
++  DYNSYM (isl_aff_free); \
++  DYNSYM (isl_aff_get_space); \
++  DYNSYM (isl_aff_set_coefficient_si); \
++  DYNSYM (isl_aff_set_constant_si); \
++  DYNSYM (isl_aff_zero_on_domain); \
++  DYNSYM (isl_band_free); \
++  DYNSYM (isl_band_get_children); \
++  DYNSYM (isl_band_get_partial_schedule); \
++  DYNSYM (isl_band_has_children); \
++  DYNSYM (isl_band_list_free); \
++  DYNSYM (isl_band_list_get_band); \
++  DYNSYM (isl_band_list_get_ctx); \
++  DYNSYM (isl_band_list_n_band); \
++  DYNSYM (isl_band_n_member); \
++  DYNSYM (isl_basic_map_add_constraint); \
++  DYNSYM (isl_basic_map_project_out); \
++  DYNSYM (isl_basic_map_universe); \
++  DYNSYM (isl_constraint_set_coefficient_si); \
++  DYNSYM (isl_constraint_set_constant_si); \
++  DYNSYM (isl_ctx_alloc); \
++  DYNSYM (isl_ctx_free); \
++  DYNSYM (isl_equality_alloc); \
++  DYNSYM (isl_id_alloc); \
++  DYNSYM (isl_id_copy); \
++  DYNSYM (isl_id_free); \
++  DYNSYM (isl_inequality_alloc); \
++  DYNSYM (isl_local_space_copy); \
++  DYNSYM (isl_local_space_free); \
++  DYNSYM (isl_local_space_from_space); \
++  DYNSYM (isl_local_space_range); \
++  DYNSYM (isl_map_add_constraint); \
++  DYNSYM (isl_map_add_dims); \
++  DYNSYM (isl_map_align_params); \
++  DYNSYM (isl_map_apply_range); \
++  DYNSYM (isl_map_copy); \
++  DYNSYM (isl_map_dim); \
++  DYNSYM (isl_map_dump); \
++  DYNSYM (isl_map_equate); \
++  DYNSYM (isl_map_fix_si); \
++  DYNSYM (isl_map_flat_product); \
++  DYNSYM (isl_map_flat_range_product); \
++  DYNSYM (isl_map_free); \
++  DYNSYM (isl_map_from_basic_map); \
++  DYNSYM (isl_map_from_pw_aff); \
++  DYNSYM (isl_map_from_union_map); \
++  DYNSYM (isl_map_get_ctx); \
++  DYNSYM (isl_map_get_space); \
++  DYNSYM (isl_map_get_tuple_id); \
++  DYNSYM (isl_map_insert_dims); \
++  DYNSYM (isl_map_intersect); \
++  DYNSYM (isl_map_intersect_domain); \
++  DYNSYM (isl_map_intersect_range); \
++  DYNSYM (isl_map_is_empty); \
++  DYNSYM (isl_map_lex_ge); \
++  DYNSYM (isl_map_lex_le); \
++  DYNSYM (isl_map_n_out); \
++  DYNSYM (isl_map_range); \
++  DYNSYM (isl_map_set_tuple_id); \
++  DYNSYM (isl_map_universe); \
++  DYNSYM (isl_options_set_on_error); \
++  DYNSYM (isl_options_set_schedule_serialize_sccs); \
++  DYNSYM (isl_printer_set_yaml_style); \
++  DYNSYM (isl_options_set_schedule_max_constant_term); \
++  DYNSYM (isl_options_set_schedule_maximize_band_depth); \
++  DYNSYM (isl_printer_free); \
++  DYNSYM (isl_printer_print_aff); \
++  DYNSYM (isl_printer_print_constraint); \
++  DYNSYM (isl_printer_print_map); \
++  DYNSYM (isl_printer_print_set); \
++  DYNSYM (isl_printer_to_file); \
++  DYNSYM (isl_pw_aff_add); \
++  DYNSYM (isl_pw_aff_alloc); \
++  DYNSYM (isl_pw_aff_copy); \
++  DYNSYM (isl_pw_aff_eq_set); \
++  DYNSYM (isl_pw_aff_free); \
++  DYNSYM (isl_pw_aff_from_aff); \
++  DYNSYM (isl_pw_aff_ge_set); \
++  DYNSYM (isl_pw_aff_gt_set); \
++  DYNSYM (isl_pw_aff_is_cst); \
++  DYNSYM (isl_pw_aff_le_set); \
++  DYNSYM (isl_pw_aff_lt_set); \
++  DYNSYM (isl_pw_aff_mul); \
++  DYNSYM (isl_pw_aff_ne_set); \
++  DYNSYM (isl_pw_aff_nonneg_set); \
++  DYNSYM (isl_pw_aff_set_tuple_id); \
++  DYNSYM (isl_pw_aff_sub); \
++  DYNSYM (isl_pw_aff_zero_set); \
++  DYNSYM (isl_schedule_free); \
++  DYNSYM (isl_schedule_get_band_forest); \
++  DYNSYM (isl_set_add_constraint); \
++  DYNSYM (isl_set_add_dims); \
++  DYNSYM (isl_set_apply); \
++  DYNSYM (isl_set_coalesce); \
++  DYNSYM (isl_set_copy); \
++  DYNSYM (isl_set_dim); \
++  DYNSYM (isl_set_fix_si); \
++  DYNSYM (isl_set_free); \
++  DYNSYM (isl_set_get_space); \
++  DYNSYM (isl_set_get_tuple_id); \
++  DYNSYM (isl_set_intersect); \
++  DYNSYM (isl_set_is_empty); \
++  DYNSYM (isl_set_n_dim); \
++  DYNSYM (isl_set_nat_universe); \
++  DYNSYM (isl_set_project_out); \
++  DYNSYM (isl_set_set_tuple_id); \
++  DYNSYM (isl_set_universe); \
++  DYNSYM (isl_space_add_dims); \
++  DYNSYM (isl_space_alloc); \
++  DYNSYM (isl_space_copy); \
++  DYNSYM (isl_space_dim); \
++  DYNSYM (isl_space_domain); \
++  DYNSYM (isl_space_find_dim_by_id); \
++  DYNSYM (isl_space_free); \
++  DYNSYM (isl_space_from_domain); \
++  DYNSYM (isl_space_get_tuple_id); \
++  DYNSYM (isl_space_params_alloc); \
++  DYNSYM (isl_space_range); \
++  DYNSYM (isl_space_set_alloc); \
++  DYNSYM (isl_space_set_dim_id); \
++  DYNSYM (isl_space_set_tuple_id); \
++  DYNSYM (isl_union_map_add_map); \
++  DYNSYM (isl_union_map_align_params); \
++  DYNSYM (isl_union_map_apply_domain); \
++  DYNSYM (isl_union_map_apply_range); \
++  DYNSYM (isl_union_map_compute_flow); \
++  DYNSYM (isl_union_map_copy); \
++  DYNSYM (isl_union_map_empty); \
++  DYNSYM (isl_union_map_flat_range_product); \
++  DYNSYM (isl_union_map_foreach_map); \
++  DYNSYM (isl_union_map_free); \
++  DYNSYM (isl_union_map_from_map); \
++  DYNSYM (isl_union_map_get_ctx); \
++  DYNSYM (isl_union_map_get_space); \
++  DYNSYM (isl_union_map_gist_domain); \
++  DYNSYM (isl_union_map_gist_range); \
++  DYNSYM (isl_union_map_intersect_domain); \
++  DYNSYM (isl_union_map_is_empty); \
++  DYNSYM (isl_union_map_subtract); \
++  DYNSYM (isl_union_map_union); \
++  DYNSYM (isl_union_set_add_set); \
++  DYNSYM (isl_union_set_compute_schedule); \
++  DYNSYM (isl_union_set_copy); \
++  DYNSYM (isl_union_set_empty); \
++  DYNSYM (isl_union_set_from_set); \
++  DYNSYM (isl_aff_add_constant_val); \
++  DYNSYM (isl_aff_get_coefficient_val); \
++  DYNSYM (isl_aff_get_ctx); \
++  DYNSYM (isl_aff_mod_val); \
++  DYNSYM (isl_ast_build_ast_from_schedule); \
++  DYNSYM (isl_ast_build_free); \
++  DYNSYM (isl_ast_build_from_context); \
++  DYNSYM (isl_ast_build_get_ctx); \
++  DYNSYM (isl_ast_build_get_schedule); \
++  DYNSYM (isl_ast_build_get_schedule_space); \
++  DYNSYM (isl_ast_build_set_before_each_for); \
++  DYNSYM (isl_ast_build_set_options); \
++  DYNSYM (isl_ast_expr_free); \
++  DYNSYM (isl_ast_expr_from_val); \
++  DYNSYM (isl_ast_expr_get_ctx); \
++  DYNSYM (isl_ast_expr_get_id); \
++  DYNSYM (isl_ast_expr_get_op_arg); \
++  DYNSYM (isl_ast_expr_get_op_n_arg); \
++  DYNSYM (isl_ast_expr_get_op_type); \
++  DYNSYM (isl_ast_expr_get_type); \
++  DYNSYM (isl_ast_expr_get_val); \
++  DYNSYM (isl_ast_expr_sub); \
++  DYNSYM (isl_ast_node_block_get_children); \
++  DYNSYM (isl_ast_node_for_get_body); \
++  DYNSYM (isl_ast_node_for_get_cond); \
++  DYNSYM (isl_ast_node_for_get_inc); \
++  DYNSYM (isl_ast_node_for_get_init); \
++  DYNSYM (isl_ast_node_for_get_iterator); \
++  DYNSYM (isl_ast_node_free); \
++  DYNSYM (isl_ast_node_get_annotation); \
++  DYNSYM (isl_ast_node_get_type); \
++  DYNSYM (isl_ast_node_if_get_cond); \
++  DYNSYM (isl_ast_node_if_get_else); \
++  DYNSYM (isl_ast_node_if_get_then); \
++  DYNSYM (isl_ast_node_list_free); \
++  DYNSYM (isl_ast_node_list_get_ast_node); \
++  DYNSYM (isl_ast_node_list_n_ast_node); \
++  DYNSYM (isl_ast_node_user_get_expr); \
++  DYNSYM (isl_constraint_set_coefficient_val); \
++  DYNSYM (isl_constraint_set_constant_val); \
++  DYNSYM (isl_id_get_user); \
++  DYNSYM (isl_local_space_get_ctx); \
++  DYNSYM (isl_map_fix_val); \
++  DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
++  DYNSYM (isl_printer_print_ast_node); \
++  DYNSYM (isl_printer_print_str); \
++  DYNSYM (isl_printer_set_output_format); \
++  DYNSYM (isl_pw_aff_mod_val); \
++  DYNSYM (isl_schedule_constraints_compute_schedule); \
++  DYNSYM (isl_schedule_constraints_on_domain); \
++  DYNSYM (isl_schedule_constraints_set_coincidence); \
++  DYNSYM (isl_schedule_constraints_set_proximity); \
++  DYNSYM (isl_schedule_constraints_set_validity); \
++  DYNSYM (isl_set_get_dim_id); \
++  DYNSYM (isl_set_max_val); \
++  DYNSYM (isl_set_min_val); \
++  DYNSYM (isl_set_params); \
++  DYNSYM (isl_space_align_params); \
++  DYNSYM (isl_space_map_from_domain_and_range); \
++  DYNSYM (isl_space_set_tuple_name); \
++  DYNSYM (isl_space_wrap); \
++  DYNSYM (isl_union_map_from_domain_and_range); \
++  DYNSYM (isl_union_map_range); \
++  DYNSYM (isl_union_set_union); \
++  DYNSYM (isl_union_set_universe); \
++  DYNSYM (isl_val_2exp); \
++  DYNSYM (isl_val_add_ui); \
++  DYNSYM (isl_val_copy); \
++  DYNSYM (isl_val_free); \
++  DYNSYM (isl_val_int_from_si); \
++  DYNSYM (isl_val_int_from_ui); \
++  DYNSYM (isl_val_mul); \
++  DYNSYM (isl_val_neg); \
++  DYNSYM (isl_val_sub); \
++  DYNSYM (isl_printer_print_union_map); \
++  DYNSYM (isl_pw_aff_get_ctx); \
++  DYNSYM (isl_val_is_int); \
++  DYNSYM (isl_ctx_get_max_operations); \
++  DYNSYM (isl_ctx_set_max_operations); \
++  DYNSYM (isl_ctx_last_error); \
++  DYNSYM (isl_ctx_reset_operations); \
++  DYNSYM (isl_map_coalesce); \
++  DYNSYM (isl_printer_print_schedule); \
++  DYNSYM (isl_set_set_dim_id); \
++  DYNSYM (isl_union_map_coalesce); \
++  DYNSYM (isl_multi_val_set_val); \
++  DYNSYM (isl_multi_val_zero); \
++  DYNSYM (isl_options_set_schedule_max_coefficient); \
++  DYNSYM (isl_options_set_tile_scale_tile_loops); \
++  DYNSYM (isl_schedule_copy); \
++  DYNSYM (isl_schedule_get_map); \
++  DYNSYM (isl_schedule_map_schedule_node_bottom_up); \
++  DYNSYM (isl_schedule_node_band_get_permutable); \
++  DYNSYM (isl_schedule_node_band_get_space); \
++  DYNSYM (isl_schedule_node_band_tile); \
++  DYNSYM (isl_schedule_node_child); \
++  DYNSYM (isl_schedule_node_free); \
++  DYNSYM (isl_schedule_node_get_child); \
++  DYNSYM (isl_schedule_node_get_ctx); \
++  DYNSYM (isl_schedule_node_get_type); \
++  DYNSYM (isl_schedule_node_n_children); \
++  DYNSYM (isl_union_map_is_equal); \
++  DYNSYM (isl_union_access_info_compute_flow); \
++  DYNSYM (isl_union_access_info_from_sink); \
++  DYNSYM (isl_union_access_info_set_may_source); \
++  DYNSYM (isl_union_access_info_set_must_source); \
++  DYNSYM (isl_union_access_info_set_schedule); \
++  DYNSYM (isl_union_flow_free); \
++  DYNSYM (isl_union_flow_get_may_dependence); \
++  DYNSYM (isl_union_flow_get_must_dependence); \
++  DYNSYM (isl_aff_var_on_domain); \
++  DYNSYM (isl_multi_aff_from_aff); \
++  DYNSYM (isl_schedule_get_ctx); \
++  DYNSYM (isl_multi_aff_set_tuple_id); \
++  DYNSYM (isl_multi_aff_dim); \
++  DYNSYM (isl_schedule_get_domain); \
++  DYNSYM (isl_union_set_is_empty); \
++  DYNSYM (isl_union_set_get_space); \
++  DYNSYM (isl_union_pw_multi_aff_empty); \
++  DYNSYM (isl_union_set_foreach_set); \
++  DYNSYM (isl_union_set_free); \
++  DYNSYM (isl_multi_union_pw_aff_from_union_pw_multi_aff); \
++  DYNSYM (isl_multi_union_pw_aff_apply_multi_aff); \
++  DYNSYM (isl_schedule_insert_partial_schedule); \
++  DYNSYM (isl_union_pw_multi_aff_free); \
++  DYNSYM (isl_pw_multi_aff_project_out_map); \
++  DYNSYM (isl_union_pw_multi_aff_add_pw_multi_aff); \
++  DYNSYM (isl_schedule_from_domain); \
++  DYNSYM (isl_schedule_sequence); \
++  DYNSYM (isl_ast_build_node_from_schedule); \
++  DYNSYM (isl_ast_node_mark_get_node); \
++  DYNSYM (isl_schedule_node_band_member_get_ast_loop_type); \
++  DYNSYM (isl_schedule_node_band_member_set_ast_loop_type); \
++  DYNSYM (isl_val_n_abs_num_chunks); \
++  DYNSYM (isl_val_get_abs_num_chunks); \
++  DYNSYM (isl_val_int_from_chunks); \
++  DYNSYM (isl_val_is_neg); \
++  DYNSYM (isl_version); \
++  DYNSYM (isl_options_get_on_error); \
++  DYNSYM (isl_ctx_reset_error);
++
++extern struct isl_pointers_s__
++{
++  bool inited;
++  void *h;
++#define DYNSYM(x) __typeof (x) *p_##x
++  DYNSYMS
++#undef DYNSYM
++} isl_pointers__;
++
++#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
++#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
++#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
++#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
++#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
++#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
++#define isl_band_free (*isl_pointers__.p_isl_band_free)
++#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
++#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
++#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
++#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
++#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
++#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
++#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
++#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
++#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
++#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
++#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
++#define isl_constraint_set_coefficient_si (*isl_pointers__.p_isl_constraint_set_coefficient_si)
++#define isl_constraint_set_constant_si (*isl_pointers__.p_isl_constraint_set_constant_si)
++#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
++#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
++#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
++#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
++#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
++#define isl_id_free (*isl_pointers__.p_isl_id_free)
++#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
++#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
++#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
++#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
++#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
++#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
++#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
++#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
++#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
++#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
++#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
++#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
++#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
++#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
++#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
++#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
++#define isl_map_free (*isl_pointers__.p_isl_map_free)
++#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
++#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
++#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
++#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
++#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
++#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
++#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
++#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
++#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
++#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
++#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
++#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
++#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
++#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
++#define isl_map_range (*isl_pointers__.p_isl_map_range)
++#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
++#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
++#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
++#define isl_options_set_schedule_serialize_sccs (*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
++#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style)
++#define isl_options_set_schedule_max_constant_term (*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
++#define isl_options_set_schedule_maximize_band_depth (*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
++#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
++#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
++#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
++#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
++#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
++#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
++#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
++#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
++#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
++#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
++#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
++#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
++#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
++#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
++#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
++#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
++#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
++#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
++#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
++#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
++#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
++#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
++#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
++#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
++#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
++#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
++#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
++#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
++#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
++#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
++#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
++#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
++#define isl_set_free (*isl_pointers__.p_isl_set_free)
++#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
++#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
++#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
++#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
++#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
++#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
++#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
++#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
++#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
++#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
++#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
++#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
++#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
++#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
++#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
++#define isl_space_free (*isl_pointers__.p_isl_space_free)
++#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
++#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
++#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
++#define isl_space_range (*isl_pointers__.p_isl_space_range)
++#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
++#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
++#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
++#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
++#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
++#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
++#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
++#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
++#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
++#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
++#define isl_union_map_flat_range_product (*isl_pointers__.p_isl_union_map_flat_range_product)
++#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
++#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
++#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
++#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
++#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
++#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
++#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
++#define isl_union_map_intersect_domain (*isl_pointers__.p_isl_union_map_intersect_domain)
++#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
++#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
++#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
++#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
++#define isl_union_set_compute_schedule (*isl_pointers__.p_isl_union_set_compute_schedule)
++#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
++#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
++#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
++#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
++#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
++#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
++#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
++#define isl_ast_build_ast_from_schedule (*isl_pointers__.p_isl_ast_build_ast_from_schedule)
++#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
++#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
++#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
++#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
++#define isl_ast_build_get_schedule_space (*isl_pointers__.p_isl_ast_build_get_schedule_space)
++#define isl_ast_build_set_before_each_for (*isl_pointers__.p_isl_ast_build_set_before_each_for)
++#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
++#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
++#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
++#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
++#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
++#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
++#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
++#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
++#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
++#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
++#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
++#define isl_ast_node_block_get_children (*isl_pointers__.p_isl_ast_node_block_get_children)
++#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
++#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
++#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
++#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
++#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
++#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
++#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
++#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
++#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
++#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
++#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
++#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
++#define isl_ast_node_list_get_ast_node (*isl_pointers__.p_isl_ast_node_list_get_ast_node)
++#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
++#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
++#define isl_constraint_set_coefficient_val (*isl_pointers__.p_isl_constraint_set_coefficient_val)
++#define isl_constraint_set_constant_val (*isl_pointers__.p_isl_constraint_set_constant_val)
++#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
++#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
++#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
++#define isl_options_set_ast_build_atomic_upper_bound (*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
++#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
++#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
++#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
++#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
++#define isl_schedule_constraints_compute_schedule (*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
++#define isl_schedule_constraints_on_domain (*isl_pointers__.p_isl_schedule_constraints_on_domain)
++#define isl_schedule_constraints_set_coincidence (*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
++#define isl_schedule_constraints_set_proximity (*isl_pointers__.p_isl_schedule_constraints_set_proximity)
++#define isl_schedule_constraints_set_validity (*isl_pointers__.p_isl_schedule_constraints_set_validity)
++#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
++#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
++#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
++#define isl_set_params (*isl_pointers__.p_isl_set_params)
++#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
++#define isl_space_map_from_domain_and_range (*isl_pointers__.p_isl_space_map_from_domain_and_range)
++#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
++#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
++#define isl_union_map_from_domain_and_range (*isl_pointers__.p_isl_union_map_from_domain_and_range)
++#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
++#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
++#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
++#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
++#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
++#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
++#define isl_val_free (*isl_pointers__.p_isl_val_free)
++#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
++#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
++#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
++#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
++#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
++#define isl_printer_print_union_map (*isl_pointers__.p_isl_printer_print_union_map)
++#define isl_pw_aff_get_ctx (*isl_pointers__.p_isl_pw_aff_get_ctx)
++#define isl_val_is_int (*isl_pointers__.p_isl_val_is_int)
++#define isl_ctx_get_max_operations (*isl_pointers__.p_isl_ctx_get_max_operations)
++#define isl_ctx_set_max_operations (*isl_pointers__.p_isl_ctx_set_max_operations)
++#define isl_ctx_last_error (*isl_pointers__.p_isl_ctx_last_error)
++#define isl_ctx_reset_operations (*isl_pointers__.p_isl_ctx_reset_operations)
++#define isl_map_coalesce (*isl_pointers__.p_isl_map_coalesce)
++#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule)
++#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id)
++#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce)
++#define isl_multi_val_set_val (*isl_pointers__.p_isl_multi_val_set_val)
++#define isl_multi_val_zero (*isl_pointers__.p_isl_multi_val_zero)
++#define isl_options_set_schedule_max_coefficient (*isl_pointers__.p_isl_options_set_schedule_max_coefficient)
++#define isl_options_set_tile_scale_tile_loops (*isl_pointers__.p_isl_options_set_tile_scale_tile_loops)
++#define isl_schedule_copy (*isl_pointers__.p_isl_schedule_copy)
++#define isl_schedule_get_map (*isl_pointers__.p_isl_schedule_get_map)
++#define isl_schedule_map_schedule_node_bottom_up (*isl_pointers__.p_isl_schedule_map_schedule_node_bottom_up)
++#define isl_schedule_node_band_get_permutable (*isl_pointers__.p_isl_schedule_node_band_get_permutable)
++#define isl_schedule_node_band_get_space (*isl_pointers__.p_isl_schedule_node_band_get_space)
++#define isl_schedule_node_band_tile (*isl_pointers__.p_isl_schedule_node_band_tile)
++#define isl_schedule_node_child (*isl_pointers__.p_isl_schedule_node_child)
++#define isl_schedule_node_free (*isl_pointers__.p_isl_schedule_node_free)
++#define isl_schedule_node_get_child (*isl_pointers__.p_isl_schedule_node_get_child)
++#define isl_schedule_node_get_ctx (*isl_pointers__.p_isl_schedule_node_get_ctx)
++#define isl_schedule_node_get_type (*isl_pointers__.p_isl_schedule_node_get_type)
++#define isl_schedule_node_n_children (*isl_pointers__.p_isl_schedule_node_n_children)
++#define isl_union_map_is_equal (*isl_pointers__.p_isl_union_map_is_equal)
++#define isl_union_access_info_compute_flow (*isl_pointers__.p_isl_union_access_info_compute_flow)
++#define isl_union_access_info_from_sink (*isl_pointers__.p_isl_union_access_info_from_sink)
++#define isl_union_access_info_set_may_source (*isl_pointers__.p_isl_union_access_info_set_may_source)
++#define isl_union_access_info_set_must_source (*isl_pointers__.p_isl_union_access_info_set_must_source)
++#define isl_union_access_info_set_schedule (*isl_pointers__.p_isl_union_access_info_set_schedule)
++#define isl_union_flow_free (*isl_pointers__.p_isl_union_flow_free)
++#define isl_union_flow_get_may_dependence (*isl_pointers__.p_isl_union_flow_get_may_dependence)
++#define isl_union_flow_get_must_dependence (*isl_pointers__.p_isl_union_flow_get_must_dependence)
++#define isl_aff_var_on_domain (*isl_pointers__.p_isl_aff_var_on_domain)
++#define isl_multi_aff_from_aff (*isl_pointers__.p_isl_multi_aff_from_aff)
++#define isl_schedule_get_ctx (*isl_pointers__.p_isl_schedule_get_ctx)
++#define isl_multi_aff_set_tuple_id (*isl_pointers__.p_isl_multi_aff_set_tuple_id)
++#define isl_multi_aff_dim (*isl_pointers__.p_isl_multi_aff_dim)
++#define isl_schedule_get_domain (*isl_pointers__.p_isl_schedule_get_domain)
++#define isl_union_set_is_empty (*isl_pointers__.p_isl_union_set_is_empty)
++#define isl_union_set_get_space (*isl_pointers__.p_isl_union_set_get_space)
++#define isl_union_pw_multi_aff_empty (*isl_pointers__.p_isl_union_pw_multi_aff_empty)
++#define isl_union_set_foreach_set (*isl_pointers__.p_isl_union_set_foreach_set)
++#define isl_union_set_free (*isl_pointers__.p_isl_union_set_free)
++#define isl_multi_union_pw_aff_from_union_pw_multi_aff (*isl_pointers__.p_isl_multi_union_pw_aff_from_union_pw_multi_aff)
++#define isl_multi_union_pw_aff_apply_multi_aff (*isl_pointers__.p_isl_multi_union_pw_aff_apply_multi_aff)
++#define isl_schedule_insert_partial_schedule (*isl_pointers__.p_isl_schedule_insert_partial_schedule)
++#define isl_union_pw_multi_aff_free (*isl_pointers__.p_isl_union_pw_multi_aff_free)
++#define isl_pw_multi_aff_project_out_map (*isl_pointers__.p_isl_pw_multi_aff_project_out_map)
++#define isl_union_pw_multi_aff_add_pw_multi_aff (*isl_pointers__.p_isl_union_pw_multi_aff_add_pw_multi_aff)
++#define isl_schedule_from_domain (*isl_pointers__.p_isl_schedule_from_domain)
++#define isl_schedule_sequence (*isl_pointers__.p_isl_schedule_sequence)
++#define isl_ast_build_node_from_schedule (*isl_pointers__.p_isl_ast_build_node_from_schedule)
++#define isl_ast_node_mark_get_node (*isl_pointers__.p_isl_ast_node_mark_get_node)
++#define isl_schedule_node_band_member_get_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_get_ast_loop_type)
++#define isl_schedule_node_band_member_set_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_set_ast_loop_type)
++#define isl_val_n_abs_num_chunks (*isl_pointers__.p_isl_val_n_abs_num_chunks)
++#define isl_val_get_abs_num_chunks (*isl_pointers__.p_isl_val_get_abs_num_chunks)
++#define isl_val_int_from_chunks (*isl_pointers__.p_isl_val_int_from_chunks)
++#define isl_val_is_neg (*isl_pointers__.p_isl_val_is_neg)
++#define isl_version (*isl_pointers__.p_isl_version)
++#define isl_options_get_on_error (*isl_pointers__.p_isl_options_get_on_error)
++#define isl_ctx_reset_error (*isl_pointers__.p_isl_ctx_reset_error)
+ 
+ typedef struct poly_dr *poly_dr_p;
+ 
+@@ -461,5 +1045,6 @@ extern void build_scops (vec<scop_p> *);
+ extern void dot_all_sese (FILE *, vec<sese_l> &);
+ extern void dot_sese (sese_l &);
+ extern void dot_cfg ();
++extern const char *get_isl_version (bool);
+ 
+ #endif
+--- gcc/graphite.c.jj	2015-11-04 14:15:32.000000000 +0100
++++ gcc/graphite.c	2015-11-04 14:56:02.645536409 +0100
+@@ -60,6 +60,35 @@ along with GCC; see the file COPYING3.
+ #include "tree-into-ssa.h"
+ #include "graphite.h"
+ 
++__typeof (isl_pointers__) isl_pointers__;
++
++static bool
++init_isl_pointers (void)
++{
++  void *h;
++
++  if (isl_pointers__.inited)
++    return isl_pointers__.h != NULL;
++  h = dlopen ("libisl.so.15", RTLD_LAZY);
++  isl_pointers__.h = h;
++  if (h == NULL)
++    return false;
++#define DYNSYM(x) \
++  do \
++    { \
++      union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
++      u.q = dlsym (h, #x); \
++      if (u.q == NULL) \
++	return false; \
++      isl_pointers__.p_##x = u.p; \
++    } \
++  while (0)
++  DYNSYMS
++#undef DYNSYM
++  isl_pointers__.inited = true;
++  return true;
++}
++
+ /* Print global statistics to FILE.  */
+ 
+ static void
+@@ -365,6 +394,15 @@ graphite_transform_loops (void)
+   if (parallelized_function_p (cfun->decl))
+     return;
+ 
++  if (number_of_loops (cfun) <= 1)
++    return;
++
++  if (!init_isl_pointers ())
++    {
++      sorry ("Graphite loop optimizations cannot be used");
++      return;
++    }
++
+   calculate_dominance_info (CDI_DOMINATORS);
+ 
+   /* We rely on post-dominators during merging of SESE regions so those
+@@ -455,6 +493,14 @@ graphite_transform_loops (void)
+     }
+ }
+ 
++const char *
++get_isl_version (bool force)
++{
++  if (force)
++    init_isl_pointers ();
++  return (isl_pointers__.inited && isl_version) ? isl_version () : "none";
++}
++
+ #else /* If isl is not available: #ifndef HAVE_isl.  */
+ 
+ static void
+--- gcc/toplev.c.jj	2017-02-19 13:02:31.000000000 +0100
++++ gcc/toplev.c	2017-02-19 16:50:25.536301350 +0100
+@@ -94,6 +94,7 @@ along with GCC; see the file COPYING3.
+ 
+ #ifdef HAVE_isl
+ #include <isl/version.h>
++extern const char *get_isl_version (bool);
+ #endif
+ 
+ static void general_init (const char *, bool);
+@@ -683,7 +684,7 @@ print_version (FILE *file, const char *i
+ #ifndef HAVE_isl
+ 	   "none"
+ #else
+-	   isl_version ()
++	   get_isl_version (*indent == 0)
+ #endif
+ 	   );
+   if (strcmp (GCC_GMP_STRINGIFY_VERSION, gmp_version))
diff --git a/SOURCES/gcc9-isl-dl2.patch b/SOURCES/gcc9-isl-dl2.patch
new file mode 100644
index 0000000..2d85a89
--- /dev/null
+++ b/SOURCES/gcc9-isl-dl2.patch
@@ -0,0 +1,71 @@
+2011-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* toplev.c (toplev_main_argv): New variable.
+	(toplev_main): Initialize it.
+	* graphite.c (init_isl_pointers): Load libisl.so.13 from gcc's private
+	directory.
+
+--- gcc/toplev.c.jj	2008-12-09 23:59:10.000000000 +0100
++++ gcc/toplev.c	2009-01-27 14:33:52.000000000 +0100
+@@ -154,6 +154,8 @@ static bool no_backend;
+ /* Length of line when printing switch values.  */
+ #define MAX_LINE 75
+ 
++const char **toplev_main_argv;
++
+ /* Decoded options, and number of such options.  */
+ struct cl_decoded_option *save_decoded_options;
+ unsigned int save_decoded_options_count;
+@@ -2126,6 +2128,8 @@ toplev::main (int argc, char **argv)
+ 
+   expandargv (&argc, &argv);
+ 
++  toplev_main_argv = CONST_CAST2 (const char **, char **, argv);
++
+   /* Initialization of GCC's environment, and diagnostics.  */
+   general_init (argv[0], m_init_signals);
+ 
+--- gcc/graphite.c.jj	2010-12-01 10:24:32.000000000 -0500
++++ gcc/graphite.c	2010-12-01 11:46:07.832118193 -0500
+@@ -60,11 +60,39 @@ __typeof (isl_pointers__) isl_pointers__
+ static bool
+ init_isl_pointers (void)
+ {
+-  void *h;
++  void *h = NULL;
++  extern const char **toplev_main_argv;
++  char *buf, *p;
++  size_t len;
+ 
+   if (isl_pointers__.inited)
+     return isl_pointers__.h != NULL;
+-  h = dlopen ("libisl.so.15", RTLD_LAZY);
++  len = progname - toplev_main_argv[0];
++  buf = XALLOCAVAR (char, len + sizeof "libisl.so.15");
++  memcpy (buf, toplev_main_argv[0], len);
++  strcpy (buf + len, "libisl.so.15");
++  len += sizeof "libisl.so.15";
++  p = strstr (buf, "/libexec/");
++  if (p != NULL)
++    {
++      while (1)
++	{
++	  char *q = strstr (p + 8, "/libexec/");
++	  if (q == NULL)
++	    break;
++	  p = q;
++	}
++      memmove (p + 4, p + 8, len - (p + 8 - buf));
++      h = dlopen (buf, RTLD_LAZY);
++      if (h == NULL)
++	{
++	  len = progname - toplev_main_argv[0];
++	  memcpy (buf, toplev_main_argv[0], len);
++	  strcpy (buf + len, "libisl.so.15");
++	}
++    }
++  if (h == NULL)
++    h = dlopen (buf, RTLD_LAZY);
+   isl_pointers__.h = h;
+   if (h == NULL)
+     return false;
diff --git a/SOURCES/gcc9-libgfortran-compat.patch b/SOURCES/gcc9-libgfortran-compat.patch
new file mode 100644
index 0000000..59c145a
--- /dev/null
+++ b/SOURCES/gcc9-libgfortran-compat.patch
@@ -0,0 +1,584 @@
+--- libgfortran/Makefile.am.jj	2019-05-02 15:02:58.276261865 +0200
++++ libgfortran/Makefile.am	2019-05-17 12:38:34.269861044 +0200
+@@ -37,6 +37,7 @@ LTLDFLAGS = $(shell $(SHELL) $(top_srcdi
+ 	    $(lt_host_flags)
+ 
+ toolexeclib_LTLIBRARIES = libgfortran.la
++noinst_LTLIBRARIES = libgfortran_nonshared80.la
+ toolexeclib_DATA = libgfortran.spec
+ libgfortran_la_LINK = $(LINK) $(libgfortran_la_LDFLAGS)
+ libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+@@ -1036,6 +1037,85 @@ libgfortran_la_SOURCES = $(prereq_SRC)
+ 
+ endif
+ 
++$(patsubst %.c,%.lo,$(nonshared_generated_C_SRC) $(nonshared)): \
++nonshared-%.lo: $(srcdir)/generated/%.c
++	$(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.c,%.o,$(nonshared_generated_C_SRC) $(nonshared)): \
++nonshared-%.o: $(srcdir)/generated/%.c
++	$(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.c,%.lo,$(nonshared_intrinsics_C_SRC) $(nonshared)): \
++nonshared-%.lo: $(srcdir)/intrinsics/%.c
++	$(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.c,%.o,$(nonshared_intrinsics_C_SRC) $(nonshared)): \
++nonshared-%.o: $(srcdir)/intrinsics/%.c
++	$(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.c,%.lo,$(nonshared_runtime_C_SRC) $(nonshared)): \
++nonshared-%.lo: $(srcdir)/runtime/%.c
++	$(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.c,%.o,$(nonshared_runtime_C_SRC) $(nonshared)): \
++nonshared-%.o: $(srcdir)/runtime/%.c
++	$(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.f90,%.lo,$(nonshared_intrinsics_f90_SRC) $(nonshared)): \
++nonshared-%.lo: $(srcdir)/intrinsics/%.f90
++	$(LTPPFCCOMPILE) -c -o $@ $< -fallow-leading-underscore
++
++$(patsubst %.f90,%.o,$(nonshared_intrinsics_f90_SRC) $(nonshared)): \
++nonshared-%.o: $(srcdir)/intrinsics/%.f90
++	$(PPFCCOMPILE) -c -o $@ $< -fallow-leading-underscore
++
++nonshared_runtime_C_SRC = \
++nonshared-ISO_Fortran_binding.c
++
++nonshared_generated_C_SRC = \
++nonshared-findloc0_i1.c \
++nonshared-findloc0_i2.c \
++nonshared-findloc0_i4.c \
++nonshared-findloc0_i8.c \
++nonshared-findloc0_i16.c \
++nonshared-findloc0_r4.c \
++nonshared-findloc0_r8.c \
++nonshared-findloc0_r16.c \
++nonshared-findloc0_c4.c \
++nonshared-findloc0_c8.c \
++nonshared-findloc0_c16.c \
++nonshared-findloc0_s1.c \
++nonshared-findloc0_s4.c \
++nonshared-findloc1_i1.c \
++nonshared-findloc1_i2.c \
++nonshared-findloc1_i4.c \
++nonshared-findloc1_i8.c \
++nonshared-findloc1_i16.c \
++nonshared-findloc1_r4.c \
++nonshared-findloc1_r8.c \
++nonshared-findloc1_r16.c \
++nonshared-findloc1_c4.c \
++nonshared-findloc1_c8.c \
++nonshared-findloc1_c16.c \
++nonshared-findloc1_s1.c \
++nonshared-findloc1_s4.c \
++nonshared-findloc2_s1.c \
++nonshared-findloc2_s4.c
++
++nonshared_intrinsics_C_SRC = \
++nonshared-is_contiguous.c
++
++nonshared_intrinsics_f90_SRC = \
++nonshared-random_init.f90
++
++libgfortran_nonshared80_la_SOURCES = \
++$(nonshared_runtime_C_SRC) \
++$(nonshared_generated_C_SRC) \
++$(nonshared_intrinsics_C_SRC) \
++$(nonshared_intrinsics_f90_SRC) \
++$(srcdir)/ieee/nonshared-ieee_arithmetic.c \
++$(srcdir)/io/nonshared-transfer.c
++
+ I_M4_DEPS=m4/iparm.m4
+ I_M4_DEPS0=$(I_M4_DEPS) m4/iforeach.m4
+ I_M4_DEPS1=$(I_M4_DEPS) m4/ifunction.m4
+--- libgfortran/libgfortran.h.jj	2019-04-25 20:03:12.299973131 +0200
++++ libgfortran/libgfortran.h	2019-05-17 11:11:16.944997078 +0200
+@@ -195,7 +195,7 @@ extern int __mingw_snprintf (char *, siz
+ # define internal_proto(x)	sym_rename(x, IPREFIX(x))
+ #endif
+ 
+-#if defined(HAVE_ATTRIBUTE_VISIBILITY) && defined(HAVE_ATTRIBUTE_ALIAS)
++#if defined(HAVE_ATTRIBUTE_VISIBILITY) && defined(HAVE_ATTRIBUTE_ALIAS) && !defined(LIBGFORTRAN_NONSHARED)
+ # define export_proto(x)	sym_rename(x, PREFIX(x))
+ # define export_proto_np(x)	extern char swallow_semicolon
+ # define iexport_proto(x)	internal_proto(x)
+@@ -270,6 +270,10 @@ typedef GFC_UINTEGER_4 gfc_char4_t;
+    simply equal to the kind parameter itself.  */
+ #define GFC_SIZE_OF_CHAR_KIND(kind) (kind)
+ 
++#ifdef LIBGFORTRAN_NONSHARED
++#define big_endian (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
++#endif
++
+ #define GFOR_POINTER_TO_L1(p, kind) \
+   ((__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ? 1: 0) * (kind - 1) + (GFC_LOGICAL_1 *)(p))
+ 
+@@ -1769,4 +1773,63 @@ internal_proto(cshift1_16_c16);
+ #define HAVE_GFC_UINTEGER_1 1
+ #define HAVE_GFC_UINTEGER_4 1
+ 
++#ifdef LIBGFORTRAN_NONSHARED
++#include <stdlib.h>
++#include <string.h>              
++#include <errno.h>
++
++#define internal_malloc_size nonshared_internal_malloc_size
++#define xmalloc nonshared_internal_xmalloc
++#define xmallocarray nonshared_internal_xmallocarray
++#define reshape_packed nonshared_reshape_packed
++static inline __attribute__((__always_inline__, __unused__))
++void *
++internal_malloc_size (size_t size)
++{
++  void *p;
++
++  if (size == 0)
++    return NULL;
++
++  p = (void *) malloc (size);
++  if (p == NULL)
++    os_error ("Memory allocation failed");
++  return p;
++}
++
++static inline __attribute__((__always_inline__, __unused__))
++void *
++xmalloc (size_t size)
++{
++  return internal_malloc_size (size ? size : 1);
++}
++
++static inline __attribute__((__always_inline__, __unused__))
++void *
++xmallocarray (size_t nmemb, size_t size)
++{
++  if (!nmemb || !size)
++    size = nmemb = 1;
++  else if (__builtin_expect ((nmemb | size)
++			     >= (((size_t) 1) << (__CHAR_BIT__
++						  * sizeof (size_t) / 2)), 0)
++	   && nmemb > __SIZE_MAX__ / size)
++    {
++      errno = ENOMEM;
++      os_error ("Integer overflow in xmallocarray");
++    }
++
++  return internal_malloc_size (nmemb * size);
++}
++
++static inline __attribute__((__always_inline__, __unused__))
++#include "intrinsics/reshape_packed.c"
++
++struct no_bounds_check { int bounds_check; };
++#define compile_options ((struct no_bounds_check) { .bounds_check = 0 })
++
++#define internal_error(x, y...) runtime_error (y)
++
++#endif
++
+ #endif  /* LIBGFOR_H  */
+--- libgfortran/ieee/nonshared-ieee_arithmetic.c.jj	2019-05-17 11:53:19.151524852 +0200
++++ libgfortran/ieee/nonshared-ieee_arithmetic.c	2019-05-17 12:05:44.160272463 +0200
+@@ -0,0 +1,64 @@
++/* Helper functions in C for IEEE modules
++   Copyright (C) 2013-2019 Free Software Foundation, Inc.
++   Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
++
++This file is part of the GNU Fortran runtime library (libgfortran).
++
++Libgfortran 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 of the License, or (at your option) any later version.
++
++Libgfortran 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
++
++#include "libgfortran.h"
++
++GFC_LOGICAL_4
++__ieee_arithmetic_MOD_ieee_support_subnormal_4 (gfc_array_r4 *arg)
++{
++  (void) arg;
++  return 1;
++}
++
++GFC_LOGICAL_4
++__ieee_arithmetic_MOD_ieee_support_subnormal_8 (gfc_array_r8 *arg)
++{
++  (void) arg;
++  return 1;
++}
++
++#ifdef HAVE_GFC_REAL_10
++GFC_LOGICAL_4
++__ieee_arithmetic_MOD_ieee_support_subnormal_10 (gfc_array_r10 *arg)
++{
++  (void) arg;
++  return 1;
++}
++#endif
++
++#ifdef HAVE_GFC_REAL_16
++GFC_LOGICAL_4
++__ieee_arithmetic_MOD_ieee_support_subnormal_16 (gfc_array_r16 *arg)
++{
++  (void) arg;
++  return 1;
++}
++#endif
++
++GFC_LOGICAL_4
++__ieee_arithmetic_MOD_ieee_support_subnormal_noarg (void)
++{
++  return 1;
++}
+--- libgfortran/io/nonshared-transfer.c.jj	2019-05-17 12:18:32.538630920 +0200
++++ libgfortran/io/nonshared-transfer.c	2019-05-17 12:18:59.216191976 +0200
+@@ -0,0 +1,42 @@
++/* Copyright (C) 2002-2019 Free Software Foundation, Inc.
++   Contributed by Andy Vaught
++   Namelist transfer functions contributed by Paul Thomas
++   F2003 I/O support contributed by Jerry DeLisle
++
++This file is part of the GNU Fortran runtime library (libgfortran).
++
++Libgfortran 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.
++
++Libgfortran 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
++
++
++/* transfer.c -- Top level handling of data transfer statements.  */
++
++#include "io.h"
++#include "fbuf.h"
++#include "format.h"
++#include "unix.h"
++#include "async.h"
++#include <string.h>
++#include <errno.h>
++
++void
++st_wait_async (st_parameter_wait *wtp)
++{
++  (void) wtp;
++}
+--- libgfortran/Makefile.in.jj	2019-05-02 15:02:58.304261418 +0200
++++ libgfortran/Makefile.in	2019-05-17 12:38:53.273548433 +0200
+@@ -216,7 +216,8 @@ am__uninstall_files_from_dir = { \
+ am__installdirs = "$(DESTDIR)$(cafexeclibdir)" \
+ 	"$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" \
+ 	"$(DESTDIR)$(gfor_cdir)" "$(DESTDIR)$(fincludedir)"
+-LTLIBRARIES = $(cafexeclib_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
++LTLIBRARIES = $(cafexeclib_LTLIBRARIES) $(noinst_LTLIBRARIES) \
++	$(toolexeclib_LTLIBRARIES)
+ libcaf_single_la_LIBADD =
+ am_libcaf_single_la_OBJECTS = single.lo
+ libcaf_single_la_OBJECTS = $(am_libcaf_single_la_OBJECTS)
+@@ -463,6 +464,33 @@ am__objects_65 = $(am__objects_3) $(am__
+ @onestep_FALSE@am_libgfortran_la_OBJECTS = $(am__objects_65)
+ @onestep_TRUE@am_libgfortran_la_OBJECTS = libgfortran_c.lo
+ libgfortran_la_OBJECTS = $(am_libgfortran_la_OBJECTS)
++libgfortran_nonshared80_la_LIBADD =
++am__objects_66 = nonshared-ISO_Fortran_binding.lo
++am__objects_67 = nonshared-findloc0_i1.lo nonshared-findloc0_i2.lo \
++	nonshared-findloc0_i4.lo nonshared-findloc0_i8.lo \
++	nonshared-findloc0_i16.lo nonshared-findloc0_r4.lo \
++	nonshared-findloc0_r8.lo nonshared-findloc0_r16.lo \
++	nonshared-findloc0_c4.lo nonshared-findloc0_c8.lo \
++	nonshared-findloc0_c16.lo nonshared-findloc0_s1.lo \
++	nonshared-findloc0_s4.lo nonshared-findloc1_i1.lo \
++	nonshared-findloc1_i2.lo nonshared-findloc1_i4.lo \
++	nonshared-findloc1_i8.lo nonshared-findloc1_i16.lo \
++	nonshared-findloc1_r4.lo nonshared-findloc1_r8.lo \
++	nonshared-findloc1_r16.lo nonshared-findloc1_c4.lo \
++	nonshared-findloc1_c8.lo nonshared-findloc1_c16.lo \
++	nonshared-findloc1_s1.lo nonshared-findloc1_s4.lo \
++	nonshared-findloc2_s1.lo nonshared-findloc2_s4.lo
++am__objects_68 = nonshared-is_contiguous.lo
++am__objects_69 = nonshared-random_init.lo
++am_libgfortran_nonshared80_la_OBJECTS = $(am__objects_66) \
++	$(am__objects_67) $(am__objects_68) $(am__objects_69) \
++	nonshared-ieee_arithmetic.lo nonshared-transfer.lo
++libgfortran_nonshared80_la_OBJECTS =  \
++	$(am_libgfortran_nonshared80_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
+@@ -479,10 +507,6 @@ DEFAULT_INCLUDES = -I.@am__isrc@
+ depcomp = $(SHELL) $(top_srcdir)/../depcomp
+ am__depfiles_maybe = depfiles
+ am__mv = mv -f
+-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 = 
+ PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+ LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+@@ -526,7 +550,8 @@ AM_V_FC = $(am__v_FC_@AM_V@)
+ am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@)
+ am__v_FC_0 = @echo "  FC      " $@;
+ am__v_FC_1 = 
+-SOURCES = $(libcaf_single_la_SOURCES) $(libgfortran_la_SOURCES)
++SOURCES = $(libcaf_single_la_SOURCES) $(libgfortran_la_SOURCES) \
++	$(libgfortran_nonshared80_la_SOURCES)
+ am__can_run_installinfo = \
+   case $$AM_UPDATE_INFO_DIR in \
+     n|no|NO) false;; \
+@@ -722,6 +747,7 @@ LTLDFLAGS = $(shell $(SHELL) $(top_srcdi
+ 	    $(lt_host_flags)
+ 
+ toolexeclib_LTLIBRARIES = libgfortran.la
++noinst_LTLIBRARIES = libgfortran_nonshared80.la
+ toolexeclib_DATA = libgfortran.spec
+ libgfortran_la_LINK = $(LINK) $(libgfortran_la_LDFLAGS)
+ libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+@@ -1547,6 +1573,53 @@ prereq_SRC = $(gfor_src) $(gfor_built_sr
+ #libgfortran_F.lo: 
+ #	$(LTPPFCCOMPILE) -c -o $@ $^ -combine
+ @onestep_TRUE@libgfortran_la_SOURCES = libgfortran_c.c $(filter-out %.c,$(prereq_SRC))
++nonshared_runtime_C_SRC = \
++nonshared-ISO_Fortran_binding.c
++
++nonshared_generated_C_SRC = \
++nonshared-findloc0_i1.c \
++nonshared-findloc0_i2.c \
++nonshared-findloc0_i4.c \
++nonshared-findloc0_i8.c \
++nonshared-findloc0_i16.c \
++nonshared-findloc0_r4.c \
++nonshared-findloc0_r8.c \
++nonshared-findloc0_r16.c \
++nonshared-findloc0_c4.c \
++nonshared-findloc0_c8.c \
++nonshared-findloc0_c16.c \
++nonshared-findloc0_s1.c \
++nonshared-findloc0_s4.c \
++nonshared-findloc1_i1.c \
++nonshared-findloc1_i2.c \
++nonshared-findloc1_i4.c \
++nonshared-findloc1_i8.c \
++nonshared-findloc1_i16.c \
++nonshared-findloc1_r4.c \
++nonshared-findloc1_r8.c \
++nonshared-findloc1_r16.c \
++nonshared-findloc1_c4.c \
++nonshared-findloc1_c8.c \
++nonshared-findloc1_c16.c \
++nonshared-findloc1_s1.c \
++nonshared-findloc1_s4.c \
++nonshared-findloc2_s1.c \
++nonshared-findloc2_s4.c
++
++nonshared_intrinsics_C_SRC = \
++nonshared-is_contiguous.c
++
++nonshared_intrinsics_f90_SRC = \
++nonshared-random_init.f90
++
++libgfortran_nonshared80_la_SOURCES = \
++$(nonshared_runtime_C_SRC) \
++$(nonshared_generated_C_SRC) \
++$(nonshared_intrinsics_C_SRC) \
++$(nonshared_intrinsics_f90_SRC) \
++$(srcdir)/ieee/nonshared-ieee_arithmetic.c \
++$(srcdir)/io/nonshared-transfer.c
++
+ I_M4_DEPS = m4/iparm.m4
+ I_M4_DEPS0 = $(I_M4_DEPS) m4/iforeach.m4
+ I_M4_DEPS1 = $(I_M4_DEPS) m4/ifunction.m4
+@@ -1657,6 +1730,17 @@ clean-cafexeclibLTLIBRARIES:
+ 	  rm -f $${locs}; \
+ 	}
+ 
++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}; \
++	}
++
+ install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
+ 	@$(NORMAL_INSTALL)
+ 	@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
+@@ -1698,6 +1782,9 @@ libcaf_single.la: $(libcaf_single_la_OBJ
+ libgfortran.la: $(libgfortran_la_OBJECTS) $(libgfortran_la_DEPENDENCIES) $(EXTRA_libgfortran_la_DEPENDENCIES) 
+ 	$(AM_V_GEN)$(libgfortran_la_LINK) -rpath $(toolexeclibdir) $(libgfortran_la_OBJECTS) $(libgfortran_la_LIBADD) $(LIBS)
+ 
++libgfortran_nonshared80.la: $(libgfortran_nonshared80_la_OBJECTS) $(libgfortran_nonshared80_la_DEPENDENCIES) $(EXTRA_libgfortran_nonshared80_la_DEPENDENCIES) 
++	$(AM_V_FCLD)$(FCLINK)  $(libgfortran_nonshared80_la_OBJECTS) $(libgfortran_nonshared80_la_LIBADD) $(LIBS)
++
+ mostlyclean-compile:
+ 	-rm -f *.$(OBJEXT)
+ 
+@@ -2110,6 +2197,38 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minval_r8.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_alloc.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mvbits.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-ISO_Fortran_binding.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_c16.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_c4.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_c8.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_i1.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_i16.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_i2.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_i4.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_i8.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_r16.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_r4.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_r8.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_s1.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_s4.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_c16.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_c4.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_c8.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_i1.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_i16.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_i2.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_i4.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_i8.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_r16.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_r4.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_r8.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_s1.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_s4.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc2_s1.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc2_s4.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-ieee_arithmetic.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-is_contiguous.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-transfer.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/norm2_r10.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/norm2_r16.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/norm2_r4.Plo@am__quote@
+@@ -6628,6 +6747,20 @@ ieee_helper.lo: ieee/ieee_helper.c
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ieee_helper.lo `test -f 'ieee/ieee_helper.c' || echo '$(srcdir)/'`ieee/ieee_helper.c
+ 
++nonshared-ieee_arithmetic.lo: $(srcdir)/ieee/nonshared-ieee_arithmetic.c
++@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nonshared-ieee_arithmetic.lo -MD -MP -MF $(DEPDIR)/nonshared-ieee_arithmetic.Tpo -c -o nonshared-ieee_arithmetic.lo `test -f '$(srcdir)/ieee/nonshared-ieee_arithmetic.c' || echo '$(srcdir)/'`$(srcdir)/ieee/nonshared-ieee_arithmetic.c
++@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/nonshared-ieee_arithmetic.Tpo $(DEPDIR)/nonshared-ieee_arithmetic.Plo
++@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(srcdir)/ieee/nonshared-ieee_arithmetic.c' object='nonshared-ieee_arithmetic.lo' libtool=yes @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nonshared-ieee_arithmetic.lo `test -f '$(srcdir)/ieee/nonshared-ieee_arithmetic.c' || echo '$(srcdir)/'`$(srcdir)/ieee/nonshared-ieee_arithmetic.c
++
++nonshared-transfer.lo: $(srcdir)/io/nonshared-transfer.c
++@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nonshared-transfer.lo -MD -MP -MF $(DEPDIR)/nonshared-transfer.Tpo -c -o nonshared-transfer.lo `test -f '$(srcdir)/io/nonshared-transfer.c' || echo '$(srcdir)/'`$(srcdir)/io/nonshared-transfer.c
++@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/nonshared-transfer.Tpo $(DEPDIR)/nonshared-transfer.Plo
++@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(srcdir)/io/nonshared-transfer.c' object='nonshared-transfer.lo' libtool=yes @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nonshared-transfer.lo `test -f '$(srcdir)/io/nonshared-transfer.c' || echo '$(srcdir)/'`$(srcdir)/io/nonshared-transfer.c
++
+ .f90.o:
+ 	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $<
+ 
+@@ -6822,7 +6955,8 @@ maintainer-clean-generic:
+ clean: clean-am
+ 
+ clean-am: clean-cafexeclibLTLIBRARIES clean-generic clean-libtool \
+-	clean-local clean-toolexeclibLTLIBRARIES mostlyclean-am
++	clean-local clean-noinstLTLIBRARIES \
++	clean-toolexeclibLTLIBRARIES mostlyclean-am
+ 
+ distclean: distclean-am
+ 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+@@ -6902,14 +7036,15 @@ uninstall-am: uninstall-cafexeclibLTLIBR
+ .PHONY: CTAGS GTAGS TAGS all all-am all-local am--refresh check \
+ 	check-am clean clean-cafexeclibLTLIBRARIES clean-cscope \
+ 	clean-generic clean-libtool clean-local \
+-	clean-toolexeclibLTLIBRARIES cscope cscopelist-am ctags \
+-	ctags-am distclean distclean-compile distclean-generic \
+-	distclean-hdr distclean-libtool distclean-local distclean-tags \
+-	dvi dvi-am html html-am info info-am install install-am \
+-	install-cafexeclibLTLIBRARIES install-data install-data-am \
+-	install-dvi install-dvi-am install-exec install-exec-am \
+-	install-exec-local install-gfor_cHEADERS install-html \
+-	install-html-am install-info install-info-am install-man \
++	clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES cscope \
++	cscopelist-am ctags ctags-am distclean distclean-compile \
++	distclean-generic distclean-hdr distclean-libtool \
++	distclean-local distclean-tags dvi dvi-am html html-am info \
++	info-am install install-am install-cafexeclibLTLIBRARIES \
++	install-data install-data-am install-dvi install-dvi-am \
++	install-exec install-exec-am install-exec-local \
++	install-gfor_cHEADERS install-html install-html-am \
++	install-info install-info-am install-man \
+ 	install-nodist_fincludeHEADERS install-pdf install-pdf-am \
+ 	install-ps install-ps-am install-strip install-toolexeclibDATA \
+ 	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
+@@ -6967,6 +7102,38 @@ ieee_arithmetic.mod: ieee_arithmetic.lo
+ @onestep_TRUE@libgfortran_c.lo: $(filter %.c,$(prereq_SRC))
+ @onestep_TRUE@	$(LTCOMPILE) -c -o $@ $^ -combine
+ 
++$(patsubst %.c,%.lo,$(nonshared_generated_C_SRC) $(nonshared)): \
++nonshared-%.lo: $(srcdir)/generated/%.c
++	$(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.c,%.o,$(nonshared_generated_C_SRC) $(nonshared)): \
++nonshared-%.o: $(srcdir)/generated/%.c
++	$(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.c,%.lo,$(nonshared_intrinsics_C_SRC) $(nonshared)): \
++nonshared-%.lo: $(srcdir)/intrinsics/%.c
++	$(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.c,%.o,$(nonshared_intrinsics_C_SRC) $(nonshared)): \
++nonshared-%.o: $(srcdir)/intrinsics/%.c
++	$(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.c,%.lo,$(nonshared_runtime_C_SRC) $(nonshared)): \
++nonshared-%.lo: $(srcdir)/runtime/%.c
++	$(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.c,%.o,$(nonshared_runtime_C_SRC) $(nonshared)): \
++nonshared-%.o: $(srcdir)/runtime/%.c
++	$(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
++
++$(patsubst %.f90,%.lo,$(nonshared_intrinsics_f90_SRC) $(nonshared)): \
++nonshared-%.lo: $(srcdir)/intrinsics/%.f90
++	$(LTPPFCCOMPILE) -c -o $@ $< -fallow-leading-underscore
++
++$(patsubst %.f90,%.o,$(nonshared_intrinsics_f90_SRC) $(nonshared)): \
++nonshared-%.o: $(srcdir)/intrinsics/%.f90
++	$(PPFCCOMPILE) -c -o $@ $< -fallow-leading-underscore
++
+ kinds.h: $(srcdir)/mk-kinds-h.sh
+ 	$(SHELL) $(srcdir)/mk-kinds-h.sh '$(FCCOMPILE)' > $@ || rm $@
+ 
diff --git a/SOURCES/gcc9-libgomp-omp_h-multilib.patch b/SOURCES/gcc9-libgomp-omp_h-multilib.patch
new file mode 100644
index 0000000..d0e98d1
--- /dev/null
+++ b/SOURCES/gcc9-libgomp-omp_h-multilib.patch
@@ -0,0 +1,17 @@
+2008-06-09  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
+
+--- libgomp/omp.h.in.jj	2008-06-09 13:34:05.000000000 +0200
++++ libgomp/omp.h.in	2008-06-09 13:34:48.000000000 +0200
+@@ -42,8 +42,8 @@ typedef struct
+ 
+ typedef struct
+ {
+-  unsigned char _x[@OMP_NEST_LOCK_SIZE@] 
+-    __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
++  unsigned char _x[8 + sizeof (void *)] 
++    __attribute__((__aligned__(sizeof (void *))));
+ } omp_nest_lock_t;
+ #endif
+ 
diff --git a/SOURCES/gcc9-libstdc++-compat.patch b/SOURCES/gcc9-libstdc++-compat.patch
new file mode 100644
index 0000000..8d44c4b
--- /dev/null
+++ b/SOURCES/gcc9-libstdc++-compat.patch
@@ -0,0 +1,12092 @@
+--- libstdc++-v3/config/locale/gnu/c_locale.cc.jj	2019-04-25 20:01:59.067104224 +0200
++++ libstdc++-v3/config/locale/gnu/c_locale.cc	2019-05-13 10:20:36.296517234 +0200
+@@ -41,6 +41,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX98
+   template<>
+     void
+     __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
+@@ -172,6 +173,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+       }
+     return __changed;
+   }
++#endif
+ 
+   struct _CatalogIdComp
+   {
+@@ -255,6 +257,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX98
+ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+@@ -294,3 +297,4 @@ _GLIBCXX_END_NAMESPACE_VERSION
+   extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
+ _GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct);
+ #endif // _GLIBCXX_LONG_DOUBLE_COMPAT
++#endif
+--- libstdc++-v3/libsupc++/eh_exception.cc.jj	2019-04-25 20:01:55.278162744 +0200
++++ libstdc++-v3/libsupc++/eh_exception.cc	2019-05-13 10:20:36.296517234 +0200
+@@ -26,6 +26,7 @@
+ #include "exception"
+ #include <cxxabi.h>
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX98
+ std::exception::~exception() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT { }
+ 
+ std::bad_exception::~bad_exception() _GLIBCXX_TXN_SAFE_DYN
+@@ -50,6 +51,7 @@ std::bad_exception::what() const _GLIBCX
+ {
+   return "std::bad_exception";
+ }
++#endif
+ 
+ // Transactional clones for the destructors and what().
+ // what() is effectively transaction_pure, but we do not want to annotate it
+--- libstdc++-v3/src/nonshared98/sstream-inst.cc.jj	2019-05-13 10:20:36.297517218 +0200
++++ libstdc++-v3/src/nonshared98/sstream-inst.cc	2019-05-13 10:20:36.297517218 +0200
+@@ -0,0 +1,39 @@
++// Explicit instantiation file.
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882:
++//
++
++#include <sstream>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++  template void basic_stringbuf<char>::_M_pbump(char_type*, char_type*, off_type);
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template void basic_stringbuf<wchar_t>::_M_pbump(char_type*, char_type*, off_type);
++#endif
++
++} // namespace
+--- libstdc++-v3/src/nonshared98/float128.S.jj	2019-05-13 10:20:36.297517218 +0200
++++ libstdc++-v3/src/nonshared98/float128.S	2019-05-13 10:20:36.297517218 +0200
+@@ -0,0 +1,162 @@
++/* Copyright (C) 2012-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.
++
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
++
++   You should have received a copy of the GNU General Public License and
++   a copy of the GCC Runtime Library Exception along with this program;
++   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined __x86_64__ || defined __i386__ || defined __ia64__
++#ifdef __i386__
++#define ALIGN1	.align 4
++#elif defined __x86_64__
++#define ALIGN1	.align 32
++#define ALIGN2	.align 16
++#elif defined __ia64__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 8
++#define SECTION3(x).section .gnu.linkonce.s.x,"aws",@progbits
++#define POINTER	data8
++#define FLAGS data4
++#define PAD .skip 4
++#define STRING stringz
++#elif defined __powerpc64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#elif defined __powerpc__
++#define ALIGN1	.align 2
++#define ALIGN3	.align 2
++#define SECTION2(x).section .gnu.linkonce.s.x,"aw",@progbits
++#define SECTION3(x)SECTION2(x)
++#elif defined __aarch64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#define POINTER	.xword
++#define FLAGS	.word
++#define OBJECT	%object
++#elif defined __s390x__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 2
++#elif defined __s390__
++#define ALIGN1	.align 4
++#define ALIGN3	.align 2
++#endif
++#if defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __ia64__ || defined __aarch64__
++#define SIZE1	32
++#define SIZE2	16
++#define OFF	16
++#ifndef POINTER
++#define POINTER	.quad
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD .zero 4
++#endif
++#else
++#define SIZE1	16
++#define SIZE2	8
++#define OFF	8
++#ifndef POINTER
++#define POINTER	.long
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD
++#endif
++#endif
++#ifndef SYM
++#define SYM(x)x
++#endif
++#ifndef ALIGN2
++#define ALIGN2 ALIGN1
++#endif
++#ifndef ALIGN3
++#define ALIGN3
++#endif
++#ifndef OBJECT
++#define OBJECT @object
++#endif
++#ifndef SECTION1
++#define SECTION1(x).section .gnu.linkonce.d.rel.ro.x,"aw",@progbits
++#endif
++#ifndef SECTION2
++#define SECTION2(x)SECTION1(x)
++#endif
++#ifndef SECTION3
++#define SECTION3(x).section .gnu.linkonce.r.x,"a",@progbits
++#endif
++#ifndef STRING
++#define STRING .string
++#endif
++
++	.weak	SYM(_ZTIPKg)
++	SECTION1(_ZTIPKg)
++	ALIGN1
++	.type	SYM(_ZTIPKg), OBJECT
++	.size	SYM(_ZTIPKg), SIZE1
++_ZTIPKg:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPKg)
++	FLAGS	1
++	PAD
++	POINTER	SYM(_ZTIg)
++	.weak	SYM(_ZTIPg)
++	SECTION1(_ZTIPg)
++	ALIGN1
++	.type	SYM(_ZTIPg), OBJECT
++	.size	SYM(_ZTIPg), SIZE1
++_ZTIPg:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPg)
++	FLAGS	0
++	PAD
++	POINTER	SYM(_ZTIg)
++	.weak	SYM(_ZTIg)
++	SECTION2(_ZTIg)
++	ALIGN2
++	.type	SYM(_ZTIg), OBJECT
++	.size	SYM(_ZTIg), SIZE2
++_ZTIg:
++	POINTER	SYM(_ZTVN10__cxxabiv123__fundamental_type_infoE)+OFF
++	POINTER	SYM(_ZTSg)
++	.weak	SYM(_ZTSPKg)
++	SECTION3(_ZTSPKg)
++	ALIGN3
++	.type	SYM(_ZTSPKg), OBJECT
++	.size	SYM(_ZTSPKg), 4
++_ZTSPKg:
++	STRING	"PKg"
++	.weak	SYM(_ZTSPg)
++	SECTION3(_ZTSPg)
++	ALIGN3
++	.type	SYM(_ZTSPg), OBJECT
++	.size	SYM(_ZTSPg), 3
++_ZTSPg:
++	STRING	"Pg"
++	.weak	SYM(_ZTSg)
++	SECTION3(_ZTSg)
++	ALIGN3
++	.type	SYM(_ZTSg), OBJECT
++	.size	SYM(_ZTSg), 2
++_ZTSg:
++	STRING	"g"
++#endif
++	.section	.note.GNU-stack,"",@progbits
+--- libstdc++-v3/src/nonshared98/pure.cc.jj	2019-05-13 10:20:36.297517218 +0200
++++ libstdc++-v3/src/nonshared98/pure.cc	2019-05-13 10:20:36.297517218 +0200
+@@ -0,0 +1,51 @@
++// -*- C++ -*- 
++// Copyright (C) 2000-2019 Free Software Foundation
++//
++// This file is part of GCC.
++//
++// GCC 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.
++//
++// GCC 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.
++//
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <bits/c++config.h>
++#include <cxxabi.h>
++#include "unwind-cxx.h"
++
++#if _GLIBCXX_HOSTED
++#ifdef _GLIBCXX_HAVE_UNISTD_H
++# include <unistd.h>
++# define writestr(str)	write(2, str, sizeof(str) - 1)
++# ifdef __GNU_LIBRARY__
++  /* Avoid forcing the library's meaning of `write' on the user program
++     by using the "internal" name (for use within the library).  */
++/*#  define write(fd, buf, n)	__write((fd), (buf), (n))*/
++# endif
++#else
++# include <cstdio>
++# define writestr(str)	std::fputs(str, stderr)
++#endif
++#else
++# define writestr(str) /* Empty */
++#endif
++
++extern "C" void
++__cxxabiv1::__cxa_deleted_virtual (void)
++{
++  writestr ("deleted virtual method called\n");
++  std::terminate ();
++}
+--- libstdc++-v3/src/nonshared98/eh_exception.cc.jj	2019-05-13 10:20:36.297517218 +0200
++++ libstdc++-v3/src/nonshared98/eh_exception.cc	2019-05-13 10:20:36.297517218 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 1994-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX98 1
++#include "../libsupc++/eh_exception.cc"
+--- libstdc++-v3/src/nonshared98/ios_failure.cc.jj	2019-05-13 14:25:15.935786045 +0200
++++ libstdc++-v3/src/nonshared98/ios_failure.cc	2019-05-14 17:34:33.144820240 +0200
+@@ -0,0 +1,35 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++98/ios_failure.cc"
++asm (".hidden _ZNKSt8ios_base7failure4whatEv");
++asm (".hidden _ZNSt8ios_base7failureC1ERKSs");
++asm (".hidden _ZNSt8ios_base7failureC2ERKSs");
++asm (".hidden _ZNSt8ios_base7failureD0Ev");
++asm (".hidden _ZNSt8ios_base7failureD1Ev");
++asm (".hidden _ZNSt8ios_base7failureD2Ev");
++asm (".hidden _ZSt21__destroy_ios_failurePv");
++asm (".hidden _ZSt23__construct_ios_failurePvPKc");
++asm (".hidden _ZSt24__is_ios_failure_handlerPKN10__cxxabiv117__class_type_infoE");
++asm (".hidden _ZTINSt8ios_base7failureE");
++asm (".hidden _ZTSNSt8ios_base7failureE");
++asm (".hidden _ZTVNSt8ios_base7failureE");
+--- libstdc++-v3/src/nonshared98/char8_t-rtti.S.jj	2019-05-13 18:18:49.716595911 +0200
++++ libstdc++-v3/src/nonshared98/char8_t-rtti.S	2019-05-13 18:19:42.753713621 +0200
+@@ -0,0 +1,166 @@
++/* Copyright (C) 2012-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.
++
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
++
++   You should have received a copy of the GNU General Public License and
++   a copy of the GCC Runtime Library Exception along with this program;
++   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __ia64__ || defined __aarch64__ \
++    || defined __i386__ || defined __powerpc__ || defined __s390__
++#ifdef __i386__
++#define ALIGN1	.align 4
++#elif defined __x86_64__
++#define ALIGN1	.align 32
++#define ALIGN2	.align 16
++#elif defined __ia64__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 8
++#define SECTION3(x).section .gnu.linkonce.s.x,"aws",@progbits
++#define POINTER	data8
++#define FLAGS data4
++#define PAD .skip 4
++#define STRING stringz
++#elif defined __powerpc64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#elif defined __powerpc__
++#define ALIGN1	.align 2
++#define ALIGN3	.align 2
++#define SECTION2(x).section .gnu.linkonce.s.x,"aw",@progbits
++#define SECTION3(x)SECTION2(x)
++#elif defined __aarch64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#define POINTER	.xword
++#define FLAGS	.word
++#define OBJECT	%object
++#elif defined __s390x__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 2
++#elif defined __s390__
++#define ALIGN1	.align 4
++#define ALIGN3	.align 2
++#endif
++#if defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __ia64__ || defined __aarch64__
++#define SIZE1	32
++#define SIZE2	16
++#define OFF	16
++#ifndef POINTER
++#define POINTER	.quad
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD .zero 4
++#endif
++#else
++#define SIZE1	16
++#define SIZE2	8
++#define OFF	8
++#ifndef POINTER
++#define POINTER	.long
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD
++#endif
++#endif
++#ifndef SYM
++#define SYM(x)x
++#endif
++#ifndef ALIGN2
++#define ALIGN2 ALIGN1
++#endif
++#ifndef ALIGN3
++#define ALIGN3
++#endif
++#ifndef OBJECT
++#define OBJECT @object
++#endif
++#ifndef SECTION1
++#define SECTION1(x).section .gnu.linkonce.d.rel.ro.x,"aw",@progbits
++#endif
++#ifndef SECTION2
++#define SECTION2(x)SECTION1(x)
++#endif
++#ifndef SECTION3
++#define SECTION3(x).section .gnu.linkonce.r.x,"a",@progbits
++#endif
++#ifndef STRING
++#define STRING .string
++#endif
++
++	.weak	SYM(_ZTIPKDu)
++	SECTION1(_ZTIPKDu)
++	ALIGN1
++	.type	SYM(_ZTIPKDu), OBJECT
++	.size	SYM(_ZTIPKDu), SIZE1
++_ZTIPKDu:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPKDu)
++	FLAGS	1
++	PAD
++	POINTER	SYM(_ZTIDu)
++	.weak	SYM(_ZTIPDu)
++	SECTION1(_ZTIPDu)
++	ALIGN1
++	.type	SYM(_ZTIPDu), OBJECT
++	.size	SYM(_ZTIPDu), SIZE1
++_ZTIPDu:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPDu)
++	FLAGS	0
++	PAD
++	POINTER	SYM(_ZTIDu)
++	.weak	SYM(_ZTIDu)
++	SECTION2(_ZTIDu)
++	ALIGN2
++	.type	SYM(_ZTIDu), OBJECT
++	.size	SYM(_ZTIDu), SIZE2
++_ZTIDu:
++	POINTER	SYM(_ZTVN10__cxxabiv123__fundamental_type_infoE)+OFF
++	POINTER	SYM(_ZTSDu)
++	.weak	SYM(_ZTSPKDu)
++	.hidden	SYM(_ZTSPKDu)
++	SECTION3(_ZTSPKDu)
++	ALIGN3
++	.type	SYM(_ZTSPKDu), OBJECT
++	.size	SYM(_ZTSPKDu), 5
++_ZTSPKDu:
++	STRING	"PKDu"
++	.weak	SYM(_ZTSPDu)
++	.hidden	SYM(_ZTSPDu)
++	SECTION3(_ZTSPDu)
++	ALIGN3
++	.type	SYM(_ZTSPDu), OBJECT
++	.size	SYM(_ZTSPDu), 4
++_ZTSPDu:
++	STRING	"PDu"
++	.weak	SYM(_ZTSDu)
++	.hidden	SYM(_ZTSDu)
++	SECTION3(_ZTSDu)
++	ALIGN3
++	.type	SYM(_ZTSDu), OBJECT
++	.size	SYM(_ZTSDu), 3
++_ZTSDu:
++	STRING	"Du"
++#endif
++	.section	.note.GNU-stack,"",@progbits
+--- libstdc++-v3/src/nonshared98/streambuf-inst.cc.jj	2019-05-13 10:20:36.298517201 +0200
++++ libstdc++-v3/src/nonshared98/streambuf-inst.cc	2019-05-13 10:20:36.298517201 +0200
+@@ -0,0 +1,36 @@
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <ios>
++#include <streambuf>
++
++namespace std _GLIBCXX_VISIBILITY(default)   
++{
++
++  template void basic_streambuf<char>::__safe_gbump(std::streamsize);
++  template void basic_streambuf<char>::__safe_pbump(std::streamsize);
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template void basic_streambuf<wchar_t>::__safe_gbump(std::streamsize);
++  template void basic_streambuf<wchar_t>::__safe_pbump(std::streamsize);
++#endif
++
++}
+--- libstdc++-v3/src/nonshared98/int12848.S.jj	2019-05-13 10:20:36.298517201 +0200
++++ libstdc++-v3/src/nonshared98/int12848.S	2019-05-13 10:20:36.298517201 +0200
+@@ -0,0 +1,24 @@
++/* Copyright (C) 2012-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.
++
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
++
++   You should have received a copy of the GNU General Public License and
++   a copy of the GCC Runtime Library Exception along with this program;
++   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define _GLIBCXX_NONSHARED_CXX11_48
++#include "int128.S"
+--- libstdc++-v3/src/nonshared98/eh_tm.cc.jj	2019-05-13 10:20:36.298517201 +0200
++++ libstdc++-v3/src/nonshared98/eh_tm.cc	2019-05-13 10:20:36.298517201 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/eh_tm.cc"
+--- libstdc++-v3/src/nonshared98/snprintf_lite-inst.cc.jj	2019-05-13 10:20:36.298517201 +0200
++++ libstdc++-v3/src/nonshared98/snprintf_lite-inst.cc	2019-05-13 10:20:36.298517201 +0200
+@@ -0,0 +1,41 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <locale>
++
++namespace std _GLIBCXX_VISIBILITY(default)   
++{
++  template
++  int
++  __int_to_char(char*,
++#ifdef _GLIBCXX_USE_LONG_LONG
++		unsigned long long,
++#else
++		unsigned long,
++#endif
++		const char*, ios_base::fmtflags, bool);
++}
++#ifdef _GLIBCXX_USE_LONG_LONG
++asm (".hidden _ZSt13__int_to_charIcyEiPT_T0_PKS0_St13_Ios_Fmtflagsb");
++#else
++asm (".hidden _ZSt13__int_to_charIcmEiPT_T0_PKS0_St13_Ios_Fmtflagsb");
++#endif
+--- libstdc++-v3/src/nonshared98/locale_facets.cc.jj	2019-05-13 10:20:36.298517201 +0200
++++ libstdc++-v3/src/nonshared98/locale_facets.cc	2019-05-13 10:20:36.298517201 +0200
+@@ -0,0 +1,29 @@
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11
++#include "../c++98/locale_facets.cc"
++#if defined(__i386__) || (defined(__powerpc__) && !defined(__powerpc64__))
++asm (".hidden _ZSt22__verify_grouping_implPKcjS0_j");
++#else
++asm (".hidden _ZSt22__verify_grouping_implPKcmS0_m");
++#endif
+--- libstdc++-v3/src/nonshared98/misc-inst.cc.jj	2019-05-13 10:20:36.299517185 +0200
++++ libstdc++-v3/src/nonshared98/misc-inst.cc	2019-05-13 10:20:36.299517185 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++98/misc-inst.cc"
+--- libstdc++-v3/src/nonshared98/decimal-rtti.S.jj	2019-05-13 10:20:36.299517185 +0200
++++ libstdc++-v3/src/nonshared98/decimal-rtti.S	2019-05-13 10:20:36.299517185 +0200
+@@ -0,0 +1,274 @@
++/* Copyright (C) 2012-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.
++
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
++
++   You should have received a copy of the GNU General Public License and
++   a copy of the GCC Runtime Library Exception along with this program;
++   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __ia64__ || defined __aarch64__ \
++    || defined __i386__ || defined __powerpc__ || defined __s390__
++#ifdef __i386__
++#define ALIGN1	.align 4
++#elif defined __x86_64__
++#define ALIGN1	.align 32
++#define ALIGN2	.align 16
++#elif defined __ia64__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 8
++#define SECTION3(x).section .gnu.linkonce.s.x,"aws",@progbits
++#define POINTER	data8
++#define FLAGS data4
++#define PAD .skip 4
++#define STRING stringz
++#elif defined __powerpc64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#elif defined __powerpc__
++#define ALIGN1	.align 2
++#define ALIGN3	.align 2
++#define SECTION2(x).section .gnu.linkonce.s.x,"aw",@progbits
++#define SECTION3(x)SECTION2(x)
++#elif defined __aarch64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#define POINTER	.xword
++#define FLAGS	.word
++#define OBJECT	%object
++#elif defined __s390x__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 2
++#elif defined __s390__
++#define ALIGN1	.align 4
++#define ALIGN3	.align 2
++#endif
++#if defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __ia64__ || defined __aarch64__
++#define SIZE1	32
++#define SIZE2	16
++#define OFF	16
++#ifndef POINTER
++#define POINTER	.quad
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD .zero 4
++#endif
++#else
++#define SIZE1	16
++#define SIZE2	8
++#define OFF	8
++#ifndef POINTER
++#define POINTER	.long
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD
++#endif
++#endif
++#ifndef SYM
++#define SYM(x)x
++#endif
++#ifndef ALIGN2
++#define ALIGN2 ALIGN1
++#endif
++#ifndef ALIGN3
++#define ALIGN3
++#endif
++#ifndef OBJECT
++#define OBJECT @object
++#endif
++#ifndef SECTION1
++#define SECTION1(x).section .gnu.linkonce.d.rel.ro.x,"aw",@progbits
++#endif
++#ifndef SECTION2
++#define SECTION2(x)SECTION1(x)
++#endif
++#ifndef SECTION3
++#define SECTION3(x).section .gnu.linkonce.r.x,"a",@progbits
++#endif
++#ifndef STRING
++#define STRING .string
++#endif
++
++	.weak	SYM(_ZTIPKDd)
++	SECTION1(_ZTIPKDd)
++	ALIGN1
++	.type	SYM(_ZTIPKDd), OBJECT
++	.size	SYM(_ZTIPKDd), SIZE1
++_ZTIPKDd:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPKDd)
++	FLAGS	1
++	PAD
++	POINTER	SYM(_ZTIDd)
++	.weak	SYM(_ZTIPDd)
++	SECTION1(_ZTIPDd)
++	ALIGN1
++	.type	SYM(_ZTIPDd), OBJECT
++	.size	SYM(_ZTIPDd), SIZE1
++_ZTIPDd:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPDd)
++	FLAGS	0
++	PAD
++	POINTER	SYM(_ZTIDd)
++	.weak	SYM(_ZTIDd)
++	SECTION2(_ZTIDd)
++	ALIGN2
++	.type	SYM(_ZTIDd), OBJECT
++	.size	SYM(_ZTIDd), SIZE2
++_ZTIDd:
++	POINTER	SYM(_ZTVN10__cxxabiv123__fundamental_type_infoE)+OFF
++	POINTER	SYM(_ZTSDd)
++	.weak	SYM(_ZTIPKDe)
++	SECTION1(_ZTIPKDe)
++	ALIGN1
++	.type	SYM(_ZTIPKDe), OBJECT
++	.size	SYM(_ZTIPKDe), SIZE1
++_ZTIPKDe:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPKDe)
++	FLAGS	1
++	PAD
++	POINTER	SYM(_ZTIDe)
++	.weak	SYM(_ZTIPDe)
++	SECTION1(_ZTIPDe)
++	ALIGN1
++	.type	SYM(_ZTIPDe), OBJECT
++	.size	SYM(_ZTIPDe), SIZE1
++_ZTIPDe:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPDe)
++	FLAGS	0
++	PAD
++	POINTER	SYM(_ZTIDe)
++	.weak	SYM(_ZTIDe)
++	SECTION2(_ZTIDe)
++	ALIGN2
++	.type	SYM(_ZTIDe), OBJECT
++	.size	SYM(_ZTIDe), SIZE2
++_ZTIDe:
++	POINTER	SYM(_ZTVN10__cxxabiv123__fundamental_type_infoE)+OFF
++	POINTER	SYM(_ZTSDe)
++	.weak	SYM(_ZTIPKDf)
++	SECTION1(_ZTIPKDf)
++	ALIGN1
++	.type	SYM(_ZTIPKDf), OBJECT
++	.size	SYM(_ZTIPKDf), SIZE1
++_ZTIPKDf:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPKDf)
++	FLAGS	1
++	PAD
++	POINTER	SYM(_ZTIDf)
++	.weak	SYM(_ZTIPDf)
++	SECTION1(_ZTIPDf)
++	ALIGN1
++	.type	SYM(_ZTIPDf), OBJECT
++	.size	SYM(_ZTIPDf), SIZE1
++_ZTIPDf:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPDf)
++	FLAGS	0
++	PAD
++	POINTER	SYM(_ZTIDf)
++	.weak	SYM(_ZTIDf)
++	SECTION2(_ZTIDf)
++	ALIGN2
++	.type	SYM(_ZTIDf), OBJECT
++	.size	SYM(_ZTIDf), SIZE2
++_ZTIDf:
++	POINTER	SYM(_ZTVN10__cxxabiv123__fundamental_type_infoE)+OFF
++	POINTER	SYM(_ZTSDf)
++	.weak	SYM(_ZTSPKDd)
++	.hidden	SYM(_ZTSPKDd)
++	SECTION3(_ZTSPKDd)
++	ALIGN3
++	.type	SYM(_ZTSPKDd), OBJECT
++	.size	SYM(_ZTSPKDd), 5
++_ZTSPKDd:
++	STRING	"PKDd"
++	.weak	SYM(_ZTSPDd)
++	.hidden	SYM(_ZTSPDd)
++	SECTION3(_ZTSPDd)
++	ALIGN3
++	.type	SYM(_ZTSPDd), OBJECT
++	.size	SYM(_ZTSPDd), 4
++_ZTSPDd:
++	STRING	"PDd"
++	.weak	SYM(_ZTSDd)
++	.hidden	SYM(_ZTSDd)
++	SECTION3(_ZTSDd)
++	ALIGN3
++	.type	SYM(_ZTSDd), OBJECT
++	.size	SYM(_ZTSDd), 3
++_ZTSDd:
++	STRING	"Dd"
++	.weak	SYM(_ZTSPKDe)
++	.hidden	SYM(_ZTSPKDe)
++	SECTION3(_ZTSPKDe)
++	ALIGN3
++	.type	SYM(_ZTSPKDe), OBJECT
++	.size	SYM(_ZTSPKDe), 5
++_ZTSPKDe:
++	STRING	"PKDe"
++	.weak	SYM(_ZTSPDe)
++	.hidden	SYM(_ZTSPDe)
++	SECTION3(_ZTSPDe)
++	ALIGN3
++	.type	SYM(_ZTSPDe), OBJECT
++	.size	SYM(_ZTSPDe), 4
++_ZTSPDe:
++	STRING	"PDe"
++	.weak	SYM(_ZTSDe)
++	.hidden	SYM(_ZTSDe)
++	SECTION3(_ZTSDe)
++	ALIGN3
++	.type	SYM(_ZTSDe), OBJECT
++	.size	SYM(_ZTSDe), 3
++_ZTSDe:
++	STRING	"De"
++	.weak	SYM(_ZTSPKDf)
++	.hidden	SYM(_ZTSPKDf)
++	SECTION3(_ZTSPKDf)
++	ALIGN3
++	.type	SYM(_ZTSPKDf), OBJECT
++	.size	SYM(_ZTSPKDf), 5
++_ZTSPKDf:
++	STRING	"PKDf"
++	.weak	SYM(_ZTSPDf)
++	.hidden	SYM(_ZTSPDf)
++	SECTION3(_ZTSPDf)
++	ALIGN3
++	.type	SYM(_ZTSPDf), OBJECT
++	.size	SYM(_ZTSPDf), 4
++_ZTSPDf:
++	STRING	"PDf"
++	.weak	SYM(_ZTSDf)
++	.hidden	SYM(_ZTSDf)
++	SECTION3(_ZTSDf)
++	ALIGN3
++	.type	SYM(_ZTSDf), OBJECT
++	.size	SYM(_ZTSDf), 3
++_ZTSDf:
++	STRING	"Df"
++#endif
++	.section	.note.GNU-stack,"",@progbits
+--- libstdc++-v3/src/nonshared98/locale.cc.jj	2019-05-13 10:20:36.299517185 +0200
++++ libstdc++-v3/src/nonshared98/locale.cc	2019-05-13 10:20:36.299517185 +0200
+@@ -0,0 +1,84 @@
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_USE_CXX11_ABI 1
++#include <locale>
++
++namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
++    {
++      "LC_CTYPE", 
++      "LC_NUMERIC",
++      "LC_TIME", 
++      "LC_COLLATE", 
++      "LC_MONETARY",
++      "LC_MESSAGES", 
++      "LC_PAPER", 
++      "LC_NAME", 
++      "LC_ADDRESS",
++      "LC_TELEPHONE", 
++      "LC_MEASUREMENT", 
++      "LC_IDENTIFICATION" 
++    };
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
++
++  _GLIBCXX_DEFAULT_ABI_TAG
++  string
++  locale::name() const
++  {
++    string __ret;
++    if (!_M_impl->_M_names[0])
++      __ret = '*';
++    else if (_M_impl->_M_check_same_name())
++      __ret = _M_impl->_M_names[0];
++    else
++      {
++	__ret.reserve(128);
++	__ret += _S_categories[0];
++	__ret += '=';
++	__ret += _M_impl->_M_names[0]; 
++	for (size_t __i = 1; __i < _S_categories_size; ++__i)
++	  {
++	    __ret += ';';
++	    __ret += _S_categories[__i];
++	    __ret += '=';
++	    __ret += _M_impl->_M_names[__i];
++	  }
++      }
++    return __ret;
++  }
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
++
++asm (".hidden _ZNSt6locale13_S_categoriesE");
+--- libstdc++-v3/src/nonshared98/list.cc.jj	2019-05-13 10:20:36.299517185 +0200
++++ libstdc++-v3/src/nonshared98/list.cc	2019-05-13 10:20:36.299517185 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++98/list.cc"
+--- libstdc++-v3/src/nonshared98/wlocale-inst.cc.jj	2019-05-13 10:20:36.300517168 +0200
++++ libstdc++-v3/src/nonshared98/wlocale-inst.cc	2019-05-13 10:20:36.300517168 +0200
+@@ -0,0 +1,28 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <bits/c++config.h>
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++#define C wchar_t
++#include "locale-inst.cc"
++#endif
+--- libstdc++-v3/src/nonshared98/locale-inst.cc.jj	2019-05-13 10:20:36.300517168 +0200
++++ libstdc++-v3/src/nonshared98/locale-inst.cc	2019-05-13 10:20:36.300517168 +0200
+@@ -0,0 +1,40 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <locale>
++
++#ifndef C
++# define C char
++#endif
++
++namespace std _GLIBCXX_VISIBILITY(default)   
++{
++
++  typedef time_get<C> S;
++
++  template
++  S::iter_type S::_M_extract_wday_or_month(iter_type, iter_type, int&,
++					   const C **, size_t, ios_base&,
++					   ios_base::iostate&) const;
++
++}
++asm (".hidden _ZNKSt5ctypeIcE8do_widenEc");
+--- libstdc++-v3/src/nonshared98/stdexcept.cc.jj	2019-05-13 10:20:36.300517168 +0200
++++ libstdc++-v3/src/nonshared98/stdexcept.cc	2019-05-13 10:20:36.300517168 +0200
+@@ -0,0 +1,44 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#ifdef __ARM_EABI__
++#define RET const void *
++#else
++#define RET void
++#endif
++#define BASE_DTOR(name) \
++extern RET _ZN##name##D1Ev (const void *t); 	\
++RET _ZN##name##D2Ev (const void *t)		\
++{						\
++  return _ZN##name##D1Ev (t);			\
++}						\
++
++extern "C"
++{
++  BASE_DTOR (St11range_error)
++  BASE_DTOR (St12domain_error)
++  BASE_DTOR (St12length_error)
++  BASE_DTOR (St12out_of_range)
++  BASE_DTOR (St14overflow_error)
++  BASE_DTOR (St15underflow_error)
++  BASE_DTOR (St16invalid_argument)
++}
+--- libstdc++-v3/src/nonshared98/numeric_members_cow.cc.jj	2019-05-13 14:13:57.863066305 +0200
++++ libstdc++-v3/src/nonshared98/numeric_members_cow.cc	2019-05-14 17:35:03.227317965 +0200
+@@ -0,0 +1,33 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_USE_CXX11_ABI 0
++#include "../c++98/numeric_members.cc"
++asm (".hidden _ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct");
++asm (".hidden _ZNSt8numpunctIcED0Ev");
++asm (".hidden _ZNSt8numpunctIcED1Ev");
++asm (".hidden _ZNSt8numpunctIcED2Ev");
++asm (".hidden _ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct");
++asm (".hidden _ZNSt8numpunctIwED0Ev");
++asm (".hidden _ZNSt8numpunctIwED1Ev");
++asm (".hidden _ZNSt8numpunctIwED2Ev");
++asm (".hidden _ZSt24__narrow_multibyte_charsPKcP15__locale_struct");
+--- libstdc++-v3/src/nonshared98/istream-string.cc.jj	2019-05-13 10:20:36.300517168 +0200
++++ libstdc++-v3/src/nonshared98/istream-string.cc	2019-05-13 10:20:36.300517168 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++98/istream-string.cc"
+--- libstdc++-v3/src/nonshared98/c++locale.cc.jj	2019-05-13 10:20:36.300517168 +0200
++++ libstdc++-v3/src/nonshared98/c++locale.cc	2019-05-13 10:20:36.300517168 +0200
+@@ -0,0 +1,33 @@
++// Copyright (C) 2016-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX98 1
++#include "../c++98/c++locale.cc"
++asm (".hidden _ZNKSt8Catalogs6_M_getEi");
++asm (".hidden _ZNSt8Catalogs6_M_addEPKcSt6locale");
++asm (".hidden _ZNSt8Catalogs8_M_eraseEi");
++asm (".hidden _ZNSt8CatalogsD1Ev");
++asm (".hidden _ZNSt8CatalogsD2Ev");
++asm (".hidden _ZSt12get_catalogsv");
++asm (".hidden _ZN9__gnu_cxx13__scoped_lockD1Ev");
++asm (".hidden _ZN9__gnu_cxx13__scoped_lockD2Ev");
++asm (".hidden _ZNSt6vectorIPSt12Catalog_infoSaIS1_EE17_M_realloc_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_");
+--- libstdc++-v3/src/nonshared98/ios_failure80.cc.jj	2019-05-14 16:09:45.700833320 +0200
++++ libstdc++-v3/src/nonshared98/ios_failure80.cc	2019-05-14 18:38:02.578274402 +0200
+@@ -0,0 +1,27 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_80
++#include "../c++98/ios_failure.cc"
++asm (".hidden _ZSt21__destroy_ios_failurePv");
++asm (".hidden _ZSt23__construct_ios_failurePvPKc");
++asm (".hidden _ZSt24__is_ios_failure_handlerPKN10__cxxabiv117__class_type_infoE");
+--- libstdc++-v3/src/nonshared98/Makefile.am.jj	2019-05-13 10:20:36.301517151 +0200
++++ libstdc++-v3/src/nonshared98/Makefile.am	2019-05-14 16:05:17.458317714 +0200
+@@ -0,0 +1,165 @@
++## Makefile for the C++03 sources of the GNU C++ Standard library.
++##
++## Copyright (C) 1997-2019 Free Software Foundation, Inc.
++##
++## This file is part of the libstdc++ version 3 distribution.
++## Process this file with automake to produce Makefile.in.
++
++## 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
++## <http://www.gnu.org/licenses/>.
++
++include $(top_srcdir)/fragment.am
++
++# Convenience library for C++98 runtime.
++noinst_LTLIBRARIES = libnonshared98convenience44.la \
++		     libnonshared98convenience48.la \
++		     libnonshared98convenience80.la
++
++headers =
++
++# Source files linked in via configuration/make substitution for a
++# particular host, but with ad hoc naming rules.
++host_sources_extra = \
++	basic_file.cc c++locale.cc \
++	${ldbl_compat_sources} ${parallel_sources}
++
++parallel_sources44 = list_associated-2.cc
++
++if ENABLE_EXTERN_TEMPLATE
++# XTEMPLATE_FLAGS = -fno-implicit-templates
++inst_sources = \
++	snprintf_lite-inst.cc \
++	misc-inst.cc
++inst_sources44 = \
++	locale-inst.cc \
++	wlocale-inst.cc \
++	sstream-inst.cc \
++	streambuf-inst.cc
++else
++# XTEMPLATE_FLAGS =
++inst_sources =
++inst_sources44 =
++endif
++
++# Sources present in the src directory, always present.
++sources = \
++	char8_t-rtti.S
++sources4448 = \
++	collate_members.cc \
++	float128.S \
++	istream-string.cc \
++	locale.cc \
++	locale_facets.cc \
++	c++locale.cc \
++	ios_failure.cc \
++	messages_members.cc \
++	monetary_members.cc \
++	numeric_members.cc \
++	numeric_members_cow.cc \
++	eh_exception.cc \
++	eh_catch.cc \
++	${inst_sources}
++sources44 = \
++	list-aux-2.cc \
++	decimal-rtti.S \
++	nullptr-rtti.S \
++	int128.S \
++	compatibility-debug_list-2.cc \
++	list.cc \
++	hash_bytes.cc \
++	stdexcept.cc \
++	eh_alloc.cc \
++	eh_tm.cc \
++	pure.cc \
++	${parallel_sources44} \
++	${inst_sources44}
++sources48 = int12848.S \
++	    eh_alloc48.cc
++sources80 = \
++	ios_failure80.cc
++
++vpath % $(top_srcdir)/src/nonshared98
++vpath % $(top_srcdir)
++
++libnonshared98convenience44_la_SOURCES = $(sources) $(sources4448) $(sources44)
++libnonshared98convenience48_la_SOURCES = $(sources) $(sources4448) $(sources48)
++libnonshared98convenience80_la_SOURCES = $(sources) $(sources80)
++
++# 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++98 \
++	$(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
++	$(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \
++	$(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS)
++
++AM_MAKEFLAGS = \
++	"gxx_include_dir=$(gxx_include_dir)"
++
++# Libtool notes
++
++# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
++# last. (That way, things like -O2 passed down from the toplevel can
++# be overridden by --enable-debug.)
++
++# 2) 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.
++# We have to put --tag disable-shared after --tag CXX lest things
++# CXX undo the affect of disable-shared.
++LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(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 $(LIBTOOLFLAGS) \
++	  --mode=link $(CXX) \
++	  $(VTV_CXXLINKFLAGS) \
++	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
++
++collate_members.lo: collate_members.cc
++	$(LTCXXCOMPILE) -I. -c $<
++messages_members.lo: messages_members.cc
++	$(LTCXXCOMPILE) -I. -c $<
++monetary_members.lo: monetary_members.cc
++	$(LTCXXCOMPILE) -I. -c $<
++numeric_members.lo: numeric_members.cc
++	$(LTCXXCOMPILE) -I. -c $<
++numeric_members_cow.lo: numeric_members_cow.cc
++	$(LTCXXCOMPILE) -I. -c $<
++# Use special rules to compile with -fimplicit-templates.
++c++locale.lo: c++locale.cc
++	$(LTCXXCOMPILE) -I. -fimplicit-templates -c $<
++c++locale.o: c++locale.cc
++	$(CXXCOMPILE) -I. -fimplicit-templates -c $<
+--- libstdc++-v3/src/nonshared98/monetary_members.cc.jj	2019-05-13 10:20:36.301517151 +0200
++++ libstdc++-v3/src/nonshared98/monetary_members.cc	2019-05-13 10:20:36.301517151 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_USE_CXX11_ABI 1
++#include "../c++98/monetary_members.cc"
+--- libstdc++-v3/src/nonshared98/messages_members.cc.jj	2019-05-13 10:20:36.301517151 +0200
++++ libstdc++-v3/src/nonshared98/messages_members.cc	2019-05-13 10:20:36.301517151 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_USE_CXX11_ABI 1
++#include "../c++98/messages_members.cc"
+--- libstdc++-v3/src/nonshared98/Makefile.in.jj	2019-05-13 10:20:36.302517135 +0200
++++ libstdc++-v3/src/nonshared98/Makefile.in	2019-05-14 19:14:28.618793153 +0200
+@@ -0,0 +1,876 @@
++# Makefile.in generated by automake 1.15.1 from Makefile.am.
++# @configure_input@
++
++# Copyright (C) 1994-2019 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/nonshared98
++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)
++libnonshared98convenience44_la_LIBADD =
++am__objects_1 = char8_t-rtti.lo
++@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = snprintf_lite-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	misc-inst.lo
++am__objects_3 = collate_members.lo float128.lo istream-string.lo \
++	locale.lo locale_facets.lo c++locale.lo ios_failure.lo \
++	messages_members.lo monetary_members.lo numeric_members.lo \
++	numeric_members_cow.lo eh_exception.lo eh_catch.lo \
++	$(am__objects_2)
++am__objects_4 = list_associated-2.lo
++@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_5 = locale-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wlocale-inst.lo sstream-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	streambuf-inst.lo
++am__objects_6 = list-aux-2.lo decimal-rtti.lo nullptr-rtti.lo \
++	int128.lo compatibility-debug_list-2.lo list.lo hash_bytes.lo \
++	stdexcept.lo eh_alloc.lo eh_tm.lo pure.lo $(am__objects_4) \
++	$(am__objects_5)
++am_libnonshared98convenience44_la_OBJECTS = $(am__objects_1) \
++	$(am__objects_3) $(am__objects_6)
++libnonshared98convenience44_la_OBJECTS =  \
++	$(am_libnonshared98convenience44_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 = 
++libnonshared98convenience48_la_LIBADD =
++am__objects_7 = int12848.lo eh_alloc48.lo
++am_libnonshared98convenience48_la_OBJECTS = $(am__objects_1) \
++	$(am__objects_3) $(am__objects_7)
++libnonshared98convenience48_la_OBJECTS =  \
++	$(am_libnonshared98convenience48_la_OBJECTS)
++libnonshared98convenience80_la_LIBADD =
++am__objects_8 = ios_failure80.lo
++am_libnonshared98convenience80_la_OBJECTS = $(am__objects_1) \
++	$(am__objects_8)
++libnonshared98convenience80_la_OBJECTS =  \
++	$(am_libnonshared98convenience80_la_OBJECTS)
++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 =
++CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
++	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
++LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
++	$(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \
++	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
++	$(AM_CCASFLAGS) $(CCASFLAGS)
++AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
++am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
++am__v_CPPAS_0 = @echo "  CPPAS   " $@;
++am__v_CPPAS_1 = 
++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 = 
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
++	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
++	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
++	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
++	$(AM_CFLAGS) $(CFLAGS)
++AM_V_CC = $(am__v_CC_@AM_V@)
++am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
++am__v_CC_0 = @echo "  CC      " $@;
++am__v_CC_1 = 
++CCLD = $(CC)
++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
++	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
++AM_V_CCLD = $(am__v_CCLD_@AM_V@)
++am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
++am__v_CCLD_0 = @echo "  CCLD    " $@;
++am__v_CCLD_1 = 
++SOURCES = $(libnonshared98convenience44_la_SOURCES) \
++	$(libnonshared98convenience48_la_SOURCES) \
++	$(libnonshared98convenience80_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@
++CCAS = @CCAS@
++CCASFLAGS = @CCASFLAGS@
++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++98 runtime.
++noinst_LTLIBRARIES = libnonshared98convenience44.la \
++		     libnonshared98convenience48.la \
++		     libnonshared98convenience80.la
++
++headers = 
++
++# Source files linked in via configuration/make substitution for a
++# particular host, but with ad hoc naming rules.
++host_sources_extra = \
++	basic_file.cc c++locale.cc \
++	${ldbl_compat_sources} ${parallel_sources}
++
++parallel_sources44 = list_associated-2.cc
++# XTEMPLATE_FLAGS =
++@ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources = 
++
++# XTEMPLATE_FLAGS = -fno-implicit-templates
++@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	snprintf_lite-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	misc-inst.cc
++
++@ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources44 = 
++@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources44 = \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wlocale-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	streambuf-inst.cc
++
++
++# Sources present in the src directory, always present.
++sources = \
++	char8_t-rtti.S
++
++sources4448 = \
++	collate_members.cc \
++	float128.S \
++	istream-string.cc \
++	locale.cc \
++	locale_facets.cc \
++	c++locale.cc \
++	ios_failure.cc \
++	messages_members.cc \
++	monetary_members.cc \
++	numeric_members.cc \
++	numeric_members_cow.cc \
++	eh_exception.cc \
++	eh_catch.cc \
++	${inst_sources}
++
++sources44 = \
++	list-aux-2.cc \
++	decimal-rtti.S \
++	nullptr-rtti.S \
++	int128.S \
++	compatibility-debug_list-2.cc \
++	list.cc \
++	hash_bytes.cc \
++	stdexcept.cc \
++	eh_alloc.cc \
++	eh_tm.cc \
++	pure.cc \
++	${parallel_sources44} \
++	${inst_sources44}
++
++sources48 = int12848.S \
++	    eh_alloc48.cc
++
++sources80 = \
++	ios_failure80.cc
++
++libnonshared98convenience44_la_SOURCES = $(sources) $(sources4448) $(sources44)
++libnonshared98convenience48_la_SOURCES = $(sources) $(sources4448) $(sources48)
++libnonshared98convenience80_la_SOURCES = $(sources) $(sources80)
++
++# 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++98 \
++	$(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
++	$(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \
++	$(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS)
++
++AM_MAKEFLAGS = \
++	"gxx_include_dir=$(gxx_include_dir)"
++
++
++# Libtool notes
++
++# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
++# last. (That way, things like -O2 passed down from the toplevel can
++# be overridden by --enable-debug.)
++
++# 2) 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.
++# We have to put --tag disable-shared after --tag CXX lest things
++# CXX undo the affect of disable-shared.
++LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(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 $(LIBTOOLFLAGS) \
++	  --mode=link $(CXX) \
++	  $(VTV_CXXLINKFLAGS) \
++	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
++
++all: all-am
++
++.SUFFIXES:
++.SUFFIXES: .S .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/nonshared98/Makefile'; \
++	$(am__cd) $(top_srcdir) && \
++	  $(AUTOMAKE) --foreign --ignore-deps src/nonshared98/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}; \
++	}
++
++libnonshared98convenience44.la: $(libnonshared98convenience44_la_OBJECTS) $(libnonshared98convenience44_la_DEPENDENCIES) $(EXTRA_libnonshared98convenience44_la_DEPENDENCIES) 
++	$(AM_V_CXXLD)$(CXXLINK)  $(libnonshared98convenience44_la_OBJECTS) $(libnonshared98convenience44_la_LIBADD) $(LIBS)
++
++libnonshared98convenience48.la: $(libnonshared98convenience48_la_OBJECTS) $(libnonshared98convenience48_la_DEPENDENCIES) $(EXTRA_libnonshared98convenience48_la_DEPENDENCIES) 
++	$(AM_V_CXXLD)$(CXXLINK)  $(libnonshared98convenience48_la_OBJECTS) $(libnonshared98convenience48_la_LIBADD) $(LIBS)
++
++libnonshared98convenience80.la: $(libnonshared98convenience80_la_OBJECTS) $(libnonshared98convenience80_la_DEPENDENCIES) $(EXTRA_libnonshared98convenience80_la_DEPENDENCIES) 
++	$(AM_V_CXXLD)$(CXXLINK)  $(libnonshared98convenience80_la_OBJECTS) $(libnonshared98convenience80_la_LIBADD) $(LIBS)
++
++mostlyclean-compile:
++	-rm -f *.$(OBJEXT)
++
++distclean-compile:
++	-rm -f *.tab.c
++
++.S.o:
++	$(AM_V_CPPAS)$(CPPASCOMPILE) -c -o $@ $<
++
++.S.obj:
++	$(AM_V_CPPAS)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
++
++.S.lo:
++	$(AM_V_CPPAS)$(LTCPPASCOMPILE) -c -o $@ $<
++
++.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/nonshared98
++vpath % $(top_srcdir)
++
++collate_members.lo: collate_members.cc
++	$(LTCXXCOMPILE) -I. -c $<
++messages_members.lo: messages_members.cc
++	$(LTCXXCOMPILE) -I. -c $<
++monetary_members.lo: monetary_members.cc
++	$(LTCXXCOMPILE) -I. -c $<
++numeric_members.lo: numeric_members.cc
++	$(LTCXXCOMPILE) -I. -c $<
++numeric_members_cow.lo: numeric_members_cow.cc
++	$(LTCXXCOMPILE) -I. -c $<
++# Use special rules to compile with -fimplicit-templates.
++c++locale.lo: c++locale.cc
++	$(LTCXXCOMPILE) -I. -fimplicit-templates -c $<
++c++locale.o: c++locale.cc
++	$(CXXCOMPILE) -I. -fimplicit-templates -c $<
++
++# 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:
+--- libstdc++-v3/src/nonshared98/list_associated-2.cc.jj	2019-05-13 10:20:36.302517135 +0200
++++ libstdc++-v3/src/nonshared98/list_associated-2.cc	2019-05-13 10:20:36.302517135 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++98/list_associated-2.cc"
+--- libstdc++-v3/src/nonshared98/eh_catch.cc.jj	2019-05-13 10:20:36.302517135 +0200
++++ libstdc++-v3/src/nonshared98/eh_catch.cc	2019-05-13 10:20:36.302517135 +0200
+@@ -0,0 +1,39 @@
++// -*- C++ -*- Exception handling routines for catching.
++// Copyright (C) 2001-2019 Free Software Foundation, Inc.
++//
++// This file is part of GCC.
++//
++// GCC 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.
++//
++// GCC 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.
++//
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <cstdlib>
++#include "unwind-cxx.h"
++
++using namespace __cxxabiv1;
++
++int
++std::uncaught_exceptions() throw()
++{
++#if __cpp_exceptions
++  __cxa_eh_globals *globals = __cxa_get_globals ();
++  return globals->uncaughtExceptions;
++#else
++  return 0;
++#endif
++}
+--- libstdc++-v3/src/nonshared98/compatibility-debug_list-2.cc.jj	2019-05-13 10:20:36.302517135 +0200
++++ libstdc++-v3/src/nonshared98/compatibility-debug_list-2.cc	2019-05-13 10:20:36.302517135 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++98/compatibility-debug_list-2.cc"
+--- libstdc++-v3/src/nonshared98/eh_alloc.cc.jj	2019-05-13 10:20:36.303517118 +0200
++++ libstdc++-v3/src/nonshared98/eh_alloc.cc	2019-05-13 10:20:36.303517118 +0200
+@@ -0,0 +1,178 @@
++// -*- C++ -*- Allocate exception objects.
++// Copyright (C) 2001-2019 Free Software Foundation, Inc.
++//
++// This file is part of GCC.
++//
++// GCC 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.
++//
++// GCC 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.
++//
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++// This is derived from the C++ ABI for IA-64.  Where we diverge
++// for cross-architecture compatibility are noted with "@@@".
++
++#include <bits/c++config.h>
++#include <cstdlib>
++#if _GLIBCXX_HOSTED
++#include <cstring>
++#endif
++#include <climits>
++#include <exception>
++#include "unwind-cxx.h"
++#include <ext/concurrence.h>
++
++#if _GLIBCXX_HOSTED
++using std::free;
++using std::malloc;
++using std::memset;
++#else
++// In a freestanding environment, these functions may not be available
++// -- but for now, we assume that they are.
++extern "C" void *malloc (std::size_t);
++extern "C" void free(void *);
++extern "C" void *memset (void *, int, std::size_t);
++#endif
++
++using namespace __cxxabiv1;
++
++// ??? How to control these parameters.
++
++// Guess from the size of basic types how large a buffer is reasonable.
++// Note that the basic c++ exception header has 13 pointers and 2 ints,
++// so on a system with PSImode pointers we're talking about 56 bytes
++// just for overhead.
++
++#if INT_MAX == 32767
++# define EMERGENCY_OBJ_SIZE	128
++# define EMERGENCY_OBJ_COUNT	16
++#elif LONG_MAX == 2147483647
++# define EMERGENCY_OBJ_SIZE	512
++# define EMERGENCY_OBJ_COUNT	32
++#else
++# define EMERGENCY_OBJ_SIZE	1024
++# define EMERGENCY_OBJ_COUNT	64
++#endif
++
++#ifndef __GTHREADS
++# undef EMERGENCY_OBJ_COUNT
++# define EMERGENCY_OBJ_COUNT	4
++#endif
++
++#if INT_MAX == 32767 || EMERGENCY_OBJ_COUNT <= 32
++typedef unsigned int bitmask_type;
++#else
++typedef unsigned long bitmask_type;
++#endif
++
++
++typedef char one_buffer[EMERGENCY_OBJ_SIZE] __attribute__((aligned));
++
++static __cxa_dependent_exception dependents_buffer[EMERGENCY_OBJ_COUNT];
++static bitmask_type dependents_used;
++
++namespace
++{
++  // A single mutex controlling emergency allocations.
++  __gnu_cxx::__mutex emergency_mutex;
++}
++
++extern "C" __cxa_dependent_exception*
++__cxxabiv1::__cxa_allocate_dependent_exception() _GLIBCXX_NOTHROW
++{
++  __cxa_dependent_exception *ret;
++
++  ret = static_cast<__cxa_dependent_exception*>
++    (malloc (sizeof (__cxa_dependent_exception)));
++
++  if (!ret)
++    {
++      __gnu_cxx::__scoped_lock sentry(emergency_mutex);
++
++      bitmask_type used = dependents_used;
++      unsigned int which = 0;
++
++      while (used & 1)
++	{
++	  used >>= 1;
++	  if (++which >= EMERGENCY_OBJ_COUNT)
++	    goto failed;
++	}
++
++      dependents_used |= (bitmask_type)1 << which;
++      ret = &dependents_buffer[which];
++
++    failed:;
++
++      if (!ret)
++	std::terminate ();
++    }
++
++  // We have an uncaught exception as soon as we allocate memory.  This
++  // yields uncaught_exception() true during the copy-constructor that
++  // initializes the exception object.  See Issue 475.
++  __cxa_eh_globals *globals = __cxa_get_globals ();
++  globals->uncaughtExceptions += 1;
++
++  memset (ret, 0, sizeof (__cxa_dependent_exception));
++
++  return ret;
++}
++
++
++extern "C" void
++__cxxabiv1::__cxa_free_dependent_exception
++  (__cxa_dependent_exception *vptr) _GLIBCXX_NOTHROW
++{
++  char *base = (char *) dependents_buffer;
++  char *ptr = (char *) vptr;
++  if (ptr >= base
++      && ptr < base + sizeof (dependents_buffer))
++    {
++      const unsigned int which
++	= (unsigned) (ptr - base) / sizeof (__cxa_dependent_exception);
++
++      __gnu_cxx::__scoped_lock sentry(emergency_mutex);
++      dependents_used &= ~((bitmask_type)1 << which);
++    }
++  else
++    free (vptr);
++}
++
++namespace __gnu_cxx
++{
++  void
++  __freeres()
++  {
++  }
++}
++
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx30__throw_concurrence_lock_errorEv");
++asm (".hidden _ZN9__gnu_cxx32__throw_concurrence_unlock_errorEv");
++asm (".hidden _ZNK9__gnu_cxx24__concurrence_lock_error4whatEv");
++asm (".hidden _ZNK9__gnu_cxx26__concurrence_unlock_error4whatEv");
++asm (".hidden _ZTIN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTIN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx26__concurrence_unlock_errorE");
+--- libstdc++-v3/src/nonshared98/nullptr-rtti.S.jj	2019-05-13 10:20:36.303517118 +0200
++++ libstdc++-v3/src/nonshared98/nullptr-rtti.S	2019-05-13 10:20:36.303517118 +0200
+@@ -0,0 +1,166 @@
++/* Copyright (C) 2012-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.
++
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
++
++   You should have received a copy of the GNU General Public License and
++   a copy of the GCC Runtime Library Exception along with this program;
++   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __ia64__ || defined __aarch64__ \
++    || defined __i386__ || defined __powerpc__ || defined __s390__
++#ifdef __i386__
++#define ALIGN1	.align 4
++#elif defined __x86_64__
++#define ALIGN1	.align 32
++#define ALIGN2	.align 16
++#elif defined __ia64__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 8
++#define SECTION3(x).section .gnu.linkonce.s.x,"aws",@progbits
++#define POINTER	data8
++#define FLAGS data4
++#define PAD .skip 4
++#define STRING stringz
++#elif defined __powerpc64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#elif defined __powerpc__
++#define ALIGN1	.align 2
++#define ALIGN3	.align 2
++#define SECTION2(x).section .gnu.linkonce.s.x,"aw",@progbits
++#define SECTION3(x)SECTION2(x)
++#elif defined __aarch64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#define POINTER	.xword
++#define FLAGS	.word
++#define OBJECT	%object
++#elif defined __s390x__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 2
++#elif defined __s390__
++#define ALIGN1	.align 4
++#define ALIGN3	.align 2
++#endif
++#if defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __ia64__ || defined __aarch64__
++#define SIZE1	32
++#define SIZE2	16
++#define OFF	16
++#ifndef POINTER
++#define POINTER	.quad
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD .zero 4
++#endif
++#else
++#define SIZE1	16
++#define SIZE2	8
++#define OFF	8
++#ifndef POINTER
++#define POINTER	.long
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD
++#endif
++#endif
++#ifndef SYM
++#define SYM(x)x
++#endif
++#ifndef ALIGN2
++#define ALIGN2 ALIGN1
++#endif
++#ifndef ALIGN3
++#define ALIGN3
++#endif
++#ifndef OBJECT
++#define OBJECT @object
++#endif
++#ifndef SECTION1
++#define SECTION1(x).section .gnu.linkonce.d.rel.ro.x,"aw",@progbits
++#endif
++#ifndef SECTION2
++#define SECTION2(x)SECTION1(x)
++#endif
++#ifndef SECTION3
++#define SECTION3(x).section .gnu.linkonce.r.x,"a",@progbits
++#endif
++#ifndef STRING
++#define STRING .string
++#endif
++
++	.weak	SYM(_ZTIPKDn)
++	SECTION1(_ZTIPKDn)
++	ALIGN1
++	.type	SYM(_ZTIPKDn), OBJECT
++	.size	SYM(_ZTIPKDn), SIZE1
++_ZTIPKDn:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPKDn)
++	FLAGS	1
++	PAD
++	POINTER	SYM(_ZTIDn)
++	.weak	SYM(_ZTIPDn)
++	SECTION1(_ZTIPDn)
++	ALIGN1
++	.type	SYM(_ZTIPDn), OBJECT
++	.size	SYM(_ZTIPDn), SIZE1
++_ZTIPDn:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPDn)
++	FLAGS	0
++	PAD
++	POINTER	SYM(_ZTIDn)
++	.weak	SYM(_ZTIDn)
++	SECTION2(_ZTIDn)
++	ALIGN2
++	.type	SYM(_ZTIDn), OBJECT
++	.size	SYM(_ZTIDn), SIZE2
++_ZTIDn:
++	POINTER	SYM(_ZTVN10__cxxabiv123__fundamental_type_infoE)+OFF
++	POINTER	SYM(_ZTSDn)
++	.weak	SYM(_ZTSPKDn)
++	.hidden	SYM(_ZTSPKDn)
++	SECTION3(_ZTSPKDn)
++	ALIGN3
++	.type	SYM(_ZTSPKDn), OBJECT
++	.size	SYM(_ZTSPKDn), 5
++_ZTSPKDn:
++	STRING	"PKDn"
++	.weak	SYM(_ZTSPDn)
++	.hidden	SYM(_ZTSPDn)
++	SECTION3(_ZTSPDn)
++	ALIGN3
++	.type	SYM(_ZTSPDn), OBJECT
++	.size	SYM(_ZTSPDn), 4
++_ZTSPDn:
++	STRING	"PDn"
++	.weak	SYM(_ZTSDn)
++	.hidden	SYM(_ZTSDn)
++	SECTION3(_ZTSDn)
++	ALIGN3
++	.type	SYM(_ZTSDn), OBJECT
++	.size	SYM(_ZTSDn), 3
++_ZTSDn:
++	STRING	"Dn"
++#endif
++	.section	.note.GNU-stack,"",@progbits
+--- libstdc++-v3/src/nonshared98/eh_alloc48.cc.jj	2019-05-13 10:20:36.303517118 +0200
++++ libstdc++-v3/src/nonshared98/eh_alloc48.cc	2019-05-13 10:20:36.303517118 +0200
+@@ -0,0 +1,36 @@
++// -*- C++ -*- Allocate exception objects.
++// Copyright (C) 2001-2019 Free Software Foundation, Inc.
++//
++// This file is part of GCC.
++//
++// GCC 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.
++//
++// GCC 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.
++//
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++// This is derived from the C++ ABI for IA-64.  Where we diverge
++// for cross-architecture compatibility are noted with "@@@".
++
++#include <bits/c++config.h>
++
++namespace __gnu_cxx
++{
++  void
++  __freeres()
++  {
++  }
++}
+--- libstdc++-v3/src/nonshared98/int128.S.jj	2019-05-13 10:20:36.303517118 +0200
++++ libstdc++-v3/src/nonshared98/int128.S	2019-05-13 10:20:36.303517118 +0200
+@@ -0,0 +1,216 @@
++/* Copyright (C) 2012-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.
++
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
++
++   You should have received a copy of the GNU General Public License and
++   a copy of the GCC Runtime Library Exception along with this program;
++   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __ia64__ || defined __aarch64__ \
++    /* || defined __i386__ || defined __powerpc__ || defined __s390__ */
++#ifdef __i386__
++#define ALIGN1	.align 4
++#elif defined __x86_64__
++#define ALIGN1	.align 32
++#define ALIGN2	.align 16
++#elif defined __ia64__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 8
++#define SECTION3(x).section .gnu.linkonce.s.x,"aws",@progbits
++#define POINTER	data8
++#define FLAGS data4
++#define PAD .skip 4
++#define STRING stringz
++#elif defined __powerpc64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#elif defined __powerpc__
++#define ALIGN1	.align 2
++#define ALIGN3	.align 2
++#define SECTION2(x).section .gnu.linkonce.s.x,"aw",@progbits
++#define SECTION3(x)SECTION2(x)
++#elif defined __aarch64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#define POINTER	.xword
++#define FLAGS	.word
++#define OBJECT	%object
++#elif defined __s390x__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 2
++#elif defined __s390__
++#define ALIGN1	.align 4
++#define ALIGN3	.align 2
++#endif
++#if defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __ia64__ || defined __aarch64__
++#define SIZE1	32
++#define SIZE2	16
++#define OFF	16
++#ifndef POINTER
++#define POINTER	.quad
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD .zero 4
++#endif
++#else
++#define SIZE1	16
++#define SIZE2	8
++#define OFF	8
++#ifndef POINTER
++#define POINTER	.long
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD
++#endif
++#endif
++#ifndef SYM
++#define SYM(x)x
++#endif
++#ifndef ALIGN2
++#define ALIGN2 ALIGN1
++#endif
++#ifndef ALIGN3
++#define ALIGN3
++#endif
++#ifndef OBJECT
++#define OBJECT @object
++#endif
++#ifndef SECTION1
++#define SECTION1(x).section .gnu.linkonce.d.rel.ro.x,"aw",@progbits
++#endif
++#ifndef SECTION2
++#define SECTION2(x)SECTION1(x)
++#endif
++#ifndef SECTION3
++#define SECTION3(x).section .gnu.linkonce.r.x,"a",@progbits
++#endif
++#ifndef STRING
++#define STRING .string
++#endif
++
++#ifndef _GLIBCXX_NONSHARED_CXX11_48
++	.weak	SYM(_ZTIPKn)
++	SECTION1(_ZTIPKn)
++	ALIGN1
++	.type	SYM(_ZTIPKn), OBJECT
++	.size	SYM(_ZTIPKn), SIZE1
++_ZTIPKn:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPKn)
++	FLAGS	1
++	PAD
++	POINTER	SYM(_ZTIn)
++	.weak	SYM(_ZTIPn)
++	SECTION1(_ZTIPn)
++	ALIGN1
++	.type	SYM(_ZTIPn), OBJECT
++	.size	SYM(_ZTIPn), SIZE1
++_ZTIPn:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPn)
++	FLAGS	0
++	PAD
++	POINTER	SYM(_ZTIn)
++	.weak	SYM(_ZTIn)
++	SECTION2(_ZTIn)
++	ALIGN2
++	.type	SYM(_ZTIn), OBJECT
++	.size	SYM(_ZTIn), SIZE2
++_ZTIn:
++	POINTER	SYM(_ZTVN10__cxxabiv123__fundamental_type_infoE)+OFF
++	POINTER	SYM(_ZTSn)
++	.weak	SYM(_ZTIPKo)
++	SECTION1(_ZTIPKo)
++	ALIGN1
++	.type	SYM(_ZTIPKo), OBJECT
++	.size	SYM(_ZTIPKo), SIZE1
++_ZTIPKo:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPKo)
++	FLAGS	1
++	PAD
++	POINTER	SYM(_ZTIo)
++	.weak	SYM(_ZTIPo)
++	SECTION1(_ZTIPo)
++	ALIGN1
++	.type	SYM(_ZTIPo), OBJECT
++	.size	SYM(_ZTIPo), SIZE1
++_ZTIPo:
++	POINTER	SYM(_ZTVN10__cxxabiv119__pointer_type_infoE)+OFF
++	POINTER	SYM(_ZTSPo)
++	FLAGS	0
++	PAD
++	POINTER	SYM(_ZTIo)
++	.weak	SYM(_ZTIo)
++	SECTION2(_ZTIo)
++	ALIGN2
++	.type	SYM(_ZTIo), OBJECT
++	.size	SYM(_ZTIo), SIZE2
++_ZTIo:
++	POINTER	SYM(_ZTVN10__cxxabiv123__fundamental_type_infoE)+OFF
++	POINTER	SYM(_ZTSo)
++#endif
++	.weak	SYM(_ZTSPKn)
++	SECTION3(_ZTSPKn)
++	ALIGN3
++	.type	SYM(_ZTSPKn), OBJECT
++	.size	SYM(_ZTSPKn), 4
++_ZTSPKn:
++	STRING	"PKn"
++	.weak	SYM(_ZTSPn)
++	SECTION3(_ZTSPn)
++	ALIGN3
++	.type	SYM(_ZTSPn), OBJECT
++	.size	SYM(_ZTSPn), 3
++_ZTSPn:
++	STRING	"Pn"
++	.weak	SYM(_ZTSn)
++	SECTION3(_ZTSn)
++	ALIGN3
++	.type	SYM(_ZTSn), OBJECT
++	.size	SYM(_ZTSn), 2
++_ZTSn:
++	STRING	"n"
++	.weak	SYM(_ZTSPKo)
++	SECTION3(_ZTSPKo)
++	ALIGN3
++	.type	SYM(_ZTSPKo), OBJECT
++	.size	SYM(_ZTSPKo), 4
++_ZTSPKo:
++	STRING	"PKo"
++	.weak	SYM(_ZTSPo)
++	SECTION3(_ZTSPo)
++	ALIGN3
++	.type	SYM(_ZTSPo), OBJECT
++	.size	SYM(_ZTSPo), 3
++_ZTSPo:
++	STRING	"Po"
++	.weak	SYM(_ZTSo)
++	SECTION3(_ZTSo)
++	ALIGN3
++	.type	SYM(_ZTSo), OBJECT
++	.size	SYM(_ZTSo), 2
++_ZTSo:
++	STRING	"o"
++#endif
++	.section	.note.GNU-stack,"",@progbits
+--- libstdc++-v3/src/nonshared98/numeric_members.cc.jj	2019-05-13 10:20:36.304517101 +0200
++++ libstdc++-v3/src/nonshared98/numeric_members.cc	2019-05-13 10:20:36.304517101 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_USE_CXX11_ABI 1
++#include "../c++98/numeric_members.cc"
+--- libstdc++-v3/src/nonshared98/collate_members.cc.jj	2019-05-13 10:20:36.304517101 +0200
++++ libstdc++-v3/src/nonshared98/collate_members.cc	2019-05-13 10:20:36.304517101 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_USE_CXX11_ABI 1
++#include "../c++98/collate_members.cc"
+--- libstdc++-v3/src/nonshared98/hash_bytes.cc.jj	2019-05-13 10:20:36.304517101 +0200
++++ libstdc++-v3/src/nonshared98/hash_bytes.cc	2019-05-13 10:20:36.304517101 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/hash_bytes.cc"
+--- libstdc++-v3/src/nonshared98/list-aux-2.cc.jj	2019-05-13 10:20:36.304517101 +0200
++++ libstdc++-v3/src/nonshared98/list-aux-2.cc	2019-05-13 10:20:36.304517101 +0200
+@@ -0,0 +1,56 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++extern "C"
++{
++  extern void _ZNSt15_List_node_base8transferEPS_S0_(void *f, void *l) throw();
++
++  void
++  _ZNSt15_List_node_base11_M_transferEPS_S0_(void *f, void *l) throw()
++  {
++    _ZNSt15_List_node_base8transferEPS_S0_(f, l);
++  }
++
++  extern void _ZNSt15_List_node_base7reverseEv() throw();
++
++  void
++  _ZNSt15_List_node_base10_M_reverseEv() throw()
++  {
++    _ZNSt15_List_node_base7reverseEv();
++  }
++
++  extern void _ZNSt15_List_node_base4hookEPS_(void *p) throw();
++
++  void
++  _ZNSt15_List_node_base7_M_hookEPS_(void *p) throw()
++  {
++    _ZNSt15_List_node_base4hookEPS_(p);
++  }
++
++  extern void _ZNSt15_List_node_base6unhookEv() throw();
++
++  void
++  _ZNSt15_List_node_base9_M_unhookEv() throw()
++  {
++    _ZNSt15_List_node_base6unhookEv();
++  }
++}
+--- libstdc++-v3/src/nonshared11/sstream-inst.cc.jj	2019-05-13 10:20:36.304517101 +0200
++++ libstdc++-v3/src/nonshared11/sstream-inst.cc	2019-05-14 17:50:36.412736675 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/sstream-inst.cc"
+--- libstdc++-v3/src/nonshared11/string-inst80.cc.jj	2019-05-14 15:04:04.312694694 +0200
++++ libstdc++-v3/src/nonshared11/string-inst80.cc	2019-05-14 15:57:43.837899593 +0200
+@@ -0,0 +1,56 @@
++// Components for manipulating sequences of characters -*- C++ -*-
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++// Written by Jason Merrill based upon the specification by Takanori Adachi
++// in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers.
++
++#ifndef _GLIBCXX_USE_CXX11_ABI
++// Instantiations in this file use the new SSO std::string ABI unless included
++// by another file which defines _GLIBCXX_USE_CXX11_ABI=0.
++# define _GLIBCXX_USE_CXX11_ABI 1
++#endif
++
++#include <string>
++
++// Instantiation configuration.
++#ifndef C
++# define C char
++#endif
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  typedef basic_string<C> S;
++
++  template
++    S::iterator
++    S::insert(S::const_iterator, initializer_list<C>);
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/condition_variable.cc.jj	2019-05-13 10:20:36.305517085 +0200
++++ libstdc++-v3/src/nonshared11/condition_variable.cc	2019-05-13 10:20:36.305517085 +0200
+@@ -0,0 +1,27 @@
++// condition_variable -*- C++ -*-
++
++// Copyright (C) 2008-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11
++#include "../c++11/condition_variable.cc"
++asm (".hidden _ZSt16__at_thread_exitPSt20__at_thread_exit_elt");
+--- libstdc++-v3/src/nonshared11/del_opvsa.cc.jj	2019-05-13 10:20:36.305517085 +0200
++++ libstdc++-v3/src/nonshared11/del_opvsa.cc	2019-05-13 10:20:36.305517085 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2017-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/del_opvsa.cc"
+--- libstdc++-v3/src/nonshared11/cxx11-wlocale-inst.cc.jj	2019-05-13 10:20:36.305517085 +0200
++++ libstdc++-v3/src/nonshared11/cxx11-wlocale-inst.cc	2019-05-14 17:36:01.562343955 +0200
+@@ -0,0 +1,52 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/cxx11-wlocale-inst.cc"
++#if !defined (__powerpc__) && !defined (__s390__) && !defined (__s390x__)
++asm (".hidden _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11IjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11IlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11ImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11ItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11IxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11IyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++#else
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11IjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11IlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11ImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11ItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11IxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intB5cxx11IyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++#endif
++#if defined(__i386__) || (defined(__powerpc__) && !defined(__powerpc64__))
++asm (".hidden _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1ERKNSt7__cxx1112basic_stringIcS1_IcESaIcEEEj");
++asm (".hidden _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2ERKNSt7__cxx1112basic_stringIcS1_IcESaIcEEEj");
++#else
++asm (".hidden _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1ERKNSt7__cxx1112basic_stringIcS1_IcESaIcEEEm");
++asm (".hidden _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2ERKNSt7__cxx1112basic_stringIcS1_IcESaIcEEEm");
++#endif
++asm (".hidden _ZSt16__convert_from_vRKP15__locale_structPciPKcz");
++asm (".hidden _ZTISt10money_base");
++asm (".hidden _ZTISt13messages_base");
++asm (".hidden _ZTISt9time_base");
++asm (".hidden _ZTSSt10money_base");
++asm (".hidden _ZTSSt13messages_base");
++asm (".hidden _ZTSSt9time_base");
+--- libstdc++-v3/src/nonshared11/limits.cc.jj	2019-05-13 10:20:36.305517085 +0200
++++ libstdc++-v3/src/nonshared11/limits.cc	2019-05-14 17:23:45.304638562 +0200
+@@ -0,0 +1,57 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <limits>
++
++namespace std _GLIBCXX_VISIBILITY(default)   
++{
++
++#define const _GLIBCXX_USE_CONSTEXPR
++
++#ifdef _GLIBCXX_USE_CHAR8_T
++  // char8_t
++  const bool numeric_limits<char8_t>::is_specialized;
++  const int  numeric_limits<char8_t>::digits;
++  const int  numeric_limits<char8_t>::digits10;
++//  const int  numeric_limits<char8_t>::max_digits10;
++  const bool numeric_limits<char8_t>::is_signed;
++  const bool numeric_limits<char8_t>::is_integer;
++  const bool numeric_limits<char8_t>::is_exact;
++  const int  numeric_limits<char8_t>::radix;
++  const int  numeric_limits<char8_t>::min_exponent;
++  const int  numeric_limits<char8_t>::min_exponent10;
++  const int  numeric_limits<char8_t>::max_exponent;
++  const int  numeric_limits<char8_t>::max_exponent10;
++  const bool numeric_limits<char8_t>::has_infinity;
++  const bool numeric_limits<char8_t>::has_quiet_NaN;
++  const bool numeric_limits<char8_t>::has_signaling_NaN;
++  const float_denorm_style numeric_limits<char8_t>::has_denorm;
++  const bool numeric_limits<char8_t>::has_denorm_loss;
++  const bool numeric_limits<char8_t>::is_iec559;
++  const bool numeric_limits<char8_t>::is_bounded;
++  const bool numeric_limits<char8_t>::is_modulo;
++  const bool numeric_limits<char8_t>::traps;
++  const bool numeric_limits<char8_t>::tinyness_before;
++  const float_round_style numeric_limits<char8_t>::round_style;
++#endif // _GLIBCXX_USE_CHAR8_T
++
++}
+--- libstdc++-v3/src/nonshared11/locale-inst-asm.S.jj	2019-05-13 10:20:36.305517085 +0200
++++ libstdc++-v3/src/nonshared11/locale-inst-asm.S	2019-05-13 10:20:36.305517085 +0200
+@@ -0,0 +1,291 @@
++/* Copyright (C) 2015-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.
++
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
++
++   You should have received a copy of the GNU General Public License and
++   a copy of the GCC Runtime Library Exception along with this program;
++   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifdef __i386__
++#define ALIGN1	.align 4
++#elif defined __x86_64__
++#define ALIGN1	.align 32
++#define ALIGN2	.align 16
++#elif defined __ia64__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 8
++#define SECTION3(x).section .gnu.linkonce.s.x,"aws",@progbits
++#define POINTER	data8
++#define FLAGS data4
++#define PAD .skip 4
++#define STRING stringz
++#define VPTR(x) data16.ua @iplt(x)
++#define SIZE3	48
++#elif defined __powerpc64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#elif defined __powerpc__
++#define ALIGN1	.align 2
++#define ALIGN3	.align 2
++#define SECTION2(x).section .gnu.linkonce.s.x,"aw",@progbits
++#define SECTION3(x)SECTION2(x)
++#elif defined __aarch64__
++#define ALIGN1	.align 3
++#define ALIGN3	.align 3
++#define POINTER	.xword
++#define FLAGS	.word
++#define OBJECT	%object
++#elif defined __s390x__
++#define ALIGN1	.align 8
++#define ALIGN3	.align 2
++#elif defined __s390__
++#define ALIGN1	.align 4
++#define ALIGN3	.align 2
++#endif
++#if defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __ia64__ || defined __aarch64__
++#define SIZE1	32
++#define SIZE2	16
++#define OFF	16
++#ifndef POINTER
++#define POINTER	.quad
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD .zero 4
++#endif
++#else
++#define SIZE1	16
++#define SIZE2	8
++#define OFF	8
++#ifndef POINTER
++#define POINTER	.long
++#endif
++#ifndef FLAGS
++#define FLAGS .long
++#endif
++#ifndef PAD
++#define PAD
++#endif
++#endif
++#ifndef SYM
++#define SYM(x)x
++#endif
++#ifndef ALIGN2
++#define ALIGN2 ALIGN1
++#endif
++#ifndef ALIGN3
++#define ALIGN3
++#endif
++#ifndef OBJECT
++#define OBJECT @object
++#endif
++#ifndef SECTION1
++#define SECTION1(x).section .gnu.linkonce.d.rel.ro.x,"aw",@progbits
++#endif
++#ifndef SECTION2
++#define SECTION2(x)SECTION1(x)
++#endif
++#ifndef SECTION3
++#define SECTION3(x).section .gnu.linkonce.r.x,"a",@progbits
++#endif
++#ifndef STRING
++#define STRING .string
++#endif
++#ifndef SIZE3
++#define SIZE3 SIZE1
++#endif
++#ifndef VPTR
++#define VPTR(x) POINTER SYM(x)
++#endif
++
++	.weak	SYM(_ZTISt18__moneypunct_cacheIcLb0EE)
++	.hidden	SYM(_ZTISt18__moneypunct_cacheIcLb0EE)
++	SECTION1(_ZTISt18__moneypunct_cacheIcLb0EE)
++	ALIGN1
++	.type	SYM(_ZTISt18__moneypunct_cacheIcLb0EE), OBJECT
++	.size	SYM(_ZTISt18__moneypunct_cacheIcLb0EE), SIZE1+SIZE2
++_ZTISt18__moneypunct_cacheIcLb0EE:
++	POINTER	SYM(_ZTVN10__cxxabiv120__si_class_type_infoE)+OFF
++	POINTER	SYM(_ZTSSt18__moneypunct_cacheIcLb0EE)
++	POINTER SYM(_ZTINSt6locale5facetE)
++	.weak	SYM(_ZTSSt18__moneypunct_cacheIcLb0EE)
++	.hidden	SYM(_ZTSSt18__moneypunct_cacheIcLb0EE)
++	SECTION3(_ZTSSt18__moneypunct_cacheIcLb0EE)
++	ALIGN3
++	.type	SYM(_ZTSSt18__moneypunct_cacheIcLb0EE), OBJECT
++	.size	SYM(_ZTSSt18__moneypunct_cacheIcLb0EE), 30
++_ZTSSt18__moneypunct_cacheIcLb0EE:
++	STRING	"St18__moneypunct_cacheIcLb0EE"
++	.weak	SYM(_ZTVSt18__moneypunct_cacheIcLb0EE)
++	.hidden	SYM(_ZTVSt18__moneypunct_cacheIcLb0EE)
++	SECTION1(_ZTVSt18__moneypunct_cacheIcLb0EE)
++	ALIGN1
++	.type	SYM(_ZTVSt18__moneypunct_cacheIcLb0EE), OBJECT
++	.size	SYM(_ZTVSt18__moneypunct_cacheIcLb0EE), SIZE3
++_ZTVSt18__moneypunct_cacheIcLb0EE:
++	POINTER	0
++	POINTER	SYM(_ZTISt18__moneypunct_cacheIcLb0EE)
++	VPTR(_ZNSt18__moneypunct_cacheIcLb0EED1Ev)
++	VPTR(_ZNSt18__moneypunct_cacheIcLb0EED0Ev)
++	.weak	SYM(_ZTISt18__moneypunct_cacheIcLb1EE)
++	.hidden	SYM(_ZTISt18__moneypunct_cacheIcLb1EE)
++	SECTION1(_ZTISt18__moneypunct_cacheIcLb1EE)
++	ALIGN1
++	.type	SYM(_ZTISt18__moneypunct_cacheIcLb1EE), OBJECT
++	.size	SYM(_ZTISt18__moneypunct_cacheIcLb1EE), SIZE1+SIZE2
++_ZTISt18__moneypunct_cacheIcLb1EE:
++	POINTER	SYM(_ZTVN10__cxxabiv120__si_class_type_infoE)+OFF
++	POINTER	SYM(_ZTSSt18__moneypunct_cacheIcLb1EE)
++	POINTER SYM(_ZTINSt6locale5facetE)
++	.weak	SYM(_ZTSSt18__moneypunct_cacheIcLb1EE)
++	.hidden	SYM(_ZTSSt18__moneypunct_cacheIcLb1EE)
++	SECTION3(_ZTSSt18__moneypunct_cacheIcLb1EE)
++	ALIGN3
++	.type	SYM(_ZTSSt18__moneypunct_cacheIcLb1EE), OBJECT
++	.size	SYM(_ZTSSt18__moneypunct_cacheIcLb1EE), 30
++_ZTSSt18__moneypunct_cacheIcLb1EE:
++	STRING	"St18__moneypunct_cacheIcLb1EE"
++	.weak	SYM(_ZTVSt18__moneypunct_cacheIcLb1EE)
++	.hidden	SYM(_ZTVSt18__moneypunct_cacheIcLb1EE)
++	SECTION1(_ZTVSt18__moneypunct_cacheIcLb1EE)
++	ALIGN1
++	.type	SYM(_ZTVSt18__moneypunct_cacheIcLb1EE), OBJECT
++	.size	SYM(_ZTVSt18__moneypunct_cacheIcLb1EE), SIZE3
++_ZTVSt18__moneypunct_cacheIcLb1EE:
++	POINTER	0
++	POINTER	SYM(_ZTISt18__moneypunct_cacheIcLb1EE)
++	VPTR(_ZNSt18__moneypunct_cacheIcLb1EED1Ev)
++	VPTR(_ZNSt18__moneypunct_cacheIcLb1EED0Ev)
++	.weak	SYM(_ZTISt18__moneypunct_cacheIwLb0EE)
++	.hidden	SYM(_ZTISt18__moneypunct_cacheIwLb0EE)
++	SECTION1(_ZTISt18__moneypunct_cacheIwLb0EE)
++	ALIGN1
++	.type	SYM(_ZTISt18__moneypunct_cacheIwLb0EE), OBJECT
++	.size	SYM(_ZTISt18__moneypunct_cacheIwLb0EE), SIZE1+SIZE2
++_ZTISt18__moneypunct_cacheIwLb0EE:
++	POINTER	SYM(_ZTVN10__cxxabiv120__si_class_type_infoE)+OFF
++	POINTER	SYM(_ZTSSt18__moneypunct_cacheIwLb0EE)
++	POINTER SYM(_ZTINSt6locale5facetE)
++	.weak	SYM(_ZTSSt18__moneypunct_cacheIwLb0EE)
++	.hidden	SYM(_ZTSSt18__moneypunct_cacheIwLb0EE)
++	SECTION3(_ZTSSt18__moneypunct_cacheIwLb0EE)
++	ALIGN3
++	.type	SYM(_ZTSSt18__moneypunct_cacheIwLb0EE), OBJECT
++	.size	SYM(_ZTSSt18__moneypunct_cacheIwLb0EE), 30
++_ZTSSt18__moneypunct_cacheIwLb0EE:
++	STRING	"St18__moneypunct_cacheIwLb0EE"
++	.weak	SYM(_ZTVSt18__moneypunct_cacheIwLb0EE)
++	.hidden	SYM(_ZTVSt18__moneypunct_cacheIwLb0EE)
++	SECTION1(_ZTVSt18__moneypunct_cacheIwLb0EE)
++	ALIGN1
++	.type	SYM(_ZTVSt18__moneypunct_cacheIwLb0EE), OBJECT
++	.size	SYM(_ZTVSt18__moneypunct_cacheIwLb0EE), SIZE3
++_ZTVSt18__moneypunct_cacheIwLb0EE:
++	POINTER	0
++	POINTER	SYM(_ZTISt18__moneypunct_cacheIwLb0EE)
++	VPTR(_ZNSt18__moneypunct_cacheIwLb0EED1Ev)
++	VPTR(_ZNSt18__moneypunct_cacheIwLb0EED0Ev)
++	.weak	SYM(_ZTISt18__moneypunct_cacheIwLb1EE)
++	.hidden	SYM(_ZTISt18__moneypunct_cacheIwLb1EE)
++	SECTION1(_ZTISt18__moneypunct_cacheIwLb1EE)
++	ALIGN1
++	.type	SYM(_ZTISt18__moneypunct_cacheIwLb1EE), OBJECT
++	.size	SYM(_ZTISt18__moneypunct_cacheIwLb1EE), SIZE1+SIZE2
++_ZTISt18__moneypunct_cacheIwLb1EE:
++	POINTER	SYM(_ZTVN10__cxxabiv120__si_class_type_infoE)+OFF
++	POINTER	SYM(_ZTSSt18__moneypunct_cacheIwLb1EE)
++	POINTER SYM(_ZTINSt6locale5facetE)
++	.weak	SYM(_ZTSSt18__moneypunct_cacheIwLb1EE)
++	.hidden	SYM(_ZTSSt18__moneypunct_cacheIwLb1EE)
++	SECTION3(_ZTSSt18__moneypunct_cacheIwLb1EE)
++	ALIGN3
++	.type	SYM(_ZTSSt18__moneypunct_cacheIwLb1EE), OBJECT
++	.size	SYM(_ZTSSt18__moneypunct_cacheIwLb1EE), 30
++_ZTSSt18__moneypunct_cacheIwLb1EE:
++	STRING	"St18__moneypunct_cacheIwLb1EE"
++	.weak	SYM(_ZTVSt18__moneypunct_cacheIwLb1EE)
++	.hidden	SYM(_ZTVSt18__moneypunct_cacheIwLb1EE)
++	SECTION1(_ZTVSt18__moneypunct_cacheIwLb1EE)
++	ALIGN1
++	.type	SYM(_ZTVSt18__moneypunct_cacheIwLb1EE), OBJECT
++	.size	SYM(_ZTVSt18__moneypunct_cacheIwLb1EE), SIZE3
++_ZTVSt18__moneypunct_cacheIwLb1EE:
++	POINTER	0
++	POINTER	SYM(_ZTISt18__moneypunct_cacheIwLb1EE)
++	VPTR(_ZNSt18__moneypunct_cacheIwLb1EED1Ev)
++	VPTR(_ZNSt18__moneypunct_cacheIwLb1EED0Ev)
++	.weak	SYM(_ZTISt16__numpunct_cacheIcE)
++	.hidden	SYM(_ZTISt16__numpunct_cacheIcE)
++	SECTION1(_ZTISt16__numpunct_cacheIcE)
++	ALIGN1
++	.type	SYM(_ZTISt16__numpunct_cacheIcE), OBJECT
++	.size	SYM(_ZTISt16__numpunct_cacheIcE), SIZE1+SIZE2
++_ZTISt16__numpunct_cacheIcE:
++	POINTER	SYM(_ZTVN10__cxxabiv120__si_class_type_infoE)+OFF
++	POINTER	SYM(_ZTSSt16__numpunct_cacheIcE)
++	POINTER SYM(_ZTINSt6locale5facetE)
++	.weak	SYM(_ZTSSt16__numpunct_cacheIcE)
++	.hidden	SYM(_ZTSSt16__numpunct_cacheIcE)
++	SECTION3(_ZTSSt16__numpunct_cacheIcE)
++	ALIGN3
++	.type	SYM(_ZTSSt16__numpunct_cacheIcE), OBJECT
++	.size	SYM(_ZTSSt16__numpunct_cacheIcE), 24
++_ZTSSt16__numpunct_cacheIcE:
++	STRING	"St16__numpunct_cacheIcE"
++	.weak	SYM(_ZTVSt16__numpunct_cacheIcE)
++	.hidden	SYM(_ZTVSt16__numpunct_cacheIcE)
++	SECTION1(_ZTVSt16__numpunct_cacheIcE)
++	ALIGN1
++	.type	SYM(_ZTVSt16__numpunct_cacheIcE), OBJECT
++	.size	SYM(_ZTVSt16__numpunct_cacheIcE), SIZE3
++_ZTVSt16__numpunct_cacheIcE:
++	POINTER	0
++	POINTER	SYM(_ZTISt16__numpunct_cacheIcE)
++	VPTR(_ZNSt16__numpunct_cacheIcED1Ev)
++	VPTR(_ZNSt16__numpunct_cacheIcED0Ev)
++	.weak	SYM(_ZTISt16__numpunct_cacheIwE)
++	.hidden	SYM(_ZTISt16__numpunct_cacheIwE)
++	SECTION1(_ZTISt16__numpunct_cacheIwE)
++	ALIGN1
++	.type	SYM(_ZTISt16__numpunct_cacheIwE), OBJECT
++	.size	SYM(_ZTISt16__numpunct_cacheIwE), SIZE1+SIZE2
++_ZTISt16__numpunct_cacheIwE:
++	POINTER	SYM(_ZTVN10__cxxabiv120__si_class_type_infoE)+OFF
++	POINTER	SYM(_ZTSSt16__numpunct_cacheIwE)
++	POINTER SYM(_ZTINSt6locale5facetE)
++	.weak	SYM(_ZTSSt16__numpunct_cacheIwE)
++	.hidden	SYM(_ZTSSt16__numpunct_cacheIwE)
++	SECTION3(_ZTSSt16__numpunct_cacheIwE)
++	ALIGN3
++	.type	SYM(_ZTSSt16__numpunct_cacheIwE), OBJECT
++	.size	SYM(_ZTSSt16__numpunct_cacheIwE), 24
++_ZTSSt16__numpunct_cacheIwE:
++	STRING	"St16__numpunct_cacheIwE"
++	.weak	SYM(_ZTVSt16__numpunct_cacheIwE)
++	.hidden	SYM(_ZTVSt16__numpunct_cacheIwE)
++	SECTION1(_ZTVSt16__numpunct_cacheIwE)
++	ALIGN1
++	.type	SYM(_ZTVSt16__numpunct_cacheIwE), OBJECT
++	.size	SYM(_ZTVSt16__numpunct_cacheIwE), SIZE3
++_ZTVSt16__numpunct_cacheIwE:
++	POINTER	0
++	POINTER	SYM(_ZTISt16__numpunct_cacheIwE)
++	VPTR(_ZNSt16__numpunct_cacheIwED1Ev)
++	VPTR(_ZNSt16__numpunct_cacheIwED0Ev)
++	.section	.note.GNU-stack,"",@progbits
+--- libstdc++-v3/src/nonshared11/atexit_thread.cc.jj	2019-05-13 10:20:36.305517085 +0200
++++ libstdc++-v3/src/nonshared11/atexit_thread.cc	2019-05-13 10:20:36.305517085 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2013-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/atexit_thread.cc"
+--- libstdc++-v3/src/nonshared11/streambuf-inst.cc.jj	2019-05-13 10:20:36.305517085 +0200
++++ libstdc++-v3/src/nonshared11/streambuf-inst.cc	2019-05-13 10:20:36.305517085 +0200
+@@ -0,0 +1,42 @@
++// Explicit instantiation file.
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882:
++//
++
++#include <streambuf>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  template void basic_streambuf<char>::swap(basic_streambuf&);
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template void basic_streambuf<wchar_t>::swap(basic_streambuf&);
++#endif
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/iostream-inst.cc.jj	2019-05-13 10:20:36.305517085 +0200
++++ libstdc++-v3/src/nonshared11/iostream-inst.cc	2019-05-13 10:20:36.305517085 +0200
+@@ -0,0 +1,46 @@
++// Explicit instantiation file.
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882:
++//
++
++#include <iomanip>
++#include <istream>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  template basic_iostream<char>::basic_iostream(basic_iostream&&);
++  template basic_iostream<char>& basic_iostream<char>::operator=(basic_iostream&&);
++  template void basic_iostream<char>::swap(basic_iostream&);
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template basic_iostream<wchar_t>::basic_iostream(basic_iostream&&);
++  template basic_iostream<wchar_t>& basic_iostream<wchar_t>::operator=(basic_iostream&&);
++  template void basic_iostream<wchar_t>::swap(basic_iostream&);
++#endif
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/debug44.cc.jj	2019-05-13 19:12:25.788286636 +0200
++++ libstdc++-v3/src/nonshared11/debug44.cc	2019-05-14 16:52:30.605961178 +0200
+@@ -0,0 +1,265 @@
++// Copyright (C) 2003-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <bits/move.h>
++#include <bits/stl_iterator_base_types.h>
++
++#include <debug/debug.h>
++#include <debug/safe_sequence.h>
++#include <debug/safe_unordered_container.h>
++#include <debug/safe_iterator.h>
++#include <debug/safe_local_iterator.h>
++#include <algorithm>
++#include <cassert>
++#include <cstring>
++#include <cctype>
++#include <cstdio>
++#include <cstdlib>
++
++using namespace std;
++
++namespace
++{
++  void
++  swap_its(__gnu_debug::_Safe_sequence_base& __lhs,
++	   __gnu_debug::_Safe_iterator_base*& __lhs_its,
++	   __gnu_debug::_Safe_sequence_base& __rhs,
++	   __gnu_debug::_Safe_iterator_base*& __rhs_its)
++  {
++    swap(__lhs_its, __rhs_its);
++    __gnu_debug::_Safe_iterator_base* __iter;
++    for (__iter = __rhs_its; __iter; __iter = __iter->_M_next)
++      __iter->_M_sequence = &__rhs;
++    for (__iter = __lhs_its; __iter; __iter = __iter->_M_next)
++      __iter->_M_sequence = &__lhs;
++  }
++
++  void
++  swap_seq(__gnu_debug::_Safe_sequence_base& __lhs,
++	   __gnu_debug::_Safe_sequence_base& __rhs)
++  {
++    swap(__lhs._M_version, __rhs._M_version);
++    swap_its(__lhs, __lhs._M_iterators,
++	     __rhs, __rhs._M_iterators);
++    swap_its(__lhs, __lhs._M_const_iterators,
++	     __rhs, __rhs._M_const_iterators);
++  }
++
++  void
++  swap_ucont(__gnu_debug::_Safe_unordered_container_base& __lhs,
++	    __gnu_debug::_Safe_unordered_container_base& __rhs)
++  {
++    swap_seq(__lhs, __rhs);
++    swap_its(__lhs, __lhs._M_local_iterators,
++	     __rhs, __rhs._M_local_iterators);
++    swap_its(__lhs, __lhs._M_const_local_iterators,
++	     __rhs, __rhs._M_const_local_iterators);
++  }
++
++  void
++  detach_all(__gnu_debug::_Safe_iterator_base* __iter)
++  {
++    for (; __iter;)
++      {
++	__gnu_debug::_Safe_iterator_base* __old = __iter;
++	__iter = __iter->_M_next;
++	__old->_M_reset();
++      }
++  }
++} // anonymous namespace
++
++namespace __gnu_debug
++{
++  void
++  _Safe_iterator_base::
++  _M_reset() throw ()
++  {
++    _M_sequence = 0;
++    _M_version = 0;
++    _M_prior = 0;
++    _M_next = 0;
++  }
++
++  _Safe_unordered_container_base*
++  _Safe_local_iterator_base::
++  _M_get_container() const _GLIBCXX_NOEXCEPT
++  { return static_cast<_Safe_unordered_container_base*>(_M_sequence); }
++
++  void
++  _Safe_local_iterator_base::
++  _M_attach(_Safe_sequence_base* __cont, bool __constant)
++  {
++    _M_detach();
++    
++    // Attach to the new container (if there is one)
++    if (__cont)
++      {
++	_M_sequence = __cont;
++	_M_version = _M_sequence->_M_version;
++	_M_get_container()->_M_attach_local(this, __constant);
++      }
++  }
++
++  void
++  _Safe_local_iterator_base::
++  _M_attach_single(_Safe_sequence_base* __cont, bool __constant) throw ()
++  {
++    _M_detach_single();
++      
++    // Attach to the new container (if there is one)
++    if (__cont)
++      {
++	_M_sequence = __cont;
++	_M_version = _M_sequence->_M_version;
++	_M_get_container()->_M_attach_local_single(this, __constant);
++      }
++  }
++
++  void
++  _Safe_local_iterator_base::
++  _M_detach()
++  {
++    if (_M_sequence)
++      {
++	_M_get_container()->_M_detach_local(this);
++	_M_reset();
++      }
++  }
++
++  void
++  _Safe_local_iterator_base::
++  _M_detach_single() throw ()
++  {
++    if (_M_sequence)
++      {
++	_M_get_container()->_M_detach_local_single(this);
++	_M_reset();
++      }
++  }
++
++  void
++  _Safe_unordered_container_base::
++  _M_detach_all()
++  {
++    __gnu_cxx::__scoped_lock sentry(_M_get_mutex());
++    detach_all(_M_iterators);
++    _M_iterators = 0;
++    
++    detach_all(_M_const_iterators);
++    _M_const_iterators = 0;
++
++    detach_all(_M_local_iterators);
++    _M_local_iterators = 0;
++
++    detach_all(_M_const_local_iterators);
++    _M_const_local_iterators = 0;
++  }
++
++  void
++  _Safe_unordered_container_base::
++  _M_swap(_Safe_unordered_container_base& __x) noexcept
++  {
++    // We need to lock both containers to swap
++    using namespace __gnu_cxx;
++    __mutex *__this_mutex = &_M_get_mutex();
++    __mutex *__x_mutex = &__x._M_get_mutex();
++    if (__this_mutex == __x_mutex)
++      {
++	__scoped_lock __lock(*__this_mutex);
++	swap_ucont(*this, __x);
++      }
++    else
++      {
++	__scoped_lock __l1(__this_mutex < __x_mutex
++			     ? *__this_mutex : *__x_mutex);
++	__scoped_lock __l2(__this_mutex < __x_mutex
++			     ? *__x_mutex : *__this_mutex);
++	swap_ucont(*this, __x);
++      }
++  }
++
++  void
++  _Safe_unordered_container_base::
++  _M_attach_local(_Safe_iterator_base* __it, bool __constant)
++  {
++    __gnu_cxx::__scoped_lock sentry(_M_get_mutex());
++    _M_attach_local_single(__it, __constant);
++  }
++
++  void
++  _Safe_unordered_container_base::
++  _M_attach_local_single(_Safe_iterator_base* __it, bool __constant) throw ()
++  {
++    _Safe_iterator_base*& __its =
++      __constant ? _M_const_local_iterators : _M_local_iterators;
++    __it->_M_next = __its;
++    if (__it->_M_next)
++      __it->_M_next->_M_prior = __it;
++    __its = __it;
++  }
++
++  void
++  _Safe_unordered_container_base::
++  _M_detach_local(_Safe_iterator_base* __it)
++  {
++    // Remove __it from this container's list
++    __gnu_cxx::__scoped_lock sentry(_M_get_mutex());
++    _M_detach_local_single(__it);
++  }
++
++  void
++  _Safe_unordered_container_base::
++  _M_detach_local_single(_Safe_iterator_base* __it) throw ()
++  {
++    // Remove __it from this container's list
++    __it->_M_unlink();
++    if (_M_const_local_iterators == __it)
++      _M_const_local_iterators = __it->_M_next;
++    if (_M_local_iterators == __it)
++      _M_local_iterators = __it->_M_next;
++  }
++
++} // namespace __gnu_debug
++
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx30__throw_concurrence_lock_errorEv");
++asm (".hidden _ZN9__gnu_cxx32__throw_concurrence_unlock_errorEv");
++asm (".hidden _ZNK9__gnu_cxx24__concurrence_lock_error4whatEv");
++asm (".hidden _ZNK9__gnu_cxx26__concurrence_unlock_error4whatEv");
++asm (".hidden _ZTIN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTIN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZN11__gnu_debug19_Safe_iterator_base8_M_resetEv");
++asm (".hidden _ZN11__gnu_debug30_Safe_unordered_container_base15_M_attach_localEPNS_19_Safe_iterator_baseEb");
++asm (".hidden _ZN11__gnu_debug30_Safe_unordered_container_base15_M_detach_localEPNS_19_Safe_iterator_baseE");
++asm (".hidden _ZN11__gnu_debug30_Safe_unordered_container_base22_M_attach_local_singleEPNS_19_Safe_iterator_baseEb");
++asm (".hidden _ZN11__gnu_debug30_Safe_unordered_container_base22_M_detach_local_singleEPNS_19_Safe_iterator_baseE");
++asm (".hidden _ZNK11__gnu_debug25_Safe_local_iterator_base16_M_get_containerEv");
++asm (".hidden _ZN11__gnu_debug25_Safe_local_iterator_base16_M_detach_singleEv");
+--- libstdc++-v3/src/nonshared11/thread44.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/thread44.cc	2019-05-13 10:20:36.306517068 +0200
+@@ -0,0 +1,27 @@
++// Copyright (C) 2008-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_44
++#include "../c++11/thread.cc"
++asm (".hidden _ZNSt15_Sp_counted_ptrIDnLN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv");
+--- libstdc++-v3/src/nonshared11/del_opa.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/del_opa.cc	2019-05-13 10:20:36.306517068 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2017-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/del_opa.cc"
+--- libstdc++-v3/src/nonshared11/cxx11-stdexcept.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/cxx11-stdexcept.cc	2019-05-13 10:20:36.306517068 +0200
+@@ -0,0 +1,25 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/cxx11-stdexcept.cc"
++asm (".hidden _ZNSt12__cow_stringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE");
++asm (".hidden _ZNSt12__cow_stringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE");
+--- libstdc++-v3/src/nonshared11/placeholders.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/placeholders.cc	2019-05-13 10:20:36.306517068 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/placeholders.cc"
+--- libstdc++-v3/src/nonshared11/future.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/future.cc	2019-05-13 10:20:36.306517068 +0200
+@@ -0,0 +1,34 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <future>
++#undef _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE
++#include "../c++11/future.cc"
++const std::error_category* _ZSt15future_category = &__future_category_instance();
++asm (".hidden _ZTSNSt13__future_base12_Result_baseE");
++asm (".hidden _ZNSt15_Sp_counted_ptrIDnLN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv");
++asm (".hidden _ZSt16__at_thread_exitPSt20__at_thread_exit_elt");
++asm (".hidden _ZNSt13__future_base13_State_baseV211_Make_ready6_S_runEPv");
++asm (".hidden _ZNSt12future_errorC1ESt10error_code");
++asm (".hidden _ZNSt12future_errorC2ESt10error_code");
+--- libstdc++-v3/src/nonshared11/cow-string-inst80.cc.jj	2019-05-14 13:33:19.534538731 +0200
++++ libstdc++-v3/src/nonshared11/cow-string-inst80.cc	2019-05-14 13:37:42.380149925 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_80
++#include "cow-string-inst48.cc"
+--- libstdc++-v3/src/nonshared11/bad_array_length.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/bad_array_length.cc	2019-05-13 10:20:36.306517068 +0200
+@@ -0,0 +1,23 @@
++// 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/bad_array_length.cc"
+--- libstdc++-v3/src/nonshared11/cow-string-inst44.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/cow-string-inst44.cc	2019-05-13 19:00:59.996592944 +0200
+@@ -0,0 +1,110 @@
++// Components for manipulating sequences of characters -*- C++ -*-
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++// Written by Jason Merrill based upon the specification by Takanori Adachi
++// in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers.
++
++// Instantiation configuration.
++#ifndef C
++#define _GLIBCXX_NONSHARED_CXX11_44
++#include "../c++11/cow-string-inst.cc"
++# define C char
++# define NARROW
++#else
++#define _GLIBCXX_USE_CXX11_ABI 0
++#include <string>
++#endif
++
++namespace std _GLIBCXX_VISIBILITY(default)   
++{
++
++  typedef basic_string<C> S;
++
++  template
++  S::const_iterator S::cbegin() const;
++
++  template
++  S::const_iterator S::cend() const;
++
++  template
++  S::const_reverse_iterator S::crbegin() const;
++
++  template
++  S::const_reverse_iterator S::crend() const;
++
++  template
++  S::basic_string(S&&);
++
++  template
++  S::basic_string(const S&, size_type, const allocator_type&);
++
++  template
++  S::basic_string(const S&, const allocator_type&);
++
++  template
++  S::basic_string(S&&, const allocator_type&);
++
++  template
++  S& S::operator=(S&&);
++
++  template
++  S& S::assign(S&&);
++
++  template
++  C *S::_S_construct_aux_2(size_type, C, const allocator_type&);
++
++  template
++  void S::shrink_to_fit();
++
++  template
++  C *S::_S_construct<S::iterator>(iterator, iterator, const allocator_type&, forward_iterator_tag);
++
++  template
++  C *S::_S_construct<C *>(C *, C *, const allocator_type&, forward_iterator_tag);
++
++  template
++  C *S::_S_construct<const C *>(const C *, const C *, const allocator_type&, forward_iterator_tag);
++
++  template
++  S::reference S::front();
++
++  template
++  S::const_reference S::front() const;
++
++  template
++  S::reference S::back();
++
++  template
++  S::const_reference S::back() const;
++
++  template
++  int S::_S_compare(size_type, size_type);
++
++  template
++  void S::pop_back();
++}
+--- libstdc++-v3/src/nonshared11/future48.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/future48.cc	2019-05-14 16:53:17.575176079 +0200
+@@ -0,0 +1,32 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_48
++#include "../c++11/future.cc"
++asm (".hidden _ZSt16__at_thread_exitPSt20__at_thread_exit_elt");
++asm (".hidden _ZNSt13__future_base13_State_baseV211_Make_ready6_S_runEPv");
++asm (".hidden _ZNSt12future_errorC1ESt10error_code");
++asm (".hidden _ZNSt12future_errorC2ESt10error_code");
++asm (".hidden _ZSt20__throw_future_errori");
++asm (".hidden _ZNSt15_Sp_counted_ptrIDnLN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv");
+--- libstdc++-v3/src/nonshared11/cxx11-ios_failure.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/cxx11-ios_failure.cc	2019-05-14 16:51:50.918624561 +0200
+@@ -0,0 +1,37 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/cxx11-ios_failure.cc"
++asm (".hidden _ZNKSt19__iosfail_type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv");
++asm (".hidden _ZNSt13__ios_failureD0Ev");
++asm (".hidden _ZNSt13__ios_failureD1Ev");
++asm (".hidden _ZNSt13__ios_failureD2Ev");
++asm (".hidden _ZNSt19__iosfail_type_infoD0Ev");
++asm (".hidden _ZNSt19__iosfail_type_infoD1Ev");
++asm (".hidden _ZNSt19__iosfail_type_infoD2Ev");
++asm (".hidden _ZTISt13__ios_failure");
++asm (".hidden _ZTISt19__iosfail_type_info");
++asm (".hidden _ZTSSt13__ios_failure");
++asm (".hidden _ZTSSt19__iosfail_type_info");
++asm (".hidden _ZTVSt13__ios_failure");
++asm (".hidden _ZTVSt19__iosfail_type_info");
++asm (".hidden _ZSt19__throw_ios_failurePKc");
+--- libstdc++-v3/src/nonshared11/new_opvant.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/new_opvant.cc	2019-05-13 10:20:36.306517068 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2017-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/new_opvant.cc"
+--- libstdc++-v3/src/nonshared11/limits44.cc.jj	2019-05-13 19:15:13.962491129 +0200
++++ libstdc++-v3/src/nonshared11/limits44.cc	2019-05-14 17:23:35.504802245 +0200
+@@ -0,0 +1,127 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <limits>
++
++namespace std _GLIBCXX_VISIBILITY(default)   
++{
++
++#define const _GLIBCXX_USE_CONSTEXPR
++
++  const int  __numeric_limits_base::max_digits10;
++  const int  numeric_limits<bool>::max_digits10;
++  const int  numeric_limits<char>::max_digits10;
++  const int  numeric_limits<signed char>::max_digits10;
++  const int  numeric_limits<unsigned char>::max_digits10;
++  const int  numeric_limits<wchar_t>::max_digits10;
++  const int  numeric_limits<short>::max_digits10;
++  const int  numeric_limits<unsigned short>::max_digits10;
++  const int  numeric_limits<int>::max_digits10;
++  const int  numeric_limits<unsigned int>::max_digits10;
++  const int  numeric_limits<long>::max_digits10;
++  const int  numeric_limits<unsigned long>::max_digits10;
++  const int  numeric_limits<long long>::max_digits10;
++  const int  numeric_limits<unsigned long long>::max_digits10;
++  const int  numeric_limits<float>::max_digits10;
++  const int  numeric_limits<double>::max_digits10;
++  const int  numeric_limits<long double>::max_digits10;
++  const int  numeric_limits<char16_t>::max_digits10;
++  const int  numeric_limits<char32_t>::max_digits10;
++
++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_INT128)
++  const bool numeric_limits<__int128>::is_specialized;
++  const int  numeric_limits<__int128>::digits;
++  const int  numeric_limits<__int128>::digits10;
++  const int  numeric_limits<__int128>::max_digits10;
++  const bool numeric_limits<__int128>::is_signed;
++  const bool numeric_limits<__int128>::is_integer;
++  const bool numeric_limits<__int128>::is_exact;
++  const int  numeric_limits<__int128>::radix;
++  const int  numeric_limits<__int128>::min_exponent;
++  const int  numeric_limits<__int128>::min_exponent10;
++  const int  numeric_limits<__int128>::max_exponent;
++  const int  numeric_limits<__int128>::max_exponent10;
++  const bool numeric_limits<__int128>::has_infinity;
++  const bool numeric_limits<__int128>::has_quiet_NaN;
++  const bool numeric_limits<__int128>::has_signaling_NaN;
++  const float_denorm_style numeric_limits<__int128>::has_denorm;
++  const bool numeric_limits<__int128>::has_denorm_loss;
++  const bool numeric_limits<__int128>::is_iec559;
++  const bool numeric_limits<__int128>::is_bounded;
++  const bool numeric_limits<__int128>::is_modulo;
++  const bool numeric_limits<__int128>::traps;
++  const bool numeric_limits<__int128>::tinyness_before;
++  const float_round_style numeric_limits<__int128>::round_style;
++
++  const bool numeric_limits<unsigned __int128>::is_specialized;
++  const int  numeric_limits<unsigned __int128>::digits;
++  const int  numeric_limits<unsigned __int128>::digits10;
++  const int  numeric_limits<unsigned __int128>::max_digits10;
++  const bool numeric_limits<unsigned __int128>::is_signed;
++  const bool numeric_limits<unsigned __int128>::is_integer;
++  const bool numeric_limits<unsigned __int128>::is_exact;
++  const int  numeric_limits<unsigned __int128>::radix;
++  const int  numeric_limits<unsigned __int128>::min_exponent;
++  const int  numeric_limits<unsigned __int128>::min_exponent10;
++  const int  numeric_limits<unsigned __int128>::max_exponent;
++  const int  numeric_limits<unsigned __int128>::max_exponent10;
++  const bool numeric_limits<unsigned __int128>::has_infinity;
++  const bool numeric_limits<unsigned __int128>::has_quiet_NaN;
++  const bool numeric_limits<unsigned __int128>::has_signaling_NaN;
++  const float_denorm_style numeric_limits<unsigned __int128>::has_denorm;
++  const bool numeric_limits<unsigned __int128>::has_denorm_loss;
++  const bool numeric_limits<unsigned __int128>::is_iec559;
++  const bool numeric_limits<unsigned __int128>::is_bounded;
++  const bool numeric_limits<unsigned __int128>::is_modulo;
++  const bool numeric_limits<unsigned __int128>::traps;
++  const bool numeric_limits<unsigned __int128>::tinyness_before;
++  const float_round_style numeric_limits<unsigned __int128>::round_style;
++#endif
++
++#ifdef _GLIBCXX_USE_CHAR8_T
++  // char8_t
++  const bool numeric_limits<char8_t>::is_specialized;
++  const int  numeric_limits<char8_t>::digits;
++  const int  numeric_limits<char8_t>::digits10;
++//  const int  numeric_limits<char8_t>::max_digits10;
++  const bool numeric_limits<char8_t>::is_signed;
++  const bool numeric_limits<char8_t>::is_integer;
++  const bool numeric_limits<char8_t>::is_exact;
++  const int  numeric_limits<char8_t>::radix;
++  const int  numeric_limits<char8_t>::min_exponent;
++  const int  numeric_limits<char8_t>::min_exponent10;
++  const int  numeric_limits<char8_t>::max_exponent;
++  const int  numeric_limits<char8_t>::max_exponent10;
++  const bool numeric_limits<char8_t>::has_infinity;
++  const bool numeric_limits<char8_t>::has_quiet_NaN;
++  const bool numeric_limits<char8_t>::has_signaling_NaN;
++  const float_denorm_style numeric_limits<char8_t>::has_denorm;
++  const bool numeric_limits<char8_t>::has_denorm_loss;
++  const bool numeric_limits<char8_t>::is_iec559;
++  const bool numeric_limits<char8_t>::is_bounded;
++  const bool numeric_limits<char8_t>::is_modulo;
++  const bool numeric_limits<char8_t>::traps;
++  const bool numeric_limits<char8_t>::tinyness_before;
++  const float_round_style numeric_limits<char8_t>::round_style;
++#endif // _GLIBCXX_USE_CHAR8_T
++
++}
+--- libstdc++-v3/src/nonshared11/shared_ptr48.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/shared_ptr48.cc	2019-05-14 17:29:25.088963769 +0200
+@@ -0,0 +1,41 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_48
++#include "../c++11/shared_ptr.cc"
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx30__throw_concurrence_lock_errorEv");
++asm (".hidden _ZN9__gnu_cxx32__throw_concurrence_unlock_errorEv");
++asm (".hidden _ZNK9__gnu_cxx24__concurrence_lock_error4whatEv");
++asm (".hidden _ZNK9__gnu_cxx26__concurrence_unlock_error4whatEv");
++asm (".hidden _ZTIN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTIN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTSSt19_Sp_make_shared_tag");
+--- libstdc++-v3/src/nonshared11/bad_array_new.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/bad_array_new.cc	2019-05-13 10:20:36.306517068 +0200
+@@ -0,0 +1,23 @@
++// 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/bad_array_new.cc"
+--- libstdc++-v3/src/nonshared11/system_error48.cc.jj	2019-05-13 10:20:36.306517068 +0200
++++ libstdc++-v3/src/nonshared11/system_error48.cc	2019-05-13 10:20:36.306517068 +0200
+@@ -0,0 +1,28 @@
++// <system_error> implementation file
++
++// Copyright (C) 2007-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11
++#include "../c++11/system_error.cc"
++asm (".hidden _ZTSNSt3_V214error_categoryE");
++asm (".hidden _ZSt20__throw_system_errori");
+--- libstdc++-v3/src/nonshared11/cow-stdexcept.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/cow-stdexcept.cc	2019-05-13 10:20:36.307517051 +0200
+@@ -0,0 +1,51 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/cow-stdexcept.cc"
++asm (".hidden _ZNSt12__cow_stringC1EOS_");
++asm (".hidden _ZNSt12__cow_stringC1ERKS_");
++asm (".hidden _ZNSt12__cow_stringC1ERKSs");
++asm (".hidden _ZNSt12__cow_stringC1Ev");
++asm (".hidden _ZNSt12__cow_stringC2EOS_");
++asm (".hidden _ZNSt12__cow_stringC2ERKS_");
++asm (".hidden _ZNSt12__cow_stringC2ERKSs");
++asm (".hidden _ZNSt12__cow_stringC2Ev");
++asm (".hidden _ZNSt12__cow_stringD1Ev");
++asm (".hidden _ZNSt12__cow_stringD2Ev");
++asm (".hidden _ZNSt12__cow_stringaSEOS_");
++asm (".hidden _ZNSt12__cow_stringaSERKS_");
++asm (".hidden _ZNSt12__sso_stringC1ERKSs");
++asm (".hidden _ZNSt12__sso_stringC2ERKSs");
++#if defined(__i386__) || (defined(__powerpc__) && !defined(__powerpc64__))
++asm (".hidden _ZNSt12__cow_stringC1EPKcj");
++asm (".hidden _ZNSt12__cow_stringC2EPKcj");
++#else
++asm (".hidden _ZNSt12__cow_stringC1EPKcm");
++asm (".hidden _ZNSt12__cow_stringC2EPKcm");
++#endif
++asm (".hidden _Z20_txnal_cow_string_D1Pv");
++asm (".hidden _Z23_txnal_cow_string_c_strPKv");
++asm (".hidden _Z23_txnal_sso_string_c_strPKv");
++asm (".hidden _Z26_txnal_logic_error_get_msgPv");
++asm (".hidden _Z27_txnal_cow_string_D1_commitPv");
++asm (".hidden _Z28_txnal_runtime_error_get_msgPv");
++asm (".hidden _Z35_txnal_cow_string_C1_for_exceptionsPvPKcS_");
+--- libstdc++-v3/src/nonshared11/ext11-inst.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/ext11-inst.cc	2019-05-13 10:20:36.307517051 +0200
+@@ -0,0 +1,38 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/stdio_filebuf.h>
++#include <ext/stdio_sync_filebuf.h>
++
++namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  template stdio_sync_filebuf<char>::stdio_sync_filebuf(stdio_sync_filebuf&&) noexcept;
++  template stdio_sync_filebuf<char>& stdio_sync_filebuf<char>::operator=(stdio_sync_filebuf&&) noexcept;
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template stdio_sync_filebuf<wchar_t>::stdio_sync_filebuf(stdio_sync_filebuf&&) noexcept;
++  template stdio_sync_filebuf<wchar_t>& stdio_sync_filebuf<wchar_t>::operator=(stdio_sync_filebuf&&) noexcept;
++#endif
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/compatibility-c++0x.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/compatibility-c++0x.cc	2019-05-13 10:20:36.307517051 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_44
++#include "../c++11/compatibility-c++0x.cc"
+--- libstdc++-v3/src/nonshared11/thread48.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/thread48.cc	2019-05-13 10:20:36.307517051 +0200
+@@ -0,0 +1,28 @@
++// Copyright (C) 2008-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_44
++#define _GLIBCXX_NONSHARED_CXX11_48
++#include "../c++11/thread.cc"
++asm (".hidden _ZNSt15_Sp_counted_ptrIDnLN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv");
+--- libstdc++-v3/src/nonshared11/shared_ptr44.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/shared_ptr44.cc	2019-05-14 17:29:32.324842951 +0200
+@@ -0,0 +1,41 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/shared_ptr.cc"
++asm (".hidden _ZTSSt12bad_weak_ptr");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx30__throw_concurrence_lock_errorEv");
++asm (".hidden _ZN9__gnu_cxx32__throw_concurrence_unlock_errorEv");
++asm (".hidden _ZNK9__gnu_cxx24__concurrence_lock_error4whatEv");
++asm (".hidden _ZNK9__gnu_cxx26__concurrence_unlock_error4whatEv");
++asm (".hidden _ZTIN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTIN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTSSt19_Sp_make_shared_tag");
+--- libstdc++-v3/src/nonshared11/cow-wstring-inst48.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/cow-wstring-inst48.cc	2019-05-13 19:01:54.950686999 +0200
+@@ -0,0 +1,35 @@
++// wide string support -*- C++ -*-
++
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++#define _GLIBCXX_USE_CXX11_ABI 0
++#include <bits/c++config.h>
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++#define C wchar_t
++#include "cow-string-inst48.cc"
++#endif
+--- libstdc++-v3/src/nonshared11/ctype.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/ctype.cc	2019-05-13 10:20:36.307517051 +0200
+@@ -0,0 +1,35 @@
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <locale>
++#include <cstdlib>
++#include <cstring>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  // Definitions for static const data members of ctype_base.
++  const ctype_base::mask ctype_base::blank;
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/system_error44.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/system_error44.cc	2019-05-13 10:20:36.307517051 +0200
+@@ -0,0 +1,28 @@
++// <system_error> implementation file
++
++// Copyright (C) 2007-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11
++#include "../c++11/system_error.cc"
++asm (".hidden _ZTSNSt3_V214error_categoryE");
++asm (".hidden _ZSt20__throw_system_errori");
+--- libstdc++-v3/src/nonshared11/cow-wstring-inst80.cc.jj	2019-05-14 13:34:26.990414746 +0200
++++ libstdc++-v3/src/nonshared11/cow-wstring-inst80.cc	2019-05-14 13:34:34.263293556 +0200
+@@ -0,0 +1,35 @@
++// wide string support -*- C++ -*-
++
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++#define _GLIBCXX_USE_CXX11_ABI 0
++#include <bits/c++config.h>
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++#define C wchar_t
++#include "cow-string-inst80.cc"
++#endif
+--- libstdc++-v3/src/nonshared11/eh_throw.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/eh_throw.cc	2019-05-13 10:20:36.307517051 +0200
+@@ -0,0 +1,78 @@
++// -*- C++ -*- Exception handling routines for throwing.
++// Copyright (C) 2001-2019 Free Software Foundation, Inc.
++//
++// This file is part of GCC.
++//
++// GCC 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.
++//
++// GCC 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.
++//
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <bits/c++config.h>
++#include "unwind-cxx.h"
++#include "eh_atomics.h"
++
++using namespace __cxxabiv1;
++
++
++static void
++__gxx_exception_cleanup (_Unwind_Reason_Code code, _Unwind_Exception *exc)
++{
++  // This cleanup is set only for primaries.
++  __cxa_refcounted_exception *header
++    = __get_refcounted_exception_header_from_ue (exc);
++
++  // We only want to be called through _Unwind_DeleteException.
++  // _Unwind_DeleteException in the HP-UX IA64 libunwind library
++  // returns _URC_NO_REASON and not _URC_FOREIGN_EXCEPTION_CAUGHT
++  // like the GCC _Unwind_DeleteException function does.
++  if (code != _URC_FOREIGN_EXCEPTION_CAUGHT && code != _URC_NO_REASON)
++    {
++      __try 
++	{
++	  header->exc.terminateHandler ();
++	  __builtin_abort ();
++	} 
++      __catch(...) 
++	{ __builtin_abort (); }
++    }
++
++  if (__gnu_cxx::__eh_atomic_dec (&header->referenceCount))
++    {
++      if (header->exc.exceptionDestructor)
++	header->exc.exceptionDestructor (header + 1);
++
++      __cxa_free_exception (header + 1);
++    }
++}
++
++extern "C" __cxa_refcounted_exception*
++__cxxabiv1::__cxa_init_primary_exception(void *obj, std::type_info *tinfo,
++                                         void (_GLIBCXX_CDTOR_CALLABI *dest) (void *))
++{
++  __cxa_refcounted_exception *header
++    = __get_refcounted_exception_header_from_obj (obj);
++  header->referenceCount = 0;
++  header->exc.exceptionType = tinfo;
++  header->exc.exceptionDestructor = dest;
++  header->exc.unexpectedHandler = std::get_unexpected ();
++  header->exc.terminateHandler = std::get_terminate ();
++  __GXX_INIT_PRIMARY_EXCEPTION_CLASS(header->exc.unwindHeader.exception_class);
++  header->exc.unwindHeader.exception_cleanup = __gxx_exception_cleanup;
++
++  return header;
++}
+--- libstdc++-v3/src/nonshared11/wlocale-inst80.cc.jj	2019-05-14 16:25:06.992433115 +0200
++++ libstdc++-v3/src/nonshared11/wlocale-inst80.cc	2019-05-14 16:25:06.992433115 +0200
+@@ -0,0 +1,31 @@
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++// Instantiate locales using COW std::wstring ABI
++#define _GLIBCXX_USE_CXX11_ABI 0
++#include <bits/c++config.h>
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++#define C wchar_t
++#define _GLIBCXX_NONSHARED_CXX11_80
++#include "locale-inst.cc"
++#endif
+--- libstdc++-v3/src/nonshared11/fstream-inst.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/fstream-inst.cc	2019-05-13 10:20:36.307517051 +0200
+@@ -0,0 +1,79 @@
++// Explicit instantiation file.
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882:
++//
++
++#define _GLIBCXX_USE_CXX11_ABI 1
++#include <fstream>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  template basic_filebuf<char, char_traits<char>>::basic_filebuf(basic_filebuf&&);
++  template basic_filebuf<char, char_traits<char>>& basic_filebuf<char, char_traits<char>>::operator=(basic_filebuf&&);
++  template void basic_filebuf<char, char_traits<char>>::swap(basic_filebuf&);
++  template basic_filebuf<char, char_traits<char>>::__filebuf_type* basic_filebuf<char, char_traits<char>>::open(const std::string &, ios_base::openmode);
++  template basic_ifstream<char>::basic_ifstream(basic_ifstream&&);
++  template basic_ifstream<char>& basic_ifstream<char>::operator=(basic_ifstream&&);
++  template void basic_ifstream<char>::swap(basic_ifstream&);
++  template void basic_ifstream<char>::open(const std::string &, ios_base::openmode);
++  template basic_ifstream<char>::basic_ifstream(const std::string &, ios_base::openmode);
++  template basic_ofstream<char>::basic_ofstream(basic_ofstream&&);
++  template basic_ofstream<char>& basic_ofstream<char>::operator=(basic_ofstream&&);
++  template void basic_ofstream<char>::swap(basic_ofstream&);
++  template void basic_ofstream<char>::open(const std::string &, ios_base::openmode);
++  template basic_ofstream<char>::basic_ofstream(const std::string &, ios_base::openmode);
++  template basic_fstream<char>::basic_fstream(basic_fstream&&);
++  template basic_fstream<char>& basic_fstream<char>::operator=(basic_fstream&&);
++  template void basic_fstream<char>::swap(basic_fstream&);
++  template void basic_fstream<char>::open(const std::string &, ios_base::openmode);
++  template basic_fstream<char>::basic_fstream(const std::string &, ios_base::openmode);
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template basic_filebuf<wchar_t, char_traits<wchar_t>>::basic_filebuf(basic_filebuf&&);
++  template basic_filebuf<wchar_t, char_traits<wchar_t>>& basic_filebuf<wchar_t, char_traits<wchar_t>>::operator=(basic_filebuf&&);
++  template void basic_filebuf<wchar_t, char_traits<wchar_t>>::swap(basic_filebuf&);
++  template basic_filebuf<wchar_t, char_traits<wchar_t>>::__filebuf_type* basic_filebuf<wchar_t, char_traits<wchar_t>>::open(const std::string &, ios_base::openmode);
++  template basic_ifstream<wchar_t>::basic_ifstream(basic_ifstream&&);
++  template basic_ifstream<wchar_t>& basic_ifstream<wchar_t>::operator=(basic_ifstream&&);
++  template void basic_ifstream<wchar_t>::swap(basic_ifstream&);
++  template void basic_ifstream<wchar_t>::open(const std::string &, ios_base::openmode);
++  template basic_ifstream<wchar_t>::basic_ifstream(const std::string &, ios_base::openmode);
++  template basic_ofstream<wchar_t>::basic_ofstream(basic_ofstream&&);
++  template basic_ofstream<wchar_t>& basic_ofstream<wchar_t>::operator=(basic_ofstream&&);
++  template void basic_ofstream<wchar_t>::swap(basic_ofstream&);
++  template void basic_ofstream<wchar_t>::open(const std::string &, ios_base::openmode);
++  template basic_ofstream<wchar_t>::basic_ofstream(const std::string &, ios_base::openmode);
++  template basic_fstream<wchar_t>::basic_fstream(basic_fstream&&);
++  template basic_fstream<wchar_t>& basic_fstream<wchar_t>::operator=(basic_fstream&&);
++  template void basic_fstream<wchar_t>::swap(basic_fstream&);
++  template void basic_fstream<wchar_t>::open(const std::string &, ios_base::openmode);
++  template basic_fstream<wchar_t>::basic_fstream(const std::string &, ios_base::openmode);
++#endif
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/regex48.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/regex48.cc	2019-05-13 10:20:36.307517051 +0200
+@@ -0,0 +1,31 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/regex.cc"
++
++asm (".hidden _ZNSt11regex_errorD0Ev");
++asm (".hidden _ZNSt11regex_errorD1Ev");
++asm (".hidden _ZNSt11regex_errorD2Ev");
++asm (".hidden _ZTSSt11regex_error");
++asm (".hidden _ZTISt11regex_error");
++asm (".hidden _ZTVSt11regex_error");
++asm (".hidden _ZSt19__throw_regex_errorNSt15regex_constants10error_typeE");
+--- libstdc++-v3/src/nonshared11/cxx11-shim_facets.cc.jj	2019-05-13 10:20:36.307517051 +0200
++++ libstdc++-v3/src/nonshared11/cxx11-shim_facets.cc	2019-05-13 10:20:36.307517051 +0200
+@@ -0,0 +1,181 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/cxx11-shim_facets.cc"
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_112collate_shimIcE10do_compareEPKcS4_S4_S4_");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_112collate_shimIcE12do_transformEPKcS4_");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_112collate_shimIwE10do_compareEPKwS4_S4_S4_");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_112collate_shimIwE12do_transformEPKwS4_");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIcE6do_getEiiiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIcE7do_openERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIcE8do_closeEi");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIwE6do_getEiiiRKNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEE");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIwE7do_openERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIwE8do_closeEi");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE11do_get_dateESt19istreambuf_iteratorIcSt11char_traitsIcEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE11do_get_timeESt19istreambuf_iteratorIcSt11char_traitsIcEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE11do_get_yearESt19istreambuf_iteratorIcSt11char_traitsIcEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE13do_date_orderEv");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE14do_get_weekdayESt19istreambuf_iteratorIcSt11char_traitsIcEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE16do_get_monthnameESt19istreambuf_iteratorIcSt11char_traitsIcEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE11do_get_dateESt19istreambuf_iteratorIwSt11char_traitsIwEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE11do_get_timeESt19istreambuf_iteratorIwSt11char_traitsIwEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE11do_get_yearESt19istreambuf_iteratorIwSt11char_traitsIwEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE13do_date_orderEv");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE14do_get_weekdayESt19istreambuf_iteratorIwSt11char_traitsIwEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE16do_get_monthnameESt19istreambuf_iteratorIwSt11char_traitsIwEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIcE6do_getESt19istreambuf_iteratorIcSt11char_traitsIcEES6_bRSt8ios_baseRSt12_Ios_IostateRNSt7__cxx1112basic_stringIcS5_SaIcEEE");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIwE6do_getESt19istreambuf_iteratorIwSt11char_traitsIwEES6_bRSt8ios_baseRSt12_Ios_IostateRNSt7__cxx1112basic_stringIwS5_SaIwEEE");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIcE6do_putESt19ostreambuf_iteratorIcSt11char_traitsIcEEbRSt8ios_basecRKNSt7__cxx1112basic_stringIcS5_SaIcEEE");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIwE6do_putESt19ostreambuf_iteratorIwSt11char_traitsIwEEbRSt8ios_basewRKNSt7__cxx1112basic_stringIwS5_SaIwEEE");
++asm (".hidden _ZNKSt6locale5facet11_M_sso_shimEPKNS_2idE");
++asm (".hidden _ZNKSt6locale5facet19_M_remove_referenceEv");
++asm (".hidden _ZNSt13__facet_shims10__time_getIcEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb1EEPKNSt6locale5facetES5_S5_RSt8ios_baseRSt12_Ios_IostateP2tmc");
++asm (".hidden _ZNSt13__facet_shims10__time_getIwEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb1EEPKNSt6locale5facetES5_S5_RSt8ios_baseRSt12_Ios_IostateP2tmc");
++#if !defined (__powerpc__) && !defined (__s390__) && !defined (__s390x__)
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIcE6do_getESt19istreambuf_iteratorIcSt11char_traitsIcEES6_bRSt8ios_baseRSt12_Ios_IostateRe");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIwE6do_getESt19istreambuf_iteratorIwSt11char_traitsIwEES6_bRSt8ios_baseRSt12_Ios_IostateRe");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIcE6do_putESt19ostreambuf_iteratorIcSt11char_traitsIcEEbRSt8ios_basece");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIwE6do_putESt19ostreambuf_iteratorIwSt11char_traitsIwEEbRSt8ios_basewe");
++asm (".hidden _ZNSt13__facet_shims11__money_getIcEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb1EEPKNSt6locale5facetES5_S5_bRSt8ios_baseRSt12_Ios_IostatePePNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_getIwEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb1EEPKNSt6locale5facetES5_S5_bRSt8ios_baseRSt12_Ios_IostatePePNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_putIcEESt19ostreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb1EEPKNSt6locale5facetES5_bRSt8ios_baseS2_ePKNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_putIwEESt19ostreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb1EEPKNSt6locale5facetES5_bRSt8ios_baseS2_ePKNS_12__any_stringE");
++#else
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIcE6do_getESt19istreambuf_iteratorIcSt11char_traitsIcEES6_bRSt8ios_baseRSt12_Ios_IostateRg");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIwE6do_getESt19istreambuf_iteratorIwSt11char_traitsIwEES6_bRSt8ios_baseRSt12_Ios_IostateRg");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIcE6do_putESt19ostreambuf_iteratorIcSt11char_traitsIcEEbRSt8ios_basecg");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIwE6do_putESt19ostreambuf_iteratorIwSt11char_traitsIwEEbRSt8ios_basewg");
++asm (".hidden _ZNSt13__facet_shims11__money_getIcEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb1EEPKNSt6locale5facetES5_S5_bRSt8ios_baseRSt12_Ios_IostatePgPNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_getIwEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb1EEPKNSt6locale5facetES5_S5_bRSt8ios_baseRSt12_Ios_IostatePgPNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_putIcEESt19ostreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb1EEPKNSt6locale5facetES5_bRSt8ios_baseS2_gPKNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_putIwEESt19ostreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb1EEPKNSt6locale5facetES5_bRSt8ios_baseS2_gPKNS_12__any_stringE");
++#endif
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb0EED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb0EED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb0EED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb1EED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb1EED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb1EED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb0EED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb0EED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb0EED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb1EED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb1EED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb1EED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_116__destroy_stringIcEEvPv");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_116__destroy_stringIwEEvPv");
++asm (".hidden _ZNSt13__facet_shims16__messages_closeIcEEvSt17integral_constantIbLb1EEPKNSt6locale5facetEi");
++asm (".hidden _ZNSt13__facet_shims16__messages_closeIwEEvSt17integral_constantIbLb1EEPKNSt6locale5facetEi");
++asm (".hidden _ZNSt13__facet_shims17__collate_compareIcEEiSt17integral_constantIbLb1EEPKNSt6locale5facetEPKT_S9_S9_S9_");
++asm (".hidden _ZNSt13__facet_shims17__collate_compareIwEEiSt17integral_constantIbLb1EEPKNSt6locale5facetEPKT_S9_S9_S9_");
++asm (".hidden _ZNSt13__facet_shims19__collate_transformIcEEvSt17integral_constantIbLb1EEPKNSt6locale5facetERNS_12__any_stringEPKT_SB_");
++asm (".hidden _ZNSt13__facet_shims19__collate_transformIwEEvSt17integral_constantIbLb1EEPKNSt6locale5facetERNS_12__any_stringEPKT_SB_");
++asm (".hidden _ZNSt13__facet_shims20__time_get_dateorderIcEENSt9time_base9dateorderESt17integral_constantIbLb1EEPKNSt6locale5facetE");
++asm (".hidden _ZNSt13__facet_shims20__time_get_dateorderIwEENSt9time_base9dateorderESt17integral_constantIbLb1EEPKNSt6locale5facetE");
++asm (".hidden _ZNSt13__facet_shims21__numpunct_fill_cacheIcEEvSt17integral_constantIbLb1EEPKNSt6locale5facetEPSt16__numpunct_cacheIT_E");
++asm (".hidden _ZNSt13__facet_shims21__numpunct_fill_cacheIwEEvSt17integral_constantIbLb1EEPKNSt6locale5facetEPSt16__numpunct_cacheIT_E");
++asm (".hidden _ZNSt13__facet_shims23__moneypunct_fill_cacheIcLb0EEEvSt17integral_constantIbLb1EEPKNSt6locale5facetEPSt18__moneypunct_cacheIT_XT0_EE");
++asm (".hidden _ZNSt13__facet_shims23__moneypunct_fill_cacheIcLb1EEEvSt17integral_constantIbLb1EEPKNSt6locale5facetEPSt18__moneypunct_cacheIT_XT0_EE");
++asm (".hidden _ZNSt13__facet_shims23__moneypunct_fill_cacheIwLb0EEEvSt17integral_constantIbLb1EEPKNSt6locale5facetEPSt18__moneypunct_cacheIT_XT0_EE");
++asm (".hidden _ZNSt13__facet_shims23__moneypunct_fill_cacheIwLb1EEEvSt17integral_constantIbLb1EEPKNSt6locale5facetEPSt18__moneypunct_cacheIT_XT0_EE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_112collate_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_112collate_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113messages_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113messages_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113numpunct_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113numpunct_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113time_get_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113time_get_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_114money_get_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_114money_get_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_114money_put_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_114money_put_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb0EEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb1EEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb0EEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb1EEE");
++asm (".hidden _ZTINSt6locale5facet6__shimE");
++asm (".hidden _ZTSNSt6locale5facet6__shimE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_112collate_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_112collate_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113messages_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113messages_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113time_get_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113time_get_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_114money_get_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_114money_get_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_114money_put_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_114money_put_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb0EEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb1EEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb0EEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb1EEE");
++#if defined(__i386__) || (defined(__powerpc__) && !defined(__powerpc64__))
++asm (".hidden _ZNSt13__facet_shims14__messages_getIcEEvSt17integral_constantIbLb1EEPKNSt6locale5facetERNS_12__any_stringEiiiPKT_j");
++asm (".hidden _ZNSt13__facet_shims14__messages_getIwEEvSt17integral_constantIbLb1EEPKNSt6locale5facetERNS_12__any_stringEiiiPKT_j");
++asm (".hidden _ZNSt13__facet_shims15__messages_openIcEEiSt17integral_constantIbLb1EEPKNSt6locale5facetEPKcjRKS3_");
++asm (".hidden _ZNSt13__facet_shims15__messages_openIwEEiSt17integral_constantIbLb1EEPKNSt6locale5facetEPKcjRKS3_");
++#else
++asm (".hidden _ZNSt13__facet_shims14__messages_getIcEEvSt17integral_constantIbLb1EEPKNSt6locale5facetERNS_12__any_stringEiiiPKT_m");
++asm (".hidden _ZNSt13__facet_shims14__messages_getIwEEvSt17integral_constantIbLb1EEPKNSt6locale5facetERNS_12__any_stringEiiiPKT_m");
++asm (".hidden _ZNSt13__facet_shims15__messages_openIcEEiSt17integral_constantIbLb1EEPKNSt6locale5facetEPKcmRKS3_");
++asm (".hidden _ZNSt13__facet_shims15__messages_openIwEEiSt17integral_constantIbLb1EEPKNSt6locale5facetEPKcmRKS3_");
++#endif
+--- libstdc++-v3/src/nonshared11/eh_aux_runtime.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/eh_aux_runtime.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,38 @@
++// -*- C++ -*- Common throw conditions.
++// Copyright (C) 1994-2019 Free Software Foundation, Inc.
++//
++// This file is part of GCC.
++//
++// GCC 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.
++//
++// GCC 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.
++//
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++//
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "typeinfo"
++#include "exception"
++#include "new"
++#include <cstdlib>
++#include "unwind-cxx.h"
++#include <bits/exception_defines.h>
++
++extern "C" void
++__cxxabiv1::__cxa_throw_bad_array_new_length ()
++{ _GLIBCXX_THROW_OR_ABORT(std::bad_array_new_length()); }
++
++//extern "C" void
++//__cxxabiv1::__cxa_throw_bad_array_length ()
++//{ _GLIBCXX_THROW_OR_ABORT(std::bad_array_length()); }
+--- libstdc++-v3/src/nonshared11/compatibility-atomic-c++0x.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/compatibility-atomic-c++0x.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,42 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <atomic>
++
++extern "C"
++{
++  extern bool _ZNVSt9__atomic011atomic_flag5clearESt12memory_order (std::memory_order);
++
++  bool
++  _ZNSt9__atomic011atomic_flag5clearESt12memory_order (std::memory_order m)
++  {
++    return _ZNVSt9__atomic011atomic_flag5clearESt12memory_order (m);
++  }
++
++  extern void _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order (std::memory_order);
++
++  void
++  _ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order (std::memory_order m)
++  {
++    _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order (m);
++  }
++}
+--- libstdc++-v3/src/nonshared11/hashtable_c++0x.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/hashtable_c++0x.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,40 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <initializer_list>
++#include <tuple>
++#include <ext/aligned_buffer.h>
++#include <ext/alloc_traits.h>
++#include <bits/hashtable_policy.h>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++namespace __detail
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++  extern const unsigned long __prime_list[256 + (sizeof (long) == 8 ? 48 : 0) + 1];
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace __detail
++} // namespace std
++
++#define HASHTABLE_AUX_CC 1
++#include "../c++11/hashtable_c++0x.cc"
+--- libstdc++-v3/src/nonshared11/locale-inst80.cc.jj	2019-05-14 16:25:06.992433115 +0200
++++ libstdc++-v3/src/nonshared11/locale-inst80.cc	2019-05-14 16:25:06.992433115 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_80
++#include "locale-inst.cc"
+--- libstdc++-v3/src/nonshared11/chrono.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/chrono.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/chrono.cc"
+--- libstdc++-v3/src/nonshared11/del_opvnt.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/del_opvnt.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2013-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/del_opvnt.cc"
+--- libstdc++-v3/src/nonshared11/functexcept48.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/functexcept48.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,66 @@
++// Copyright (C) 2001-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <bits/functexcept.h>
++#include <cstdlib>
++#include <exception>
++#include <stdexcept>
++#include <new>
++#include <typeinfo>
++#include <ios>
++#include <stdarg.h>
++
++#ifdef _GLIBCXX_USE_NLS
++# include <libintl.h>
++# define _(msgid)   gettext (msgid)
++#else
++# define _(msgid)   (msgid)
++#endif
++
++namespace __gnu_cxx
++{
++  int __snprintf_lite(char *__buf, size_t __bufsize, const char *__fmt,
++		      va_list __ap);
++}
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  void
++  __throw_out_of_range_fmt(const char* __fmt, ...)
++  {
++    const size_t __len = __builtin_strlen(__fmt);
++    // We expect at most 2 numbers, and 1 short string. The additional
++    // 512 bytes should provide more than enough space for expansion.
++    const size_t __alloca_size = __len + 512;
++    char *const __s = static_cast<char*>(__builtin_alloca(__alloca_size));
++    va_list __ap;
++
++    va_start(__ap, __fmt);
++    __gnu_cxx::__snprintf_lite(__s, __alloca_size, __fmt, __ap);
++    _GLIBCXX_THROW_OR_ABORT(out_of_range(_(__s)));
++    va_end(__ap);  // Not reached.
++  }
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/new_opva.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/new_opva.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2017-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/new_opva.cc"
+--- libstdc++-v3/src/nonshared11/wlocale-inst.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/wlocale-inst.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,36 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 22.1  Locales
++//
++
++// Instantiate locales using COW std::wstring ABI
++#define _GLIBCXX_USE_CXX11_ABI 0
++#include <bits/c++config.h>
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++#define C wchar_t
++#include "locale-inst.cc"
++#endif
+--- libstdc++-v3/src/nonshared11/wstring-inst.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/wstring-inst.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,31 @@
++// wide string support -*- C++ -*-
++
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++#include "../c++11/wstring-inst.cc"
++asm (".hidden _ZN9__gnu_cxxeqIPKwNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_");
++asm (".hidden _ZN9__gnu_cxxeqIPwNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEEbRKNS_17__normal_iteratorIT_T0_EESD_");
+--- libstdc++-v3/src/nonshared11/istream-inst.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/istream-inst.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,46 @@
++// Explicit instantiation file.
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882:
++//
++
++#include <istream>
++#include <iomanip>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  template basic_istream<char>::basic_istream(basic_istream&&);
++  template basic_istream<char>& basic_istream<char>::operator=(basic_istream&&);
++  template void basic_istream<char>::swap(basic_istream&);
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template basic_istream<wchar_t>::basic_istream(basic_istream&&);
++  template basic_istream<wchar_t>& basic_istream<wchar_t>::operator=(basic_istream&&);
++  template void basic_istream<wchar_t>::swap(basic_istream&);
++#endif
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/new_opa.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/new_opa.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2017-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/new_opa.cc"
+--- libstdc++-v3/src/nonshared11/futex.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/futex.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/futex.cc"
+--- libstdc++-v3/src/nonshared11/del_ops.cc.jj	2019-05-13 10:20:36.308517035 +0200
++++ libstdc++-v3/src/nonshared11/del_ops.cc	2019-05-13 10:20:36.308517035 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2013-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/del_ops.cc"
+--- libstdc++-v3/src/nonshared11/new_opant.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/new_opant.cc	2019-05-13 10:20:36.309517018 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2017-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/new_opant.cc"
+--- libstdc++-v3/src/nonshared11/nested_exception.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/nested_exception.cc	2019-05-13 10:20:36.309517018 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/nested_exception.cc"
++asm (".hidden _ZTSSt16nested_exception");
+--- libstdc++-v3/src/nonshared11/eh_ptr.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/eh_ptr.cc	2019-05-13 10:20:36.309517018 +0200
+@@ -0,0 +1,47 @@
++// -*- C++ -*- Implement the members of exception_ptr.
++// Copyright (C) 2008-2019 Free Software Foundation, Inc.
++//
++// This file is part of GCC.
++//
++// GCC 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.
++//
++// GCC 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.
++//
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <bits/c++config.h>
++#include "eh_atomics.h"
++
++#define _GLIBCXX_EH_PTR_COMPAT
++
++#include <exception>
++#include <bits/exception_ptr.h>
++#include "unwind-cxx.h"
++
++using namespace __cxxabiv1;
++
++std::__exception_ptr::exception_ptr::exception_ptr(void* obj) noexcept
++: _M_exception_object(obj)
++{
++  if (_M_exception_object)
++    {
++      __cxa_refcounted_exception *eh =
++	__get_refcounted_exception_header_from_obj (_M_exception_object);
++      __gnu_cxx::__eh_atomic_inc (&eh->referenceCount);
++    }
++}
++
++asm (".hidden _ZNSt15__exception_ptr13exception_ptrC2EPv");
+--- libstdc++-v3/src/nonshared11/functional.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/functional.cc	2019-05-13 10:20:36.309517018 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/functional.cc"
++asm (".hidden _ZTSSt17bad_function_call");
+--- libstdc++-v3/src/nonshared11/codecvt80.cc.jj	2019-05-14 11:33:45.787562431 +0200
++++ libstdc++-v3/src/nonshared11/codecvt80.cc	2019-05-14 16:49:54.818565197 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_80
++#include "codecvt.cc"
+--- libstdc++-v3/src/nonshared11/codecvt.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/codecvt.cc	2019-05-14 16:49:09.127328938 +0200
+@@ -0,0 +1,37 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/codecvt.cc"
++asm (".hidden _ZTISt12codecvt_base");
++asm (".hidden _ZTSSt12codecvt_base");
++asm (".hidden _ZTISt23__codecvt_abstract_baseIDic11__mbstate_tE");
++asm (".hidden _ZTISt23__codecvt_abstract_baseIDsc11__mbstate_tE");
++asm (".hidden _ZTSSt23__codecvt_abstract_baseIDic11__mbstate_tE");
++asm (".hidden _ZTSSt23__codecvt_abstract_baseIDsc11__mbstate_tE");
++asm (".hidden _ZTVSt23__codecvt_abstract_baseIDic11__mbstate_tE");
++asm (".hidden _ZTVSt23__codecvt_abstract_baseIDsc11__mbstate_tE");
++asm (".hidden _ZTISt23__codecvt_abstract_baseIDiDu11__mbstate_tE");
++asm (".hidden _ZTISt23__codecvt_abstract_baseIDsDu11__mbstate_tE");
++asm (".hidden _ZTSSt23__codecvt_abstract_baseIDiDu11__mbstate_tE");
++asm (".hidden _ZTSSt23__codecvt_abstract_baseIDsDu11__mbstate_tE");
++asm (".hidden _ZTVSt23__codecvt_abstract_baseIDiDu11__mbstate_tE");
++asm (".hidden _ZTVSt23__codecvt_abstract_baseIDsDu11__mbstate_tE");
+--- libstdc++-v3/src/nonshared11/cow-sstream-inst44.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/cow-sstream-inst44.cc	2019-05-13 10:20:36.309517018 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_44
++#include "cow-sstream-inst.cc"
+--- libstdc++-v3/src/nonshared11/compatibility-thread-c++0x.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/compatibility-thread-c++0x.cc	2019-05-14 16:50:55.673547996 +0200
+@@ -0,0 +1,41 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <bits/c++config.h>
++#if defined(_GLIBCXX_HAVE_TLS) && defined(PIC)
++#define _GLIBCXX_ASYNC_ABI_COMPAT
++#endif
++
++#include <future>
++#include <mutex>
++
++#undef _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE
++#include "../c++11/compatibility-thread-c++0x.cc"
++
++asm (".hidden _ZSt9call_onceIMSt6threadFvvEIPS0_EEvRSt9once_flagOT_DpOT0_");
++asm (".hidden _ZSt9call_onceIMSt6threadFvvEJPS0_EEvRSt9once_flagOT_DpOT0_");
++asm (".hidden _ZZSt9call_onceIMSt6threadFvvEIPS0_EEvRSt9once_flagOT_DpOT0_ENUlvE0_4_FUNEv");
++asm (".hidden _ZZSt9call_onceIMSt6threadFvvEJPS0_EEvRSt9once_flagOT_DpOT0_ENUlvE0_4_FUNEv");
++asm (".hidden _ZNSt13__future_base19_Async_state_common15_M_run_deferredEv"); 
++asm (".hidden _ZNSt13__future_base7_ResultIvE10_M_destroyEv");
++asm (".hidden _ZNSt13__future_base11_State_base15_M_run_deferredEv");
++asm (".hidden _ZTSNSt13__future_base11_State_baseE");
+--- libstdc++-v3/src/nonshared11/locale-inst.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/locale-inst.cc	2019-05-14 17:24:20.802045668 +0200
+@@ -0,0 +1,91 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 22.1  Locales
++//
++
++#ifndef _GLIBCXX_USE_CXX11_ABI
++// Instantiations in this file use the old COW std::string ABI unless included
++// by another file which defines _GLIBCXX_USE_CXX11_ABI=1. Some instantiations
++// are guarded by a check for !_GLIBCXX_USE_CXX11_ABI so that they are only
++// instantiated once, because they are not tagged with abi_tag so should not
++// be instantiated twice.
++# define _GLIBCXX_USE_CXX11_ABI 0
++#endif
++
++#include <locale>
++
++// Instantiation configuration.
++#ifndef C
++# define C char
++# define C_is_char
++#endif
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
++#ifdef _GLIBCXX_NONSHARED_CXX11_44
++  template time_get<C, istreambuf_iterator<C>>::iter_type time_get<C, istreambuf_iterator<C>>::_M_extract_wday_or_month(iter_type, iter_type, int&, const C**, size_t, ios_base&, ios_base::iostate&) const;
++#endif
++
++  template C* __add_grouping<C>(C*, C, char const*, size_t, C const*, C const*);
++
++  template moneypunct_byname<C, false>::moneypunct_byname(const string&, size_t);
++  template moneypunct_byname<C, true>::moneypunct_byname(const string&, size_t);
++  template numpunct_byname<C>::numpunct_byname(const string&, size_t);
++  template time_put_byname<C>::time_put_byname(const string&, size_t);
++  template time_get_byname<C>::time_get_byname(const string&, size_t);
++  template time_get<C, istreambuf_iterator<C>>::iter_type time_get<C, istreambuf_iterator<C>>::get(iter_type, iter_type, ios_base&, ios_base::iostate&, tm*, const C*, const C*) const;
++  template time_get<C, istreambuf_iterator<C>>::iter_type time_get<C, istreambuf_iterator<C>>::do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, tm*, char, char) const;
++  template messages_byname<C>::messages_byname(const string&, size_t);
++  ctype_byname<C>::ctype_byname(const string& __s, size_t __refs)
++    : ctype_byname(__s.c_str(), __refs) { }
++  template codecvt_byname<C, char, mbstate_t>::codecvt_byname(const string&, size_t);
++#endif
++
++  template time_get<C, istreambuf_iterator<C>>::iter_type time_get<C, istreambuf_iterator<C>>::get(iter_type, iter_type, ios_base&, ios_base::iostate&, tm*, char, char) const;
++  template collate_byname<C>::collate_byname(const string&, size_t);
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
++
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
++#ifdef C_is_char
++#if defined(__i386__) || (defined(__powerpc__) && !defined(__powerpc64__))
++asm (".hidden _ZSt14__add_groupingIcEPT_S1_S0_PKcjPKS0_S5_");
++#else
++asm (".hidden _ZSt14__add_groupingIcEPT_S1_S0_PKcmPKS0_S5_");
++#endif
++#else
++#if defined(__i386__) || (defined(__powerpc__) && !defined(__powerpc64__))
++asm (".hidden _ZSt14__add_groupingIwEPT_S1_S0_PKcjPKS0_S5_");
++#else
++asm (".hidden _ZSt14__add_groupingIwEPT_S1_S0_PKcmPKS0_S5_");
++#endif
++#endif
++#endif
++asm (".hidden _ZNKSt5ctypeIcE8do_widenEc");
+--- libstdc++-v3/src/nonshared11/cow-wstring-inst44.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/cow-wstring-inst44.cc	2019-05-13 19:01:54.950686999 +0200
+@@ -0,0 +1,35 @@
++// wide string support -*- C++ -*-
++
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++#define _GLIBCXX_USE_CXX11_ABI 0
++#include <bits/c++config.h>
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++#define C wchar_t
++#include "cow-string-inst44.cc"
++#endif
+--- libstdc++-v3/src/nonshared11/cow-string-inst48.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/cow-string-inst48.cc	2019-05-14 13:33:54.458956803 +0200
+@@ -0,0 +1,54 @@
++// Components for manipulating sequences of characters -*- C++ -*-
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++// Written by Jason Merrill based upon the specification by Takanori Adachi
++// in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers.
++
++// Instantiation configuration.
++#ifndef C
++# define _GLIBCXX_USE_CXX11_ABI 0
++# define C char
++#endif
++#include <string>
++
++namespace std _GLIBCXX_VISIBILITY(default)   
++{
++
++  typedef basic_string<C> S;
++
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
++  template
++  S::basic_string(const S&, size_type, const allocator_type&);
++#endif
++
++  template
++  S::basic_string(const S&, const allocator_type&);
++
++  template
++  S::basic_string(S&&, const allocator_type&);
++}
+--- libstdc++-v3/src/nonshared11/ios-inst.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/ios-inst.cc	2019-05-13 10:20:36.309517018 +0200
+@@ -0,0 +1,49 @@
++// Explicit instantiation file.
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882:
++//
++
++#include <ios>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  template void basic_ios<char>::move(basic_ios&&);
++  template void basic_ios<char>::move(basic_ios&);
++  template void basic_ios<char>::swap(basic_ios&);
++  template void basic_ios<char>::set_rdbuf(basic_streambuf<char, traits_type>*);
++  template basic_ios<char>::operator bool() const;
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template void basic_ios<wchar_t>::move(basic_ios&&);
++  template void basic_ios<wchar_t>::move(basic_ios&);
++  template void basic_ios<wchar_t>::swap(basic_ios&);
++  template void basic_ios<wchar_t>::set_rdbuf(basic_streambuf<wchar_t, traits_type>*);
++  template basic_ios<wchar_t>::operator bool() const;
++#endif
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/sstream-inst80.cc.jj	2019-05-14 13:16:41.745162678 +0200
++++ libstdc++-v3/src/nonshared11/sstream-inst80.cc	2019-05-14 17:30:10.533204994 +0200
+@@ -0,0 +1,55 @@
++// Explicit instantiation file.
++
++// 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882:
++//
++
++#define _GLIBCXX_USE_CXX11_ABI 1
++#include <sstream>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  template basic_stringbuf<char>::basic_stringbuf();
++  template basic_istringstream<char>::basic_istringstream();
++  template basic_ostringstream<char>::basic_ostringstream();
++  template basic_stringstream<char>::basic_stringstream();
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template basic_stringbuf<wchar_t>::basic_stringbuf();
++  template basic_istringstream<wchar_t>::basic_istringstream();
++  template basic_ostringstream<wchar_t>::basic_ostringstream();
++  template basic_stringstream<wchar_t>::basic_stringstream();
++#endif
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
++
++asm (".hidden _ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev");
++asm (".hidden _ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev");
++asm (".hidden _ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev");
++asm (".hidden _ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED0Ev");
++asm (".hidden _ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED1Ev");
++asm (".hidden _ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED2Ev");
+--- libstdc++-v3/src/nonshared11/ios.cc.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/ios.cc	2019-05-13 10:20:36.309517018 +0200
+@@ -0,0 +1,30 @@
++// Iostreams base classes -*- C++ -*-
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 27.4  Iostreams base classes
++//
++
++#define _GLIBCXX_NONSHARED_CXX11
++#include "../c++11/ios.cc"
+--- libstdc++-v3/src/nonshared11/Makefile.am.jj	2019-05-13 10:20:36.309517018 +0200
++++ libstdc++-v3/src/nonshared11/Makefile.am	2019-05-14 15:55:26.842188962 +0200
+@@ -0,0 +1,251 @@
++## Makefile for the C++03 sources of the GNU C++ Standard library.
++##
++## Copyright (C) 1997-2019 Free Software Foundation, Inc.
++##
++## This file is part of the libstdc++ version 3 distribution.
++## Process this file with automake to produce Makefile.in.
++
++## 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
++## <http://www.gnu.org/licenses/>.
++
++include $(top_srcdir)/fragment.am
++
++# Convenience library for C++11 runtime.
++noinst_LTLIBRARIES = libnonshared11convenience44.la \
++		     libnonshared11convenience48.la \
++		     libnonshared11convenience80.la
++
++headers =
++
++sources4448 = \
++	bad_array_length.cc \
++	bad_array_new.cc \
++	codecvt.cc \
++	condition_variable.cc \
++	cow-shim_facets.cc \
++	cow-stdexcept.cc \
++	ctype.cc \
++	cxx11-hash_tr1.cc \
++	cxx11-ios_failure.cc \
++	cxx11-shim_facets.cc \
++	cxx11-stdexcept.cc \
++	del_ops.cc \
++	del_opvs.cc \
++	new_opa.cc \
++	new_opant.cc \
++	new_opva.cc \
++	new_opvant.cc \
++	del_opa.cc \
++	del_opant.cc \
++	del_opsa.cc \
++	del_opva.cc \
++	del_opvant.cc \
++	del_opvsa.cc \
++	eh_aux_runtime.cc \
++	eh_terminate.cc \
++	eh_ptr.cc \
++	eh_throw.cc \
++	futex.cc \
++	ios.cc \
++	new_handler.cc \
++	snprintf_lite.cc \
++	$(inst_sources)
++
++sources44 = \
++	limits44.cc \
++	future.cc \
++	functexcept.cc \
++	placeholders.cc \
++	regex.cc \
++	functional.cc \
++	shared_ptr44.cc \
++	nested_exception.cc \
++	debug44.cc \
++	compatibility-thread-c++0x.cc \
++	atexit_thread.cc \
++	random.cc \
++	chrono.cc \
++	compatibility-atomic-c++0x.cc \
++	compatibility-c++0x.cc \
++	hashtable_c++0x.cc \
++	system_error44.cc \
++	thread44.cc \
++	$(inst_sources44)
++
++sources48 = \
++	limits.cc \
++	functexcept48.cc \
++	future48.cc \
++	random48.cc \
++	regex48.cc \
++	debug.cc \
++	shared_ptr48.cc \
++	system_error48.cc \
++	thread48.cc \
++	$(inst_sources48)
++
++sources80 = \
++	limits.cc \
++	debug.cc \
++	codecvt80.cc \
++	cow-stdexcept80.cc \
++	shared_ptr80.cc \
++	cxx11-ios_failure80.cc \
++	$(inst_sources80)
++
++if ENABLE_EXTERN_TEMPLATE
++# XTEMPLATE_FLAGS = -fno-implicit-templates
++inst_sources = \
++	cxx11-locale-inst.cc \
++	cxx11-wlocale-inst.cc \
++	ext11-inst.cc \
++	fstream-inst.cc \
++	ios-inst.cc \
++	iostream-inst.cc \
++	istream-inst.cc \
++	locale-inst-asm.S \
++	ostream-inst.cc \
++	sstream-inst.cc \
++	streambuf-inst.cc \
++	string-inst.cc \
++	wstring-inst.cc \
++	string-io-inst.cc \
++	wstring-io-inst.cc \
++	sso_string.cc
++inst_sources44 = \
++	cow-sstream-inst44.cc \
++	cow-string-inst44.cc \
++	cow-wstring-inst44.cc \
++	cow-fstream-inst.cc \
++	locale-inst44.cc \
++	wlocale-inst44.cc
++inst_sources48 = \
++	cow-sstream-inst.cc \
++	cow-string-inst48.cc \
++	cow-wstring-inst48.cc \
++	locale-inst.cc \
++	wlocale-inst.cc
++inst_sources80 = \
++	cow-sstream-inst80.cc \
++	sstream-inst80.cc \
++	cow-string-inst80.cc \
++	cow-wstring-inst80.cc \
++	locale-inst80.cc \
++	wlocale-inst80.cc \
++	string-inst80.cc \
++	wstring-inst80.cc
++else
++# XTEMPLATE_FLAGS =
++inst_sources =
++inst_sources44 =
++inst_sources48 =
++inst_sources80 =
++endif
++
++vpath % $(top_srcdir)/src/nonshared11
++vpath % $(top_srcdir)
++
++libnonshared11convenience44_la_SOURCES = $(sources4448) $(sources44)
++libnonshared11convenience48_la_SOURCES = $(sources4448) $(sources48)
++libnonshared11convenience80_la_SOURCES = $(sources80)
++
++# 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++11 \
++	$(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
++	$(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \
++	$(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS)
++
++AM_MAKEFLAGS = \
++	"gxx_include_dir=$(gxx_include_dir)"
++
++# Libtool notes
++
++# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
++# last. (That way, things like -O2 passed down from the toplevel can
++# be overridden by --enable-debug.)
++
++# 2) 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.
++# We have to put --tag disable-shared after --tag CXX lest things
++# CXX undo the affect of disable-shared.
++LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(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 $(LIBTOOLFLAGS) \
++	  --mode=link $(CXX) \
++	  $(VTV_CXXLINKFLAGS) \
++	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
++
++# Use special rules for the C++14 sources so that the proper flags are passed.
++del_ops.lo: del_ops.cc
++	$(LTCXXCOMPILE) -std=gnu++14 -Wno-sized-deallocation -c $<
++del_opvs.lo: del_opvs.cc
++	$(LTCXXCOMPILE) -std=gnu++14 -Wno-sized-deallocation -c $<
++
++# Use special rules for the C++17 sources so that the proper flags are passed.
++new_opa.lo: new_opa.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++new_opant.lo: new_opant.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++new_opva.lo: new_opva.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++new_opvant.lo: new_opvant.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opa.lo: del_opa.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opant.lo: del_opant.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opsa.lo: del_opsa.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opva.lo: del_opva.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opvant.lo: del_opvant.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opvsa.lo: del_opvsa.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++
++# Use special rules for source files that require -fchar8_t.
++codecvt.lo: codecvt.cc
++	$(LTCXXCOMPILE) -fchar8_t -c $<
++codecvt80.lo: codecvt80.cc
++	$(LTCXXCOMPILE) -fchar8_t -c $<
++limits.lo: limits.cc
++	$(LTCXXCOMPILE) -fchar8_t -c $<
++limits44.lo: limits44.cc
++	$(LTCXXCOMPILE) -fchar8_t -c $<
+--- libstdc++-v3/src/nonshared11/random48.cc.jj	2019-05-13 10:20:36.310517002 +0200
++++ libstdc++-v3/src/nonshared11/random48.cc	2019-05-14 17:25:42.998672779 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2013-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_48
++#include "random.cc"
+--- libstdc++-v3/src/nonshared11/string-io-inst.cc.jj	2019-05-13 10:20:36.310517002 +0200
++++ libstdc++-v3/src/nonshared11/string-io-inst.cc	2019-05-14 17:31:01.721350318 +0200
+@@ -0,0 +1,56 @@
++// SSO string instantiations for I/O -*- C++ -*-
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++#ifndef C
++# define _GLIBCXX_USE_CXX11_ABI 1
++# define C char
++# define NARROW
++#endif
++#include <istream>
++#include <ostream>
++
++namespace std _GLIBCXX_VISIBILITY(default)   
++{
++  // string related to iostreams.
++  typedef basic_istream<C> I;
++  typedef basic_ostream<C> O;
++  typedef basic_string<C> S;
++
++#ifndef NARROW
++  template
++  I& operator>>(I&, S&);
++#endif
++
++  template
++  O& operator<<(O&, const S&);
++
++  template
++  I& getline(I&, S&);
++}
++
++asm (".hidden _ZNKSt5ctypeIcE8do_widenEc");
+--- libstdc++-v3/src/nonshared11/cow-shim_facets.cc.jj	2019-05-13 10:20:36.310517002 +0200
++++ libstdc++-v3/src/nonshared11/cow-shim_facets.cc	2019-05-13 10:20:36.310517002 +0200
+@@ -0,0 +1,181 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/cow-shim_facets.cc"
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_112collate_shimIcE10do_compareEPKcS4_S4_S4_");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_112collate_shimIcE12do_transformEPKcS4_");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_112collate_shimIwE10do_compareEPKwS4_S4_S4_");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_112collate_shimIwE12do_transformEPKwS4_");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIcE6do_getEiiiRKSs");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIcE7do_openERKSsRKSt6locale");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIcE8do_closeEi");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIwE7do_openERKSsRKSt6locale");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113messages_shimIwE8do_closeEi");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE11do_get_dateESt19istreambuf_iteratorIcSt11char_traitsIcEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE11do_get_timeESt19istreambuf_iteratorIcSt11char_traitsIcEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE11do_get_yearESt19istreambuf_iteratorIcSt11char_traitsIcEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE13do_date_orderEv");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE14do_get_weekdayESt19istreambuf_iteratorIcSt11char_traitsIcEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIcE16do_get_monthnameESt19istreambuf_iteratorIcSt11char_traitsIcEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE11do_get_dateESt19istreambuf_iteratorIwSt11char_traitsIwEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE11do_get_timeESt19istreambuf_iteratorIwSt11char_traitsIwEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE11do_get_yearESt19istreambuf_iteratorIwSt11char_traitsIwEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE13do_date_orderEv");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE14do_get_weekdayESt19istreambuf_iteratorIwSt11char_traitsIwEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_113time_get_shimIwE16do_get_monthnameESt19istreambuf_iteratorIwSt11char_traitsIwEES6_RSt8ios_baseRSt12_Ios_IostateP2tm");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIcE6do_getESt19istreambuf_iteratorIcSt11char_traitsIcEES6_bRSt8ios_baseRSt12_Ios_IostateRSs");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIwE6do_getESt19istreambuf_iteratorIwSt11char_traitsIwEES6_bRSt8ios_baseRSt12_Ios_IostateRSbIwS5_SaIwEE");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIcE6do_putESt19ostreambuf_iteratorIcSt11char_traitsIcEEbRSt8ios_basecRKSs");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIwE6do_putESt19ostreambuf_iteratorIwSt11char_traitsIwEEbRSt8ios_basewRKSbIwS5_SaIwEE");
++asm (".hidden _ZNKSt6locale5facet11_M_cow_shimEPKNS_2idE");
++asm (".hidden _ZNKSt6locale5facet19_M_remove_referenceEv");
++asm (".hidden _ZNSt13__facet_shims10__time_getIcEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_S5_RSt8ios_baseRSt12_Ios_IostateP2tmc");
++asm (".hidden _ZNSt13__facet_shims10__time_getIwEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_S5_RSt8ios_baseRSt12_Ios_IostateP2tmc");
++#if !defined (__powerpc__) && !defined (__s390__) && !defined (__s390x__)
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIcE6do_getESt19istreambuf_iteratorIcSt11char_traitsIcEES6_bRSt8ios_baseRSt12_Ios_IostateRe");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIwE6do_getESt19istreambuf_iteratorIwSt11char_traitsIwEES6_bRSt8ios_baseRSt12_Ios_IostateRe");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIcE6do_putESt19ostreambuf_iteratorIcSt11char_traitsIcEEbRSt8ios_basece");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIwE6do_putESt19ostreambuf_iteratorIwSt11char_traitsIwEEbRSt8ios_basewe");
++asm (".hidden _ZNSt13__facet_shims11__money_getIcEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_S5_bRSt8ios_baseRSt12_Ios_IostatePePNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_getIwEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_S5_bRSt8ios_baseRSt12_Ios_IostatePePNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_putIcEESt19ostreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_bRSt8ios_baseS2_ePKNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_putIwEESt19ostreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_bRSt8ios_baseS2_ePKNS_12__any_stringE");
++#else
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIcE6do_getESt19istreambuf_iteratorIcSt11char_traitsIcEES6_bRSt8ios_baseRSt12_Ios_IostateRg");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_get_shimIwE6do_getESt19istreambuf_iteratorIwSt11char_traitsIwEES6_bRSt8ios_baseRSt12_Ios_IostateRg");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIcE6do_putESt19ostreambuf_iteratorIcSt11char_traitsIcEEbRSt8ios_basecg");
++asm (".hidden _ZNKSt13__facet_shims12_GLOBAL__N_114money_put_shimIwE6do_putESt19ostreambuf_iteratorIwSt11char_traitsIwEEbRSt8ios_basewg");
++asm (".hidden _ZNSt13__facet_shims11__money_getIcEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_S5_bRSt8ios_baseRSt12_Ios_IostatePgPNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_getIwEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_S5_bRSt8ios_baseRSt12_Ios_IostatePgPNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_putIcEESt19ostreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_bRSt8ios_baseS2_gPKNS_12__any_stringE");
++asm (".hidden _ZNSt13__facet_shims11__money_putIwEESt19ostreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_bRSt8ios_baseS2_gPKNS_12__any_stringE");
++#endif
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_112collate_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113messages_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_113time_get_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_get_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIcED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIcED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIcED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIwED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIwED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_114money_put_shimIwED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb0EED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb0EED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb0EED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb1EED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb1EED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb1EED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb0EED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb0EED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb0EED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb1EED0Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb1EED1Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb1EED2Ev");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_116__destroy_stringIcEEvPv");
++asm (".hidden _ZNSt13__facet_shims12_GLOBAL__N_116__destroy_stringIwEEvPv");
++asm (".hidden _ZNSt13__facet_shims16__messages_closeIcEEvSt17integral_constantIbLb0EEPKNSt6locale5facetEi");
++asm (".hidden _ZNSt13__facet_shims16__messages_closeIwEEvSt17integral_constantIbLb0EEPKNSt6locale5facetEi");
++asm (".hidden _ZNSt13__facet_shims17__collate_compareIcEEiSt17integral_constantIbLb0EEPKNSt6locale5facetEPKT_S9_S9_S9_");
++asm (".hidden _ZNSt13__facet_shims17__collate_compareIwEEiSt17integral_constantIbLb0EEPKNSt6locale5facetEPKT_S9_S9_S9_");
++asm (".hidden _ZNSt13__facet_shims19__collate_transformIcEEvSt17integral_constantIbLb0EEPKNSt6locale5facetERNS_12__any_stringEPKT_SB_");
++asm (".hidden _ZNSt13__facet_shims19__collate_transformIwEEvSt17integral_constantIbLb0EEPKNSt6locale5facetERNS_12__any_stringEPKT_SB_");
++asm (".hidden _ZNSt13__facet_shims20__time_get_dateorderIcEENSt9time_base9dateorderESt17integral_constantIbLb0EEPKNSt6locale5facetE");
++asm (".hidden _ZNSt13__facet_shims20__time_get_dateorderIwEENSt9time_base9dateorderESt17integral_constantIbLb0EEPKNSt6locale5facetE");
++asm (".hidden _ZNSt13__facet_shims23__moneypunct_fill_cacheIcLb0EEEvSt17integral_constantIbLb0EEPKNSt6locale5facetEPSt18__moneypunct_cacheIT_XT0_EE");
++asm (".hidden _ZNSt13__facet_shims23__moneypunct_fill_cacheIcLb1EEEvSt17integral_constantIbLb0EEPKNSt6locale5facetEPSt18__moneypunct_cacheIT_XT0_EE");
++asm (".hidden _ZNSt13__facet_shims23__moneypunct_fill_cacheIwLb0EEEvSt17integral_constantIbLb0EEPKNSt6locale5facetEPSt18__moneypunct_cacheIT_XT0_EE");
++asm (".hidden _ZNSt13__facet_shims23__moneypunct_fill_cacheIwLb1EEEvSt17integral_constantIbLb0EEPKNSt6locale5facetEPSt18__moneypunct_cacheIT_XT0_EE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_112collate_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_112collate_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113messages_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113messages_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113numpunct_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113numpunct_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113time_get_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_113time_get_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_114money_get_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_114money_get_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_114money_put_shimIcEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_114money_put_shimIwEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb0EEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb1EEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb0EEE");
++asm (".hidden _ZTINSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb1EEE");
++asm (".hidden _ZTINSt6locale5facet6__shimE");
++asm (".hidden _ZTSNSt6locale5facet6__shimE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_112collate_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_112collate_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113messages_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113messages_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113numpunct_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113time_get_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_113time_get_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_114money_get_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_114money_get_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_114money_put_shimIcEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_114money_put_shimIwEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb0EEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIcLb1EEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb0EEE");
++asm (".hidden _ZTVNSt13__facet_shims12_GLOBAL__N_115moneypunct_shimIwLb1EEE");
++asm (".hidden _ZNSt13__facet_shims21__numpunct_fill_cacheIcEEvSt17integral_constantIbLb0EEPKNSt6locale5facetEPSt16__numpunct_cacheIT_E");
++asm (".hidden _ZNSt13__facet_shims21__numpunct_fill_cacheIwEEvSt17integral_constantIbLb0EEPKNSt6locale5facetEPSt16__numpunct_cacheIT_E");
++#if defined(__i386__) || (defined(__powerpc__) && !defined(__powerpc64__))
++asm (".hidden _ZNSt13__facet_shims14__messages_getIcEEvSt17integral_constantIbLb0EEPKNSt6locale5facetERNS_12__any_stringEiiiPKT_j");
++asm (".hidden _ZNSt13__facet_shims14__messages_getIwEEvSt17integral_constantIbLb0EEPKNSt6locale5facetERNS_12__any_stringEiiiPKT_j");
++asm (".hidden _ZNSt13__facet_shims15__messages_openIcEEiSt17integral_constantIbLb0EEPKNSt6locale5facetEPKcjRKS3_");
++asm (".hidden _ZNSt13__facet_shims15__messages_openIwEEiSt17integral_constantIbLb0EEPKNSt6locale5facetEPKcjRKS3_");
++#else
++asm (".hidden _ZNSt13__facet_shims14__messages_getIcEEvSt17integral_constantIbLb0EEPKNSt6locale5facetERNS_12__any_stringEiiiPKT_m");
++asm (".hidden _ZNSt13__facet_shims14__messages_getIwEEvSt17integral_constantIbLb0EEPKNSt6locale5facetERNS_12__any_stringEiiiPKT_m");
++asm (".hidden _ZNSt13__facet_shims15__messages_openIcEEiSt17integral_constantIbLb0EEPKNSt6locale5facetEPKcmRKS3_");
++asm (".hidden _ZNSt13__facet_shims15__messages_openIwEEiSt17integral_constantIbLb0EEPKNSt6locale5facetEPKcmRKS3_");
++#endif
+--- libstdc++-v3/src/nonshared11/sso_string.cc.jj	2019-05-13 10:20:36.310517002 +0200
++++ libstdc++-v3/src/nonshared11/sso_string.cc	2019-05-13 10:20:36.310517002 +0200
+@@ -0,0 +1,48 @@
++// wide string support -*- C++ -*-
++
++// 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++#include "../c++11/sso_string.cc"
++asm (".hidden _ZNSt12__sso_stringC1EOS_");
++asm (".hidden _ZNSt12__sso_stringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE");
++asm (".hidden _ZNSt12__sso_stringC1ERKS_");
++asm (".hidden _ZNSt12__sso_stringC1Ev");
++asm (".hidden _ZNSt12__sso_stringC2EOS_");
++asm (".hidden _ZNSt12__sso_stringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE");
++asm (".hidden _ZNSt12__sso_stringC2ERKS_");
++asm (".hidden _ZNSt12__sso_stringC2Ev");
++asm (".hidden _ZNSt12__sso_stringD1Ev");
++asm (".hidden _ZNSt12__sso_stringD2Ev");
++asm (".hidden _ZNSt12__sso_stringaSEOS_");
++asm (".hidden _ZNSt12__sso_stringaSERKS_");
++#if defined(__i386__) || (defined(__powerpc__) && !defined(__powerpc64__))
++asm (".hidden _ZNSt12__sso_stringC1EPKcj");
++asm (".hidden _ZNSt12__sso_stringC2EPKcj");
++#else
++asm (".hidden _ZNSt12__sso_stringC1EPKcm");
++asm (".hidden _ZNSt12__sso_stringC2EPKcm");
++#endif
+--- libstdc++-v3/src/nonshared11/del_opv.cc.jj	2019-05-13 10:20:36.310517002 +0200
++++ libstdc++-v3/src/nonshared11/del_opv.cc	2019-05-13 10:20:36.310517002 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2013-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/del_opv.cc"
+--- libstdc++-v3/src/nonshared11/Makefile.in.jj	2019-05-13 10:20:36.310517002 +0200
++++ libstdc++-v3/src/nonshared11/Makefile.in	2019-05-14 19:14:28.574793894 +0200
+@@ -0,0 +1,988 @@
++# Makefile.in generated by automake 1.15.1 from Makefile.am.
++# @configure_input@
++
++# Copyright (C) 1994-2019 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/nonshared11
++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)
++libnonshared11convenience44_la_LIBADD =
++@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_1 = cxx11-locale-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cxx11-wlocale-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	ext11-inst.lo fstream-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	ios-inst.lo iostream-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	istream-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst-asm.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	ostream-inst.lo sstream-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	streambuf-inst.lo string-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wstring-inst.lo string-io-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wstring-io-inst.lo sso_string.lo
++am__objects_2 = bad_array_length.lo bad_array_new.lo codecvt.lo \
++	condition_variable.lo cow-shim_facets.lo cow-stdexcept.lo \
++	ctype.lo cxx11-hash_tr1.lo cxx11-ios_failure.lo \
++	cxx11-shim_facets.lo cxx11-stdexcept.lo del_ops.lo del_opvs.lo \
++	new_opa.lo new_opant.lo new_opva.lo new_opvant.lo del_opa.lo \
++	del_opant.lo del_opsa.lo del_opva.lo del_opvant.lo \
++	del_opvsa.lo eh_aux_runtime.lo eh_terminate.lo eh_ptr.lo \
++	eh_throw.lo futex.lo ios.lo new_handler.lo snprintf_lite.lo \
++	$(am__objects_1)
++@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_3 = cow-sstream-inst44.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-string-inst44.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-wstring-inst44.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-fstream-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst44.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wlocale-inst44.lo
++am__objects_4 = limits44.lo future.lo functexcept.lo placeholders.lo \
++	regex.lo functional.lo shared_ptr44.lo nested_exception.lo \
++	debug44.lo compatibility-thread-c++0x.lo atexit_thread.lo \
++	random.lo chrono.lo compatibility-atomic-c++0x.lo \
++	compatibility-c++0x.lo hashtable_c++0x.lo system_error44.lo \
++	thread44.lo $(am__objects_3)
++am_libnonshared11convenience44_la_OBJECTS = $(am__objects_2) \
++	$(am__objects_4)
++libnonshared11convenience44_la_OBJECTS =  \
++	$(am_libnonshared11convenience44_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 = 
++libnonshared11convenience48_la_LIBADD =
++@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_5 = cow-sstream-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-string-inst48.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-wstring-inst48.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst.lo wlocale-inst.lo
++am__objects_6 = limits.lo functexcept48.lo future48.lo random48.lo \
++	regex48.lo debug.lo shared_ptr48.lo system_error48.lo \
++	thread48.lo $(am__objects_5)
++am_libnonshared11convenience48_la_OBJECTS = $(am__objects_2) \
++	$(am__objects_6)
++libnonshared11convenience48_la_OBJECTS =  \
++	$(am_libnonshared11convenience48_la_OBJECTS)
++libnonshared11convenience80_la_LIBADD =
++@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_7 = cow-sstream-inst80.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst80.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-string-inst80.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-wstring-inst80.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst80.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wlocale-inst80.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst80.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wstring-inst80.lo
++am__objects_8 = limits.lo debug.lo codecvt80.lo cow-stdexcept80.lo \
++	shared_ptr80.lo cxx11-ios_failure80.lo $(am__objects_7)
++am_libnonshared11convenience80_la_OBJECTS = $(am__objects_8)
++libnonshared11convenience80_la_OBJECTS =  \
++	$(am_libnonshared11convenience80_la_OBJECTS)
++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 =
++CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
++	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
++LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
++	$(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \
++	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
++	$(AM_CCASFLAGS) $(CCASFLAGS)
++AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
++am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
++am__v_CPPAS_0 = @echo "  CPPAS   " $@;
++am__v_CPPAS_1 = 
++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 = 
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
++	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
++	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
++	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
++	$(AM_CFLAGS) $(CFLAGS)
++AM_V_CC = $(am__v_CC_@AM_V@)
++am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
++am__v_CC_0 = @echo "  CC      " $@;
++am__v_CC_1 = 
++CCLD = $(CC)
++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
++	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
++AM_V_CCLD = $(am__v_CCLD_@AM_V@)
++am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
++am__v_CCLD_0 = @echo "  CCLD    " $@;
++am__v_CCLD_1 = 
++SOURCES = $(libnonshared11convenience44_la_SOURCES) \
++	$(libnonshared11convenience48_la_SOURCES) \
++	$(libnonshared11convenience80_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@
++CCAS = @CCAS@
++CCASFLAGS = @CCASFLAGS@
++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++11 runtime.
++noinst_LTLIBRARIES = libnonshared11convenience44.la \
++		     libnonshared11convenience48.la \
++		     libnonshared11convenience80.la
++
++headers = 
++sources4448 = \
++	bad_array_length.cc \
++	bad_array_new.cc \
++	codecvt.cc \
++	condition_variable.cc \
++	cow-shim_facets.cc \
++	cow-stdexcept.cc \
++	ctype.cc \
++	cxx11-hash_tr1.cc \
++	cxx11-ios_failure.cc \
++	cxx11-shim_facets.cc \
++	cxx11-stdexcept.cc \
++	del_ops.cc \
++	del_opvs.cc \
++	new_opa.cc \
++	new_opant.cc \
++	new_opva.cc \
++	new_opvant.cc \
++	del_opa.cc \
++	del_opant.cc \
++	del_opsa.cc \
++	del_opva.cc \
++	del_opvant.cc \
++	del_opvsa.cc \
++	eh_aux_runtime.cc \
++	eh_terminate.cc \
++	eh_ptr.cc \
++	eh_throw.cc \
++	futex.cc \
++	ios.cc \
++	new_handler.cc \
++	snprintf_lite.cc \
++	$(inst_sources)
++
++sources44 = \
++	limits44.cc \
++	future.cc \
++	functexcept.cc \
++	placeholders.cc \
++	regex.cc \
++	functional.cc \
++	shared_ptr44.cc \
++	nested_exception.cc \
++	debug44.cc \
++	compatibility-thread-c++0x.cc \
++	atexit_thread.cc \
++	random.cc \
++	chrono.cc \
++	compatibility-atomic-c++0x.cc \
++	compatibility-c++0x.cc \
++	hashtable_c++0x.cc \
++	system_error44.cc \
++	thread44.cc \
++	$(inst_sources44)
++
++sources48 = \
++	limits.cc \
++	functexcept48.cc \
++	future48.cc \
++	random48.cc \
++	regex48.cc \
++	debug.cc \
++	shared_ptr48.cc \
++	system_error48.cc \
++	thread48.cc \
++	$(inst_sources48)
++
++sources80 = \
++	limits.cc \
++	debug.cc \
++	codecvt80.cc \
++	cow-stdexcept80.cc \
++	shared_ptr80.cc \
++	cxx11-ios_failure80.cc \
++	$(inst_sources80)
++
++# XTEMPLATE_FLAGS =
++@ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources = 
++
++# XTEMPLATE_FLAGS = -fno-implicit-templates
++@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cxx11-locale-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cxx11-wlocale-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	ext11-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	fstream-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	ios-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	iostream-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	istream-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst-asm.S \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	ostream-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	streambuf-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wstring-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	string-io-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wstring-io-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	sso_string.cc
++
++@ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources44 = 
++@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources44 = \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-sstream-inst44.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-string-inst44.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-wstring-inst44.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-fstream-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst44.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wlocale-inst44.cc
++
++@ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources48 = 
++@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources48 = \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-sstream-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-string-inst48.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-wstring-inst48.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wlocale-inst.cc
++
++@ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources80 = 
++@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources80 = \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-sstream-inst80.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst80.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-string-inst80.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	cow-wstring-inst80.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	locale-inst80.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wlocale-inst80.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst80.cc \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	wstring-inst80.cc
++
++libnonshared11convenience44_la_SOURCES = $(sources4448) $(sources44)
++libnonshared11convenience48_la_SOURCES = $(sources4448) $(sources48)
++libnonshared11convenience80_la_SOURCES = $(sources80)
++
++# 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++11 \
++	$(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
++	$(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \
++	$(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS)
++
++AM_MAKEFLAGS = \
++	"gxx_include_dir=$(gxx_include_dir)"
++
++
++# Libtool notes
++
++# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
++# last. (That way, things like -O2 passed down from the toplevel can
++# be overridden by --enable-debug.)
++
++# 2) 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.
++# We have to put --tag disable-shared after --tag CXX lest things
++# CXX undo the affect of disable-shared.
++LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(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 $(LIBTOOLFLAGS) \
++	  --mode=link $(CXX) \
++	  $(VTV_CXXLINKFLAGS) \
++	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
++
++all: all-am
++
++.SUFFIXES:
++.SUFFIXES: .S .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/nonshared11/Makefile'; \
++	$(am__cd) $(top_srcdir) && \
++	  $(AUTOMAKE) --foreign --ignore-deps src/nonshared11/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}; \
++	}
++
++libnonshared11convenience44.la: $(libnonshared11convenience44_la_OBJECTS) $(libnonshared11convenience44_la_DEPENDENCIES) $(EXTRA_libnonshared11convenience44_la_DEPENDENCIES) 
++	$(AM_V_CXXLD)$(CXXLINK)  $(libnonshared11convenience44_la_OBJECTS) $(libnonshared11convenience44_la_LIBADD) $(LIBS)
++
++libnonshared11convenience48.la: $(libnonshared11convenience48_la_OBJECTS) $(libnonshared11convenience48_la_DEPENDENCIES) $(EXTRA_libnonshared11convenience48_la_DEPENDENCIES) 
++	$(AM_V_CXXLD)$(CXXLINK)  $(libnonshared11convenience48_la_OBJECTS) $(libnonshared11convenience48_la_LIBADD) $(LIBS)
++
++libnonshared11convenience80.la: $(libnonshared11convenience80_la_OBJECTS) $(libnonshared11convenience80_la_DEPENDENCIES) $(EXTRA_libnonshared11convenience80_la_DEPENDENCIES) 
++	$(AM_V_CXXLD)$(CXXLINK)  $(libnonshared11convenience80_la_OBJECTS) $(libnonshared11convenience80_la_LIBADD) $(LIBS)
++
++mostlyclean-compile:
++	-rm -f *.$(OBJEXT)
++
++distclean-compile:
++	-rm -f *.tab.c
++
++.S.o:
++	$(AM_V_CPPAS)$(CPPASCOMPILE) -c -o $@ $<
++
++.S.obj:
++	$(AM_V_CPPAS)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
++
++.S.lo:
++	$(AM_V_CPPAS)$(LTCPPASCOMPILE) -c -o $@ $<
++
++.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/nonshared11
++vpath % $(top_srcdir)
++
++# Use special rules for the C++14 sources so that the proper flags are passed.
++del_ops.lo: del_ops.cc
++	$(LTCXXCOMPILE) -std=gnu++14 -Wno-sized-deallocation -c $<
++del_opvs.lo: del_opvs.cc
++	$(LTCXXCOMPILE) -std=gnu++14 -Wno-sized-deallocation -c $<
++
++# Use special rules for the C++17 sources so that the proper flags are passed.
++new_opa.lo: new_opa.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++new_opant.lo: new_opant.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++new_opva.lo: new_opva.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++new_opvant.lo: new_opvant.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opa.lo: del_opa.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opant.lo: del_opant.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opsa.lo: del_opsa.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opva.lo: del_opva.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opvant.lo: del_opvant.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++del_opvsa.lo: del_opvsa.cc
++	$(LTCXXCOMPILE) -std=gnu++1z -c $<
++
++# Use special rules for source files that require -fchar8_t.
++codecvt.lo: codecvt.cc
++	$(LTCXXCOMPILE) -fchar8_t -c $<
++codecvt80.lo: codecvt80.cc
++	$(LTCXXCOMPILE) -fchar8_t -c $<
++limits.lo: limits.cc
++	$(LTCXXCOMPILE) -fchar8_t -c $<
++limits44.lo: limits44.cc
++	$(LTCXXCOMPILE) -fchar8_t -c $<
++
++# 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:
+--- libstdc++-v3/src/nonshared11/snprintf_lite.cc.jj	2019-05-13 10:20:36.310517002 +0200
++++ libstdc++-v3/src/nonshared11/snprintf_lite.cc	2019-05-13 10:20:36.310517002 +0200
+@@ -0,0 +1,40 @@
++// 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/snprintf_lite.cc"
++#ifdef __powerpc64__
++asm (".hidden _ZN9__gnu_cxx15__concat_size_tEPcmm");
++asm (".hidden _ZN9__gnu_cxx15__snprintf_liteEPcmPKcS0_");
++#elif defined(__i386__)
++asm (".hidden _ZN9__gnu_cxx15__concat_size_tEPcjj");
++asm (".hidden _ZN9__gnu_cxx15__snprintf_liteEPcjPKcS0_");
++#elif defined(__powerpc__)
++asm (".hidden _ZN9__gnu_cxx15__concat_size_tEPcjj");
++asm (".hidden _ZN9__gnu_cxx15__snprintf_liteEPcjPKcP13__va_list_tag");
++#elif defined(__aarch64__)
++asm (".hidden _ZN9__gnu_cxx15__concat_size_tEPcmm");
++asm (".hidden _ZN9__gnu_cxx15__snprintf_liteEPcmPKcSt9__va_list");
++#else
++asm (".hidden _ZN9__gnu_cxx15__concat_size_tEPcmm");
++asm (".hidden _ZN9__gnu_cxx15__snprintf_liteEPcmPKcP13__va_list_tag");
++#endif
++asm (".hidden _ZN9__gnu_cxx26__throw_insufficient_spaceEPKcS1_");
+--- libstdc++-v3/src/nonshared11/new_handler.cc.jj	2019-05-13 10:20:36.310517002 +0200
++++ libstdc++-v3/src/nonshared11/new_handler.cc	2019-05-13 10:20:36.310517002 +0200
+@@ -0,0 +1,72 @@
++// Implementation file for the -*- C++ -*- dynamic memory management header.
++
++// Copyright (C) 1996-2019 Free Software Foundation, Inc.
++//
++// This file is part of GCC.
++//
++// GCC 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.
++//
++// GCC 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.
++//
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <new>
++#include <ext/concurrence.h>
++
++// This is inherently thread-unsafe, but so is libstdc++ < 4.9
++// std::set_new_handler and this hopefully doesn't make things much worse
++// than that.
++namespace
++{
++  __gnu_cxx::__mutex mx;
++  std::new_handler handler;
++
++  void new_handler_wrapper ()
++  {
++    std::new_handler h;
++    {
++      __gnu_cxx::__scoped_lock l(mx);
++      h = handler;
++    }
++    h ();
++  }
++}
++
++std::new_handler
++std::get_new_handler () noexcept
++{
++  __gnu_cxx::__scoped_lock l(mx);
++  handler = std::set_new_handler (new_handler_wrapper);
++  std::set_new_handler (handler);
++  return handler;
++}
++
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx30__throw_concurrence_lock_errorEv");
++asm (".hidden _ZN9__gnu_cxx32__throw_concurrence_unlock_errorEv");
++asm (".hidden _ZNK9__gnu_cxx24__concurrence_lock_error4whatEv");
++asm (".hidden _ZNK9__gnu_cxx26__concurrence_unlock_error4whatEv");
++asm (".hidden _ZTIN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTIN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx26__concurrence_unlock_errorE");
+--- libstdc++-v3/src/nonshared11/cxx11-hash_tr1.cc.jj	2019-05-13 10:20:36.310517002 +0200
++++ libstdc++-v3/src/nonshared11/cxx11-hash_tr1.cc	2019-05-13 10:20:36.310517002 +0200
+@@ -0,0 +1,25 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/cxx11-hash_tr1.cc"
++asm (".hidden _ZNKSt3tr14hashIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclES8_");
++asm (".hidden _ZNKSt3tr14hashIRKNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEclES8_");
+--- libstdc++-v3/src/nonshared11/debug.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/debug.cc	2019-05-14 16:52:44.984720832 +0200
+@@ -0,0 +1,113 @@
++// Copyright (C) 2003-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <bits/move.h>
++#include <bits/stl_iterator_base_types.h>
++
++#include <debug/debug.h>
++#include <debug/safe_sequence.h>
++#include <debug/safe_unordered_container.h>
++#include <debug/safe_iterator.h>
++#include <debug/safe_local_iterator.h>
++#include <algorithm>
++#include <cassert>
++#include <cstring>
++#include <cctype>
++#include <cstdio>
++#include <cstdlib>
++
++using namespace std;
++
++namespace __gnu_debug
++{
++  void
++  _Safe_iterator_base::
++  _M_reset() throw ()
++  {
++    _M_sequence = 0;
++    _M_version = 0;
++    _M_prior = 0;
++    _M_next = 0;
++  }
++
++  _Safe_unordered_container_base*
++  _Safe_local_iterator_base::
++  _M_get_container() const _GLIBCXX_NOEXCEPT
++  { return static_cast<_Safe_unordered_container_base*>(_M_sequence); }
++
++  void
++  _Safe_local_iterator_base::
++  _M_attach_single(_Safe_sequence_base* __cont, bool __constant) throw ()
++  {
++    _M_detach_single();
++      
++    // Attach to the new container (if there is one)
++    if (__cont)
++      {
++	_M_sequence = __cont;
++	_M_version = _M_sequence->_M_version;
++	_M_get_container()->_M_attach_local_single(this, __constant);
++      }
++  }
++
++  void
++  _Safe_local_iterator_base::
++  _M_detach_single() throw ()
++  {
++    if (_M_sequence)
++      {
++	_M_get_container()->_M_detach_local_single(this);
++	_M_reset();
++      }
++  }
++
++  void
++  _Safe_unordered_container_base::
++  _M_attach_local_single(_Safe_iterator_base* __it, bool __constant) throw ()
++  {
++    _Safe_iterator_base*& __its =
++      __constant ? _M_const_local_iterators : _M_local_iterators;
++    __it->_M_next = __its;
++    if (__it->_M_next)
++      __it->_M_next->_M_prior = __it;
++    __its = __it;
++  }
++
++  void
++  _Safe_unordered_container_base::
++  _M_detach_local_single(_Safe_iterator_base* __it) throw ()
++  {
++    // Remove __it from this container's list
++    __it->_M_unlink();
++    if (_M_const_local_iterators == __it)
++      _M_const_local_iterators = __it->_M_next;
++    if (_M_local_iterators == __it)
++      _M_local_iterators = __it->_M_next;
++  }
++
++} // namespace __gnu_debug
++
++asm (".hidden _ZN11__gnu_debug19_Safe_iterator_base8_M_resetEv");
++asm (".hidden _ZN11__gnu_debug25_Safe_local_iterator_base16_M_detach_singleEv");
++asm (".hidden _ZN11__gnu_debug30_Safe_unordered_container_base22_M_attach_local_singleEPNS_19_Safe_iterator_baseEb");
++asm (".hidden _ZN11__gnu_debug30_Safe_unordered_container_base22_M_detach_local_singleEPNS_19_Safe_iterator_baseE");
++asm (".hidden _ZNK11__gnu_debug25_Safe_local_iterator_base16_M_get_containerEv");
+--- libstdc++-v3/src/nonshared11/del_opsa.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/del_opsa.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2017-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/del_opsa.cc"
+--- libstdc++-v3/src/nonshared11/wlocale-inst44.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/wlocale-inst44.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,31 @@
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++// Instantiate locales using COW std::wstring ABI
++#define _GLIBCXX_USE_CXX11_ABI 0
++#include <bits/c++config.h>
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++#define C wchar_t
++#define _GLIBCXX_NONSHARED_CXX11_44
++#include "locale-inst.cc"
++#endif
+--- libstdc++-v3/src/nonshared11/cow-fstream-inst.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/cow-fstream-inst.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,48 @@
++// Explicit instantiation file.
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882:
++//
++
++#define _GLIBCXX_USE_CXX11_ABI 0
++#include <fstream>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++
++  typedef basic_filebuf<char> FIC;
++
++  template
++  int FIC::_M_get_ext_pos(__state_type &);
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  typedef basic_filebuf<wchar_t> FIW;
++
++  template
++  int FIW::_M_get_ext_pos(__state_type &);
++
++#endif
++
++}
+--- libstdc++-v3/src/nonshared11/ostream-inst.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/ostream-inst.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,48 @@
++// Explicit instantiation file.
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882:
++//
++
++#include <ostream>
++#include <iomanip>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  template basic_ostream<char>::basic_ostream(basic_ostream&&);
++  template basic_ostream<char>& basic_ostream<char>::operator=(basic_ostream&&);
++  template void basic_ostream<char>::swap(basic_ostream&);
++  template basic_ostream<char>::basic_ostream(basic_iostream<char>&);
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template basic_ostream<wchar_t>::basic_ostream(basic_ostream&&);
++  template basic_ostream<wchar_t>& basic_ostream<wchar_t>::operator=(basic_ostream&&);
++  template void basic_ostream<wchar_t>::swap(basic_ostream&);
++  template basic_ostream<wchar_t>::basic_ostream(basic_iostream<wchar_t>&);
++#endif
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/regex.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/regex.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,25 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/regex.cc"
++
++asm (".hidden _ZTSSt11regex_error");
+--- libstdc++-v3/src/nonshared11/cow-sstream-inst80.cc.jj	2019-05-14 13:14:39.977188629 +0200
++++ libstdc++-v3/src/nonshared11/cow-sstream-inst80.cc	2019-05-14 13:14:45.596095142 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_80
++#include "cow-sstream-inst.cc"
+--- libstdc++-v3/src/nonshared11/del_opvant.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/del_opvant.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2017-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/del_opvant.cc"
+--- libstdc++-v3/src/nonshared11/del_opant.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/del_opant.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2017-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/del_opant.cc"
+--- libstdc++-v3/src/nonshared11/string-inst.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/string-inst.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,34 @@
++// Components for manipulating sequences of characters -*- C++ -*-
++
++// Copyright (C) 1997-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++// Written by Jason Merrill based upon the specification by Takanori Adachi
++// in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers.
++
++#include "../c++11/string-inst.cc"
++asm (".hidden _ZN9__gnu_cxxeqIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_");
++asm (".hidden _ZN9__gnu_cxxeqIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESD_");
+--- libstdc++-v3/src/nonshared11/cow-stdexcept80.cc.jj	2019-05-14 13:29:59.909864993 +0200
++++ libstdc++-v3/src/nonshared11/cow-stdexcept80.cc	2019-05-14 13:31:44.344124843 +0200
+@@ -0,0 +1,76 @@
++// Methods for Exception Support for -*- C++ -*-
++
++// 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 19.1  Exception classes
++//
++
++// All exception classes still use the classic COW std::string.
++#define _GLIBCXX_USE_CXX11_ABI 0
++#define _GLIBCXX_DEFINE_STDEXCEPT_COPY_OPS 1
++#define __cow_string __cow_stringxxx
++#include <stdexcept>
++#include <system_error>
++#undef __cow_string
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  // Copy/move constructors and assignment operators defined using COW string.
++  // These operations are noexcept even though copying a COW string is not,
++  // but we know that the string member in an exception has not been "leaked"
++  // so copying is a simple reference count increment.
++  // For the fully dynamic string moves are not noexcept (due to needing to
++  // allocate an empty string) so we just define the moves as copies here.
++
++#if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
++  logic_error::logic_error(logic_error&& e) noexcept = default;
++
++  logic_error&
++  logic_error::operator=(logic_error&& e) noexcept = default;
++#else
++  logic_error::logic_error(logic_error&& e) noexcept
++  : exception(e), _M_msg(e._M_msg) { }
++
++  logic_error&
++  logic_error::operator=(logic_error&& e) noexcept
++  { _M_msg = e._M_msg; return *this; }
++#endif
++
++#if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
++  runtime_error::runtime_error(runtime_error&& e) noexcept = default;
++
++  runtime_error&
++  runtime_error::operator=(runtime_error&& e) noexcept = default;
++#else
++  runtime_error::runtime_error(runtime_error&& e) noexcept
++  : exception(e), _M_msg(e._M_msg) { }
++
++  runtime_error&
++  runtime_error::operator=(runtime_error&& e) noexcept
++  { _M_msg = e._M_msg; return *this; }
++#endif
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/eh_terminate.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/eh_terminate.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,92 @@
++// Implementation file for the -*- C++ -*- dynamic memory management header.
++
++// Copyright (C) 1994-2019 Free Software Foundation, Inc.
++//
++// This file is part of GCC.
++//
++// GCC 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.
++//
++// GCC 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.
++//
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <exception>
++#include <ext/concurrence.h>
++
++// This is inherently thread-unsafe, but so is libstdc++ < 4.9
++// std::set_terminate and std::set_unexpected and this hopefully
++// doesn't make things much worse than that.
++namespace
++{
++  __gnu_cxx::__mutex mx;
++  std::terminate_handler thandler;
++  std::unexpected_handler uhandler;
++
++  void terminate_handler_wrapper ()
++  {
++    std::terminate_handler h;
++    {
++      __gnu_cxx::__scoped_lock l(mx);
++      h = thandler;
++    }
++    h ();
++  }
++
++  void unexpected_handler_wrapper ()
++  {
++    std::terminate_handler h;
++    {
++      __gnu_cxx::__scoped_lock l(mx);
++      h = uhandler;
++    }
++    h ();
++  }
++}
++
++std::terminate_handler
++std::get_terminate () noexcept
++{
++  __gnu_cxx::__scoped_lock l(mx);
++  thandler = std::set_terminate (terminate_handler_wrapper);
++  std::set_terminate (thandler);
++  return thandler;
++}
++
++std::unexpected_handler
++std::get_unexpected () noexcept
++{
++  __gnu_cxx::__scoped_lock l(mx);
++  uhandler = std::set_unexpected (unexpected_handler_wrapper);
++  std::set_unexpected (uhandler);
++  return uhandler;
++}
++
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx24__concurrence_lock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD0Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD1Ev");
++asm (".hidden _ZN9__gnu_cxx26__concurrence_unlock_errorD2Ev");
++asm (".hidden _ZN9__gnu_cxx30__throw_concurrence_lock_errorEv");
++asm (".hidden _ZN9__gnu_cxx32__throw_concurrence_unlock_errorEv");
++asm (".hidden _ZNK9__gnu_cxx24__concurrence_lock_error4whatEv");
++asm (".hidden _ZNK9__gnu_cxx26__concurrence_unlock_error4whatEv");
++asm (".hidden _ZTIN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTIN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTSN9__gnu_cxx26__concurrence_unlock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx24__concurrence_lock_errorE");
++asm (".hidden _ZTVN9__gnu_cxx26__concurrence_unlock_errorE");
+--- libstdc++-v3/src/nonshared11/wstring-io-inst.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/wstring-io-inst.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,35 @@
++// SSO string instantiations for I/O -*- C++ -*-
++
++// 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 21  Strings library
++//
++
++#define _GLIBCXX_USE_CXX11_ABI 1
++#include <bits/c++config.h>
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++#define C wchar_t
++#include "string-io-inst.cc"
++#endif
+--- libstdc++-v3/src/nonshared11/del_opva.cc.jj	2019-05-13 10:20:36.311516985 +0200
++++ libstdc++-v3/src/nonshared11/del_opva.cc	2019-05-13 10:20:36.311516985 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2017-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/del_opva.cc"
+--- libstdc++-v3/src/nonshared11/functexcept.cc.jj	2019-05-13 10:20:36.312516968 +0200
++++ libstdc++-v3/src/nonshared11/functexcept.cc	2019-05-13 10:20:36.312516968 +0200
+@@ -0,0 +1,70 @@
++// Copyright (C) 2001-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include <bits/functexcept.h>
++#include <cstdlib>
++#include <exception>
++#include <stdexcept>
++#include <new>
++#include <typeinfo>
++#include <ios>
++#include <system_error>
++#include <future>
++#include <functional>
++#include <bits/regex_error.h>
++#include <stdarg.h>
++
++#ifdef _GLIBCXX_USE_NLS
++# include <libintl.h>
++# define _(msgid)   gettext (msgid)
++#else
++# define _(msgid)   (msgid)
++#endif
++
++namespace __gnu_cxx
++{
++  int __snprintf_lite(char *__buf, size_t __bufsize, const char *__fmt,
++		      va_list __ap);
++}
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++  void
++  __throw_out_of_range_fmt(const char* __fmt, ...)
++  {
++    const size_t __len = __builtin_strlen(__fmt);
++    // We expect at most 2 numbers, and 1 short string. The additional
++    // 512 bytes should provide more than enough space for expansion.
++    const size_t __alloca_size = __len + 512;
++    char *const __s = static_cast<char*>(__builtin_alloca(__alloca_size));
++    va_list __ap;
++
++    va_start(__ap, __fmt);
++    __gnu_cxx::__snprintf_lite(__s, __alloca_size, __fmt, __ap);
++    _GLIBCXX_THROW_OR_ABORT(out_of_range(_(__s)));
++    va_end(__ap);  // Not reached.
++  }
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+--- libstdc++-v3/src/nonshared11/cxx11-ios_failure80.cc.jj	2019-05-14 15:34:40.267016992 +0200
++++ libstdc++-v3/src/nonshared11/cxx11-ios_failure80.cc	2019-05-14 16:52:01.167453250 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_80
++#include "cxx11-ios_failure.cc"
+--- libstdc++-v3/src/nonshared11/del_opvs.cc.jj	2019-05-13 10:20:36.312516968 +0200
++++ libstdc++-v3/src/nonshared11/del_opvs.cc	2019-05-13 10:20:36.312516968 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 2013-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../libsupc++/del_opvs.cc"
+--- libstdc++-v3/src/nonshared11/shared_ptr80.cc.jj	2019-05-14 15:14:03.703677864 +0200
++++ libstdc++-v3/src/nonshared11/shared_ptr80.cc	2019-05-14 17:29:18.109080309 +0200
+@@ -0,0 +1,25 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_80
++#include "../c++11/shared_ptr.cc"
++asm (".hidden _ZTSSt19_Sp_make_shared_tag");
+--- libstdc++-v3/src/nonshared11/wstring-inst80.cc.jj	2019-05-14 15:07:11.188571494 +0200
++++ libstdc++-v3/src/nonshared11/wstring-inst80.cc	2019-05-14 15:08:18.620444525 +0200
+@@ -0,0 +1,29 @@
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_USE_CXX11_ABI 1
++#include <bits/c++config.h>
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++#define C wchar_t
++#include "string-inst80.cc"
++#endif
+--- libstdc++-v3/src/nonshared11/cow-sstream-inst.cc.jj	2019-05-13 10:20:36.312516968 +0200
++++ libstdc++-v3/src/nonshared11/cow-sstream-inst.cc	2019-05-14 13:15:20.773509866 +0200
+@@ -0,0 +1,91 @@
++// Explicit instantiation file.
++
++// 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882:
++//
++
++#define _GLIBCXX_USE_CXX11_ABI 0
++#include <sstream>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
++  template basic_stringbuf<char>::basic_stringbuf(basic_stringbuf&&);
++  template basic_stringbuf<char>& basic_stringbuf<char>::operator=(basic_stringbuf&&);
++  template void basic_stringbuf<char>::swap(basic_stringbuf&);
++  template basic_istringstream<char>::basic_istringstream(basic_istringstream&&);
++  template basic_istringstream<char>& basic_istringstream<char>::operator=(basic_istringstream&&);
++  template void basic_istringstream<char>::swap(basic_istringstream&);
++  template basic_ostringstream<char>::basic_ostringstream(basic_ostringstream&&);
++  template basic_ostringstream<char>& basic_ostringstream<char>::operator=(basic_ostringstream&&);
++  template void basic_ostringstream<char>::swap(basic_ostringstream&);
++  template basic_stringstream<char>::basic_stringstream(basic_stringstream&&);
++  template basic_stringstream<char>& basic_stringstream<char>::operator=(basic_stringstream&&);
++  template void basic_stringstream<char>::swap(basic_stringstream&);
++#ifdef _GLIBCXX_NONSHARED_CXX11_44
++  template void basic_stringbuf<char>::_M_pbump(char_type*, char_type*, off_type);
++#endif
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template basic_stringbuf<wchar_t>::basic_stringbuf(basic_stringbuf&&);
++  template basic_stringbuf<wchar_t>& basic_stringbuf<wchar_t>::operator=(basic_stringbuf&&);
++  template void basic_stringbuf<wchar_t>::swap(basic_stringbuf&);
++  template basic_istringstream<wchar_t>::basic_istringstream(basic_istringstream&&);
++  template basic_istringstream<wchar_t>& basic_istringstream<wchar_t>::operator=(basic_istringstream&&);
++  template void basic_istringstream<wchar_t>::swap(basic_istringstream&);
++  template basic_ostringstream<wchar_t>::basic_ostringstream(basic_ostringstream&&);
++  template basic_ostringstream<wchar_t>& basic_ostringstream<wchar_t>::operator=(basic_ostringstream&&);
++  template void basic_ostringstream<wchar_t>::swap(basic_ostringstream&);
++  template basic_stringstream<wchar_t>::basic_stringstream(basic_stringstream&&);
++  template basic_stringstream<wchar_t>& basic_stringstream<wchar_t>::operator=(basic_stringstream&&);
++  template void basic_stringstream<wchar_t>::swap(basic_stringstream&);
++#ifdef _GLIBCXX_NONSHARED_CXX11_44
++  template void basic_stringbuf<wchar_t>::_M_pbump(char_type*, char_type*, off_type);
++#endif
++#endif
++#endif
++
++  template basic_stringbuf<char>::basic_stringbuf();
++  template basic_istringstream<char>::basic_istringstream();
++  template basic_ostringstream<char>::basic_ostringstream();
++  template basic_stringstream<char>::basic_stringstream();
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template basic_stringbuf<wchar_t>::basic_stringbuf();
++  template basic_istringstream<wchar_t>::basic_istringstream();
++  template basic_ostringstream<wchar_t>::basic_ostringstream();
++  template basic_stringstream<wchar_t>::basic_stringstream();
++#endif
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
++
++asm (".hidden _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev");
++asm (".hidden _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev");
++asm (".hidden _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED2Ev");
++asm (".hidden _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev");
++asm (".hidden _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev");
++asm (".hidden _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED2Ev");
+--- libstdc++-v3/src/nonshared11/cxx11-locale-inst.cc.jj	2019-05-13 10:20:36.312516968 +0200
++++ libstdc++-v3/src/nonshared11/cxx11-locale-inst.cc	2019-05-14 17:35:35.107785663 +0200
+@@ -0,0 +1,48 @@
++// Copyright (C) 2012-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/cxx11-locale-inst.cc"
++#if !defined (__powerpc__) && !defined (__s390__) && !defined (__s390x__)
++asm (".hidden _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11IjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11IlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11ImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11ItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11IxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11IyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_");
++#else
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11IjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11IlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11ImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11ItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11IxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++asm (".hidden _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11IyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_");
++#endif
++asm (".hidden _ZNKSt5ctypeIcE8do_widenEPKcS2_Pc");
++asm (".hidden _ZNKSt5ctypeIcE8do_widenEc");
++asm (".hidden _ZNKSt5ctypeIcE9do_narrowEcc");
++asm (".hidden _ZSt16__convert_from_vRKP15__locale_structPciPKcz");
++asm (".hidden _ZTISt10money_base");
++asm (".hidden _ZTISt13messages_base");
++asm (".hidden _ZTISt9time_base");
++asm (".hidden _ZTSSt10money_base");
++asm (".hidden _ZTSSt13messages_base");
++asm (".hidden _ZTSSt9time_base");
+--- libstdc++-v3/src/nonshared11/random.cc.jj	2019-05-13 10:20:36.312516968 +0200
++++ libstdc++-v3/src/nonshared11/random.cc	2019-05-14 17:27:05.058302178 +0200
+@@ -0,0 +1,100 @@
++// Copyright (C) 2013-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++11/random.cc"
++
++#if __WORDSIZE == 64
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE10shift_sizeE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE10state_sizeE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11_M_gen_randEv");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11tempering_bE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11tempering_cE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11tempering_dE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11tempering_lE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11tempering_sE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11tempering_tE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE11tempering_uE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE12default_seedE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE25initialization_multiplierE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE3maxEv");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE3minEv");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE4seedEm");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE7discardEy");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE8xor_maskE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE9mask_bitsE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE9word_sizeE");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEC1Em");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEC2Em");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEclEv");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEC1Ev");
++asm (".hidden _ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEC2Ev");
++#elif defined(__s390__)
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE10shift_sizeE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE10state_sizeE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE11_M_gen_randEv");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE11tempering_bE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE11tempering_cE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE11tempering_dE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE11tempering_lE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE11tempering_sE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE11tempering_tE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE11tempering_uE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE12default_seedE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE25initialization_multiplierE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE3maxEv");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE3minEv");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE4seedEj");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE7discardEy");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE8xor_maskE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE9mask_bitsE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EE9word_sizeE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEC1Ej");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEC2Ej");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEclEv");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEC1Ev");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLm32ELm624ELm397ELm31ELj2567483615ELm11ELj4294967295ELm7ELj2636928640ELm15ELj4022730752ELm18ELj1812433253EEC2Ev");
++#else
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE10shift_sizeE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE10state_sizeE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE11_M_gen_randEv");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE11tempering_bE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE11tempering_cE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE11tempering_dE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE11tempering_lE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE11tempering_sE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE11tempering_tE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE11tempering_uE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE12default_seedE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE25initialization_multiplierE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE3maxEv");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE3minEv");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE4seedEj");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE7discardEy");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE8xor_maskE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE9mask_bitsE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EE9word_sizeE");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EEC1Ej");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EEC2Ej");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EEclEv");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EEC1Ev");
++asm (".hidden _ZNSt23mersenne_twister_engineIjLj32ELj624ELj397ELj31ELj2567483615ELj11ELj4294967295ELj7ELj2636928640ELj15ELj4022730752ELj18ELj1812433253EEC2Ev");
++#endif
+--- libstdc++-v3/src/nonshared11/locale-inst44.cc.jj	2019-05-13 10:20:36.312516968 +0200
++++ libstdc++-v3/src/nonshared11/locale-inst44.cc	2019-05-13 10:20:36.312516968 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 1999-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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX11_44
++#include "locale-inst.cc"
+--- libstdc++-v3/src/shared/hashtable-aux.cc.jj	2019-04-25 20:01:51.730217544 +0200
++++ libstdc++-v3/src/shared/hashtable-aux.cc	2019-05-13 10:20:36.312516968 +0200
+@@ -22,6 +22,9 @@
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
++#ifndef HASHTABLE_AUX_CC
++#define HASHTABLE_AUX_CC 1
++
+ namespace __detail
+ {
+   // The sentinel value is kept only for abi backward compatibility.
+@@ -90,3 +93,5 @@ namespace __detail
+ #endif
+   };
+ } // namespace __detail
++
++#endif
+--- libstdc++-v3/src/c++98/ios_failure.cc.jj	2019-04-25 20:01:51.769216941 +0200
++++ libstdc++-v3/src/c++98/ios_failure.cc	2019-05-14 16:09:26.166159892 +0200
+@@ -45,6 +45,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
+   ios_base::failure::failure(const string& __str) throw()
+   : _M_msg(__str) { }
+ 
+@@ -54,6 +55,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   const char*
+   ios_base::failure::what() const throw()
+   { return _M_msg.c_str(); }
++#endif
+ 
+ #if _GLIBCXX_USE_DUAL_ABI
+   // When the dual ABI is enabled __throw_ios_failure() is defined in
+--- libstdc++-v3/src/c++98/locale_facets.cc.jj	2019-04-25 20:01:51.773216879 +0200
++++ libstdc++-v3/src/c++98/locale_facets.cc	2019-05-13 10:20:36.312516968 +0200
+@@ -27,6 +27,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11
+   // Definitions for static const data members of time_base.
+   template<>
+     const char*
+@@ -97,6 +98,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+       *__fptr++ = (__flags & ios_base::uppercase) ? 'G' : 'g';
+     *__fptr = '\0';
+   }
++#endif
+ 
+   // This function is not exported but is needed internally, by the versions
+   // of __verify_grouping below and in src/c++11/cxx11-locale-inst.cc
+@@ -125,6 +127,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+     return __test;
+   }
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11
+   bool
+   __verify_grouping(const char* __grouping, size_t __grouping_size,
+ 		    const string& __grouping_tmp) throw()
+@@ -133,6 +136,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+                                   __grouping_tmp.c_str(),
+                                   __grouping_tmp.size());
+   }
++#endif
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace
+--- libstdc++-v3/src/nonshared17/cow-fs_ops.cc.jj	2019-05-13 10:33:09.443939688 +0200
++++ libstdc++-v3/src/nonshared17/cow-fs_ops.cc	2019-05-14 19:54:55.667219247 +0200
+@@ -0,0 +1,41 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++17/cow-fs_ops.cc"
++asm (".hidden _ZNSt10filesystem4pathD1Ev");
++asm (".hidden _ZNSt10filesystem4pathD2Ev");
++asm (".hidden _ZNSt15_Sp_counted_ptrIDnLN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv");
++asm (".hidden _ZNSt5dequeINSt10filesystem4pathESaIS1_EE16_M_push_back_auxIIRKS1_EEEvDpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem4pathESaIS1_EE16_M_push_back_auxIJRKS1_EEEvDpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem4pathESaIS1_EE19_M_range_insert_auxINS1_8iteratorEEEvSt15_Deque_iteratorIS1_RS1_PS1_ET_SA_St20forward_iterator_tag");
++asm (".hidden _ZNSt5dequeINSt10filesystem4pathESaIS1_EED1Ev");
++asm (".hidden _ZNSt5dequeINSt10filesystem4pathESaIS1_EED2Ev");
++#ifdef __x86_64__
++asm (".hidden _ZNSt11_Deque_baseINSt10filesystem4pathESaIS1_EE17_M_initialize_mapEm");
++asm (".hidden _ZSt13move_backwardINSt10filesystem4pathEESt15_Deque_iteratorIT_RS3_PS3_ES2_IS3_RKS3_PS7_ESA_S6_");
++asm (".hidden _ZNSt5dequeINSt10filesystem4pathESaIS1_EE13_M_insert_auxINS1_8iteratorEEEvSt15_Deque_iteratorIS1_RS1_PS1_ET_SA_m");
++asm (".hidden _ZNSt5dequeINSt10filesystem4pathESaIS1_EE17_M_reallocate_mapEmb");
++asm (".hidden _ZNSt5dequeINSt10filesystem4pathESaIS1_EE23_M_new_elements_at_backEm");
++asm (".hidden _ZNSt5dequeINSt10filesystem4pathESaIS1_EE24_M_new_elements_at_frontEm");
++#endif
+--- libstdc++-v3/src/nonshared17/cow-fs_path.cc.jj	2019-05-13 10:33:09.447939622 +0200
++++ libstdc++-v3/src/nonshared17/cow-fs_path.cc	2019-05-14 18:43:03.283254489 +0200
+@@ -0,0 +1,73 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++17/cow-fs_path.cc"
++asm (".hidden _ZNKSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNKSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE3getEv");
++asm (".hidden _ZNKSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE6uniqueEv");
++asm (".hidden _ZNKSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE9use_countEv");
++asm (".hidden _ZNKSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEcvbEv");
++asm (".hidden _ZNKSt23__codecvt_abstract_baseIwc11__mbstate_tE2inERS0_PKcS4_RS4_PwS6_RS6_");
++asm (".hidden _ZNKSt23__codecvt_abstract_baseIwc11__mbstate_tE3outERS0_PKwS4_RS4_PcS6_RS6_");
++asm (".hidden _ZNSt10filesystem4path19preferred_separatorE");
++asm (".hidden _ZNSt10filesystem4path4_CvtIwE10_S_convertEPKwS4_");
++asm (".hidden _ZNSt10filesystem4path5_List5clearEv");
++asm (".hidden _ZNSt10filesystem4path5_List5_Impl13_M_erase_fromEPKNS0_5_CmptE");
++asm (".hidden _ZNSt10filesystem4path5_List7reserveEib");
++asm (".hidden _ZNSt10filesystem4path5_ListaSERKS1_");
++asm (".hidden _ZNSt10filesystem4path5_ListC2ERKS1_");
++asm (".hidden _ZNSt10filesystem4path5_ListC2Ev");
++asm (".hidden _ZNSt10filesystem4pathD1Ev");
++asm (".hidden _ZNSt10filesystem4pathD2Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED0Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED1Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED2Ev");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE4swapERS6_");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE5resetEv");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEaSEOS6_");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC1EDn");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC1ERKSt10__weak_ptrIS3_LS5_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC1Ev");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC2EDn");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC2ERKSt10__weak_ptrIS3_LS5_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem16filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC2Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem16filesystem_error5_ImplESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem16filesystem_error5_ImplESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem16filesystem_error5_ImplESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem16filesystem_error5_ImplESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED0Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem16filesystem_error5_ImplESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED1Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem16filesystem_error5_ImplESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED2Ev");
++asm (".hidden _ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTISt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTISt23_Sp_counted_ptr_inplaceINSt10filesystem16filesystem_error5_ImplESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSNSt10filesystem16filesystem_errorE");
++asm (".hidden _ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt19_Sp_make_shared_tag");
++asm (".hidden _ZTSSt23_Sp_counted_ptr_inplaceINSt10filesystem16filesystem_error5_ImplESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTVSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZTVSt23_Sp_counted_ptr_inplaceINSt10filesystem16filesystem_error5_ImplESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZZNSt19_Sp_make_shared_tag5_S_tiEvE5__tag");
+--- libstdc++-v3/src/nonshared17/memory_resource.cc.jj	2019-05-13 10:33:09.463939355 +0200
++++ libstdc++-v3/src/nonshared17/memory_resource.cc	2019-05-14 19:58:13.234922248 +0200
+@@ -0,0 +1,52 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++17/memory_resource.cc"
++asm (".hidden _ZNKSt3pmr26synchronized_pool_resource11do_is_equalERKNS_15memory_resourceE");
++asm (".hidden _ZNKSt3pmr28unsynchronized_pool_resource11do_is_equalERKNS_15memory_resourceE");
++asm (".hidden _ZNSt3pmr15__pool_resource14_M_alloc_poolsEv");
++asm (".hidden _ZNSt3pmr15__pool_resource7releaseEv");
++asm (".hidden _ZNSt3pmr15__pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE");
++asm (".hidden _ZNSt3pmr15__pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE");
++asm (".hidden _ZNSt3pmr15__pool_resourceD1Ev");
++asm (".hidden _ZNSt3pmr15__pool_resourceD2Ev");
++asm (".hidden _ZNSt3pmr26synchronized_pool_resource15_M_alloc_tpoolsERSt10lock_guardISt12shared_mutexE");
++asm (".hidden _ZNSt3pmr26synchronized_pool_resource22_M_alloc_shared_tpoolsERSt10lock_guardISt12shared_mutexE");
++asm (".hidden _ZNSt3pmr26synchronized_pool_resource24_M_thread_specific_poolsEv");
++asm (".hidden _ZNSt3pmr26synchronized_pool_resource7_TPoolsD1Ev");
++asm (".hidden _ZNSt3pmr26synchronized_pool_resource7_TPoolsD2Ev");
++asm (".hidden _ZNSt3pmr26synchronized_pool_resourceD0Ev");
++asm (".hidden _ZNSt3pmr28unsynchronized_pool_resourceD0Ev");
++asm (".hidden _ZNSt3_V28__rotateIN9__gnu_cxx17__normal_iteratorIPNSt3pmr15__pool_resource9_BigBlockESt6vectorIS5_NS3_21polymorphic_allocatorIS5_EEEEEEET_SC_SC_SC_St26random_access_iterator_tag");
++asm (".hidden _ZTINSt3pmr15memory_resourceE");
++asm (".hidden _ZTSNSt3pmr15memory_resourceE");
++asm (".hidden _ZTSNSt3pmr26synchronized_pool_resourceE");
++asm (".hidden _ZTSNSt3pmr28unsynchronized_pool_resourceE");
++asm (".hidden _ZTVNSt3pmr26synchronized_pool_resourceE");
++asm (".hidden _ZTVNSt3pmr28unsynchronized_pool_resourceE");
++#ifdef __x86_64__
++asm (".hidden _ZNSt3pmr15__pool_resource10deallocateEPvmm");
++asm (".hidden _ZNSt3pmr15__pool_resource8allocateEmm");
++asm (".hidden _ZNSt3pmr28unsynchronized_pool_resource12_M_find_poolEm");
++asm (".hidden _ZNSt6vectorINSt3pmr15__pool_resource9_BigBlockENS0_21polymorphic_allocatorIS2_EEE17_M_realloc_insertIIRmS7_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S5_EEDpOT_");
++asm (".hidden _ZNSt6vectorINSt3pmr15__pool_resource9_BigBlockENS0_21polymorphic_allocatorIS2_EEE17_M_realloc_insertIJRmS7_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S5_EEDpOT_");
++#endif
+--- libstdc++-v3/src/nonshared17/fs_dir.cc.jj	2019-05-13 10:33:09.453939522 +0200
++++ libstdc++-v3/src/nonshared17/fs_dir.cc	2019-05-14 19:55:29.475655057 +0200
+@@ -0,0 +1,99 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++17/fs_dir.cc"
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE3getEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE6uniqueEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE9use_countEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EE3getEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EE6uniqueEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EE9use_countEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv");
++asm (".hidden _ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_");
++asm (".hidden _ZNSt10filesystem7__cxx114_Dir7advanceEbRSt10error_code");
++asm (".hidden _ZNSt10filesystem7__cxx114_DirD1Ev");
++asm (".hidden _ZNSt10filesystem7__cxx114_DirD2Ev");
++asm (".hidden _ZNSt10filesystem7__cxx114pathD1Ev");
++asm (".hidden _ZNSt10filesystem7__cxx114pathD2Ev");
++asm (".hidden _ZNSt10filesystem9_Dir_base7advanceEbRSt10error_code");
++asm (".hidden _ZNSt10filesystem9_Dir_baseC1EPKcbRSt10error_code");
++asm (".hidden _ZNSt10filesystem9_Dir_baseC2EPKcbRSt10error_code");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE4swapERS6_");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE5resetEv");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEaSEOS6_");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EDn");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1ERKSt10__weak_ptrIS3_LS5_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EDn");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2ERKSt10__weak_ptrIS3_LS5_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EE4swapERS5_");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EE5resetEv");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EDn");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1ERKSt10__weak_ptrIS2_LS4_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EDn");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2ERKSt10__weak_ptrIS2_LS4_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackESaIS3_ELN9__gnu_cxx12_Lock_policyE2EED0Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackESaIS3_ELN9__gnu_cxx12_Lock_policyE2EED1Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackESaIS3_ELN9__gnu_cxx12_Lock_policyE2EED2Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx114_DirESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx114_DirESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx114_DirESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx114_DirESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED0Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx114_DirESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED1Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx114_DirESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED2Ev");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114_DirESaIS2_EE12emplace_backIIS2_EEERS2_DpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114_DirESaIS2_EE12emplace_backIJS2_EEERS2_DpOT_");
++#ifndef _GLIBCXX_ASSERTIONS
++// When using -Wp,-D_GLIBCXX_ASSERTIONS, this symbol disappears from fs_dir.o.
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114_DirESaIS2_EE15_M_pop_back_auxEv");
++#endif
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114_DirESaIS2_EE16_M_push_back_auxIIRP11__dirstreamRKNS1_4pathEEEEvDpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114_DirESaIS2_EE16_M_push_back_auxIJRP11__dirstreamRKNS1_4pathEEEEvDpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114_DirESaIS2_EED1Ev");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114_DirESaIS2_EED2Ev");
++asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_");
++asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_");
++asm (".hidden _ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTISt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTISt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx114_DirESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt19_Sp_make_shared_tag");
++asm (".hidden _ZTSSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx114_DirESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTVSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTVSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx114_DirESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZZNSt19_Sp_make_shared_tag5_S_tiEvE5__tag");
++#ifdef __x86_64__
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114_DirESaIS2_EE17_M_reallocate_mapEmb");
++#endif
+--- libstdc++-v3/src/nonshared17/fs_path80.cc.jj	2019-05-14 19:05:08.134170792 +0200
++++ libstdc++-v3/src/nonshared17/fs_path80.cc	2019-05-14 19:06:35.872707647 +0200
+@@ -0,0 +1,24 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#define _GLIBCXX_NONSHARED_CXX17_80
++#include "fs_path.cc"
+--- libstdc++-v3/src/nonshared17/cow-fs_dir.cc.jj	2019-05-13 10:33:09.439939755 +0200
++++ libstdc++-v3/src/nonshared17/cow-fs_dir.cc	2019-05-14 20:00:52.864258362 +0200
+@@ -0,0 +1,97 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++17/cow-fs_dir.cc"
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE3getEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE6uniqueEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE9use_countEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EE3getEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EE6uniqueEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EE9use_countEv");
++asm (".hidden _ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv");
++asm (".hidden _ZNSt10filesystem28recursive_directory_iteratoraSERKS0_");
++asm (".hidden _ZNSt10filesystem4_Dir7advanceEbRSt10error_code");
++asm (".hidden _ZNSt10filesystem4_DirD1Ev");
++asm (".hidden _ZNSt10filesystem4_DirD2Ev");
++asm (".hidden _ZNSt10filesystem4pathD1Ev");
++asm (".hidden _ZNSt10filesystem4pathD2Ev");
++asm (".hidden _ZNSt10filesystem9_Dir_base7advanceEbRSt10error_code");
++asm (".hidden _ZNSt10filesystem9_Dir_baseC1EPKcbRSt10error_code");
++asm (".hidden _ZNSt10filesystem9_Dir_baseC2EPKcbRSt10error_code");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE4swapERS5_");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EE5resetEv");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EDn");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1ERKSt10__weak_ptrIS2_LS4_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EDn");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2ERKSt10__weak_ptrIS2_LS4_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EE4swapERS4_");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EE5resetEv");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EDn");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1ERKSt10__weak_ptrIS1_LS3_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EDn");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2ERKSt10__weak_ptrIS1_LS3_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem28recursive_directory_iterator10_Dir_stackESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem28recursive_directory_iterator10_Dir_stackESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem28recursive_directory_iterator10_Dir_stackESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem28recursive_directory_iterator10_Dir_stackESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED0Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem28recursive_directory_iterator10_Dir_stackESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED1Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem28recursive_directory_iterator10_Dir_stackESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED2Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem4_DirESaIS1_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem4_DirESaIS1_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem4_DirESaIS1_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem4_DirESaIS1_ELN9__gnu_cxx12_Lock_policyE2EED0Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem4_DirESaIS1_ELN9__gnu_cxx12_Lock_policyE2EED1Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem4_DirESaIS1_ELN9__gnu_cxx12_Lock_policyE2EED2Ev");
++asm (".hidden _ZNSt5dequeINSt10filesystem4_DirESaIS1_EE12emplace_backIIS1_EEERS1_DpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem4_DirESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_");
++#ifndef _GLIBCXX_ASSERTIONS
++// When using -Wp,-D_GLIBCXX_ASSERTIONS, this symbol disappears.
++asm (".hidden _ZNSt5dequeINSt10filesystem4_DirESaIS1_EE15_M_pop_back_auxEv");
++#endif
++asm (".hidden _ZNSt5dequeINSt10filesystem4_DirESaIS1_EE16_M_push_back_auxIIRP11__dirstreamRKNS0_4pathEEEEvDpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem4_DirESaIS1_EE16_M_push_back_auxIJRP11__dirstreamRKNS0_4pathEEEEvDpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem4_DirESaIS1_EED1Ev");
++asm (".hidden _ZNSt5dequeINSt10filesystem4_DirESaIS1_EED2Ev");
++asm (".hidden _ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTISt23_Sp_counted_ptr_inplaceINSt10filesystem28recursive_directory_iterator10_Dir_stackESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTISt23_Sp_counted_ptr_inplaceINSt10filesystem4_DirESaIS1_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt19_Sp_make_shared_tag");
++asm (".hidden _ZTSSt23_Sp_counted_ptr_inplaceINSt10filesystem28recursive_directory_iterator10_Dir_stackESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt23_Sp_counted_ptr_inplaceINSt10filesystem4_DirESaIS1_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTVSt23_Sp_counted_ptr_inplaceINSt10filesystem28recursive_directory_iterator10_Dir_stackESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTVSt23_Sp_counted_ptr_inplaceINSt10filesystem4_DirESaIS1_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZZNSt19_Sp_make_shared_tag5_S_tiEvE5__tag");
++#ifdef __x86_64__
++asm (".hidden _ZNSt5dequeINSt10filesystem4_DirESaIS1_EE17_M_reallocate_mapEmb");
++#endif
+--- libstdc++-v3/src/nonshared17/Makefile.am.jj	2019-05-13 10:28:30.949590546 +0200
++++ libstdc++-v3/src/nonshared17/Makefile.am	2019-05-14 19:08:28.689824563 +0200
+@@ -0,0 +1,130 @@
++## Makefile for the C++17 sources of the GNU C++ Standard library.
++##
++## Copyright (C) 1997-2019 Free Software Foundation, Inc.
++##
++## This file is part of the libstdc++ version 3 distribution.
++## Process this file with automake to produce Makefile.in.
++
++## 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
++## <http://www.gnu.org/licenses/>.
++
++include $(top_srcdir)/fragment.am
++
++# Convenience library for C++17 runtime.
++noinst_LTLIBRARIES = libnonshared17convenience44.la \
++		     libnonshared17convenience48.la \
++		     libnonshared17convenience80.la
++
++headers =
++
++if ENABLE_DUAL_ABI
++extra_string_inst_sources = cow-string-inst.cc
++extra_fs_sources = \
++	cow-fs_dir.cc \
++	cow-fs_ops.cc \
++	cow-fs_path.cc
++else
++extra_string_inst_sources =
++extra_fs_sources =
++endif
++
++if ENABLE_EXTERN_TEMPLATE
++# XTEMPLATE_FLAGS = -fno-implicit-templates
++inst_sources = \
++	ostream-inst.cc \
++	string-inst.cc \
++	$(extra_string_inst_sources)
++else
++# XTEMPLATE_FLAGS =
++inst_sources =
++endif
++
++sources = \
++	fs_dir.cc \
++	fs_ops.cc \
++	memory_resource.cc \
++	$(extra_fs_sources)
++sources4448 = \
++	fs_path.cc
++sources80 = \
++	fs_path80.cc
++
++vpath % $(top_srcdir)/src/nonshared17
++
++libnonshared17convenience44_la_SOURCES = $(sources) $(sources4448) $(inst_sources)
++libnonshared17convenience48_la_SOURCES = $(sources) $(sources4448) $(inst_sources)
++libnonshared17convenience80_la_SOURCES = $(sources) $(sources80) $(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 $@
+--- libstdc++-v3/src/nonshared17/fs_path.cc.jj	2019-05-13 10:33:09.459939422 +0200
++++ libstdc++-v3/src/nonshared17/fs_path.cc	2019-05-14 19:07:12.668093480 +0200
+@@ -0,0 +1,79 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++17/fs_path.cc"
++asm (".hidden _ZNKSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNKSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE3getEv");
++asm (".hidden _ZNKSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE6uniqueEv");
++asm (".hidden _ZNKSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE9use_countEv");
++asm (".hidden _ZNKSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEcvbEv");
++asm (".hidden _ZNKSt23__codecvt_abstract_baseIwc11__mbstate_tE2inERS0_PKcS4_RS4_PwS6_RS6_");
++asm (".hidden _ZNKSt23__codecvt_abstract_baseIwc11__mbstate_tE3outERS0_PKwS4_RS4_PcS6_RS6_");
++asm (".hidden _ZNSt10filesystem7__cxx114path19preferred_separatorE");
++asm (".hidden _ZNSt10filesystem7__cxx114path5_List5clearEv");
++asm (".hidden _ZNSt10filesystem7__cxx114path5_List5_Impl13_M_erase_fromEPKNS1_5_CmptE");
++asm (".hidden _ZNSt10filesystem7__cxx114path5_List7reserveEib");
++asm (".hidden _ZNSt10filesystem7__cxx114path5_ListaSERKS2_");
++asm (".hidden _ZNSt10filesystem7__cxx114path5_ListC2ERKS2_");
++asm (".hidden _ZNSt10filesystem7__cxx114path5_ListC2Ev");
++asm (".hidden _ZNSt10filesystem7__cxx114pathD1Ev");
++asm (".hidden _ZNSt10filesystem7__cxx114pathD2Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED0Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED1Ev");
++asm (".hidden _ZNSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EED2Ev");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE4swapERS7_");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EE5resetEv");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEaSEOS7_");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC1EDn");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC1EOS7_");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC1ERKSt10__weak_ptrIS4_LS6_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC1Ev");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC2EDn");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC2EOS7_");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC2ERKSt10__weak_ptrIS4_LS6_2EESt9nothrow_t");
++asm (".hidden _ZNSt12__shared_ptrIKNSt10filesystem7__cxx1116filesystem_error5_ImplELN9__gnu_cxx12_Lock_policyE2EEC2Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1116filesystem_error5_ImplESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1116filesystem_error5_ImplESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1116filesystem_error5_ImplESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1116filesystem_error5_ImplESaIS3_ELN9__gnu_cxx12_Lock_policyE2EED0Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1116filesystem_error5_ImplESaIS3_ELN9__gnu_cxx12_Lock_policyE2EED1Ev");
++asm (".hidden _ZNSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1116filesystem_error5_ImplESaIS3_ELN9__gnu_cxx12_Lock_policyE2EED2Ev");
++#ifdef _GLIBCXX_NONSHARED_CXX17_80
++// Missing in fs_path.o on s390x.
++#if !defined (__s390x__)
++asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag");
++asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag");
++#endif
++#endif
++asm (".hidden _ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTISt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTISt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1116filesystem_error5_ImplESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSNSt10filesystem7__cxx1116filesystem_errorE");
++asm (".hidden _ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTSSt19_Sp_make_shared_tag");
++asm (".hidden _ZTSSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1116filesystem_error5_ImplESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZTVSt12codecvt_utf8IwLm1114111ELSt12codecvt_mode0EE");
++asm (".hidden _ZTVSt23_Sp_counted_ptr_inplaceINSt10filesystem7__cxx1116filesystem_error5_ImplESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE");
++asm (".hidden _ZZNSt19_Sp_make_shared_tag5_S_tiEvE5__tag");
+--- libstdc++-v3/src/nonshared17/cow-string-inst.cc.jj	2019-05-13 10:33:09.451939555 +0200
++++ libstdc++-v3/src/nonshared17/cow-string-inst.cc	2019-05-14 18:43:03.283254489 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++17/cow-string-inst.cc"
+--- libstdc++-v3/src/nonshared17/Makefile.in.jj	2019-05-13 10:33:21.137744411 +0200
++++ libstdc++-v3/src/nonshared17/Makefile.in	2019-05-14 19:14:28.595793540 +0200
+@@ -0,0 +1,788 @@
++# Makefile.in generated by automake 1.15.1 from Makefile.am.
++# @configure_input@
++
++# Copyright (C) 1994-2019 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/nonshared17
++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)
++libnonshared17convenience44_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 memory_resource.lo \
++	$(am__objects_1)
++am__objects_3 = fs_path.lo
++@ENABLE_DUAL_ABI_TRUE@am__objects_4 = cow-string-inst.lo
++@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_5 = ostream-inst.lo \
++@ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst.lo $(am__objects_4)
++am_libnonshared17convenience44_la_OBJECTS = $(am__objects_2) \
++	$(am__objects_3) $(am__objects_5)
++libnonshared17convenience44_la_OBJECTS =  \
++	$(am_libnonshared17convenience44_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 = 
++libnonshared17convenience48_la_LIBADD =
++am_libnonshared17convenience48_la_OBJECTS = $(am__objects_2) \
++	$(am__objects_3) $(am__objects_5)
++libnonshared17convenience48_la_OBJECTS =  \
++	$(am_libnonshared17convenience48_la_OBJECTS)
++libnonshared17convenience80_la_LIBADD =
++am__objects_6 = fs_path80.lo
++am_libnonshared17convenience80_la_OBJECTS = $(am__objects_2) \
++	$(am__objects_6) $(am__objects_5)
++libnonshared17convenience80_la_OBJECTS =  \
++	$(am_libnonshared17convenience80_la_OBJECTS)
++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 = $(libnonshared17convenience44_la_SOURCES) \
++	$(libnonshared17convenience48_la_SOURCES) \
++	$(libnonshared17convenience80_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@
++CCAS = @CCAS@
++CCASFLAGS = @CCASFLAGS@
++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 = libnonshared17convenience44.la \
++		     libnonshared17convenience48.la \
++		     libnonshared17convenience80.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 \
++	memory_resource.cc \
++	$(extra_fs_sources)
++
++sources4448 = \
++	fs_path.cc
++
++sources80 = \
++	fs_path80.cc
++
++libnonshared17convenience44_la_SOURCES = $(sources) $(sources4448) $(inst_sources)
++libnonshared17convenience48_la_SOURCES = $(sources) $(sources4448) $(inst_sources)
++libnonshared17convenience80_la_SOURCES = $(sources) $(sources80) $(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/nonshared17/Makefile'; \
++	$(am__cd) $(top_srcdir) && \
++	  $(AUTOMAKE) --foreign --ignore-deps src/nonshared17/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}; \
++	}
++
++libnonshared17convenience44.la: $(libnonshared17convenience44_la_OBJECTS) $(libnonshared17convenience44_la_DEPENDENCIES) $(EXTRA_libnonshared17convenience44_la_DEPENDENCIES) 
++	$(AM_V_CXXLD)$(CXXLINK)  $(libnonshared17convenience44_la_OBJECTS) $(libnonshared17convenience44_la_LIBADD) $(LIBS)
++
++libnonshared17convenience48.la: $(libnonshared17convenience48_la_OBJECTS) $(libnonshared17convenience48_la_DEPENDENCIES) $(EXTRA_libnonshared17convenience48_la_DEPENDENCIES) 
++	$(AM_V_CXXLD)$(CXXLINK)  $(libnonshared17convenience48_la_OBJECTS) $(libnonshared17convenience48_la_LIBADD) $(LIBS)
++
++libnonshared17convenience80.la: $(libnonshared17convenience80_la_OBJECTS) $(libnonshared17convenience80_la_DEPENDENCIES) $(EXTRA_libnonshared17convenience80_la_DEPENDENCIES) 
++	$(AM_V_CXXLD)$(CXXLINK)  $(libnonshared17convenience80_la_OBJECTS) $(libnonshared17convenience80_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/nonshared17
++
++# 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:
+--- libstdc++-v3/src/nonshared17/fs_ops.cc.jj	2019-05-13 10:33:09.456939472 +0200
++++ libstdc++-v3/src/nonshared17/fs_ops.cc	2019-05-14 20:00:02.088105705 +0200
+@@ -0,0 +1,53 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++17/fs_ops.cc"
++asm (".hidden _ZN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEED0Ev");
++asm (".hidden _ZN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEED1Ev");
++asm (".hidden _ZN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEED2Ev");
++asm (".hidden _ZNSt10filesystem12do_copy_fileEPKcS1_NS_26copy_options_existing_fileEP4statS4_RSt10error_code");
++asm (".hidden _ZNSt10filesystem7__cxx114pathD1Ev");
++asm (".hidden _ZNSt10filesystem7__cxx114pathD2Ev");
++asm (".hidden _ZNSt15_Sp_counted_ptrIDnLN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv");
++asm (".hidden _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EE12emplace_backIIS2_EEERS2_DpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EE12emplace_backIJS2_EEERS2_DpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EE16_M_push_back_auxIIRKS2_EEEvDpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EE16_M_push_back_auxIJRKS2_EEEvDpOT_");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EE19_M_range_insert_auxINS2_8iteratorEEEvSt15_Deque_iteratorIS2_RS2_PS2_ET_SB_St20forward_iterator_tag");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EED1Ev");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EED2Ev");
++asm (".hidden _ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE");
++asm (".hidden _ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE");
++asm (".hidden _ZTVN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE");
++#ifdef __x86_64__
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EE17_M_reallocate_mapEmb");
++asm (".hidden _ZN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEC1EiSt13_Ios_Openmodem");
++asm (".hidden _ZN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEC2EiSt13_Ios_Openmodem");
++asm (".hidden _ZNSt10filesystem8do_spaceEPKcRmS2_S2_RSt10error_code");
++asm (".hidden _ZNSt11_Deque_baseINSt10filesystem7__cxx114pathESaIS2_EE17_M_initialize_mapEm");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EE13_M_insert_auxINS2_8iteratorEEEvSt15_Deque_iteratorIS2_RS2_PS2_ET_SB_m");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EE23_M_new_elements_at_backEm");
++asm (".hidden _ZNSt5dequeINSt10filesystem7__cxx114pathESaIS2_EE24_M_new_elements_at_frontEm");
++asm (".hidden _ZSt13move_backwardINSt10filesystem7__cxx114pathEESt15_Deque_iteratorIT_RS4_PS4_ES3_IS4_RKS4_PS8_ESB_S7_");
++#endif
+--- libstdc++-v3/src/nonshared17/ostream-inst.cc.jj	2019-05-13 10:33:09.466939305 +0200
++++ libstdc++-v3/src/nonshared17/ostream-inst.cc	2019-05-14 18:43:03.283254489 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++17/ostream-inst.cc"
+--- libstdc++-v3/src/nonshared17/string-inst.cc.jj	2019-05-13 10:33:09.469939256 +0200
++++ libstdc++-v3/src/nonshared17/string-inst.cc	2019-05-14 18:43:03.283254489 +0200
+@@ -0,0 +1,23 @@
++// Copyright (C) 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++#include "../c++17/string-inst.cc"
+--- libstdc++-v3/src/Makefile.am.jj	2019-04-25 20:01:51.768216957 +0200
++++ libstdc++-v3/src/Makefile.am	2019-05-13 10:35:10.066925290 +0200
+@@ -29,7 +29,7 @@ filesystem_dir =
+ endif
+ 
+ ## Keep this list sync'd with acinclude.m4:GLIBCXX_CONFIGURE.
+-SUBDIRS = c++98 c++11 c++17 $(filesystem_dir)
++SUBDIRS = c++98 c++11 c++17 $(filesystem_dir) nonshared98 nonshared11 nonshared17
+ 
+ # Cross compiler support.
+ if VTV_CYGMIN
+@@ -38,6 +38,10 @@ else
+ toolexeclib_LTLIBRARIES = libstdc++.la
+ endif
+ 
++noinst_LTLIBRARIES = libstdc++_nonshared44.la \
++		     libstdc++_nonshared48.la \
++		     libstdc++_nonshared80.la
++
+ if VTV_CYGMIN
+ vtv_stubs.cc:
+ 	rm -f $@
+@@ -74,6 +78,41 @@ endif
+ parallel_compat_sources = \
+ 	compatibility-parallel_list.cc  compatibility-parallel_list-2.cc
+ 
++libstdc___nonshared44_la_SOURCES =
++
++libstdc___nonshared44_la_LIBADD = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience44.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience44.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience44.la
++
++libstdc___nonshared44_la_DEPENDENCIES = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience44.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience44.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience44.la
++
++libstdc___nonshared48_la_SOURCES =
++
++libstdc___nonshared48_la_LIBADD = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience48.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience48.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience48.la
++
++libstdc___nonshared48_la_DEPENDENCIES = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience48.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience48.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience48.la
++
++libstdc___nonshared80_la_SOURCES =
++
++libstdc___nonshared80_la_LIBADD = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience80.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience80.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience80.la
++
++libstdc___nonshared80_la_DEPENDENCIES = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience80.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience80.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience80.la
+ 
+ cxx98_sources = \
+ 	compatibility.cc \
+--- libstdc++-v3/src/Makefile.in.jj	2019-04-25 20:01:51.728217574 +0200
++++ libstdc++-v3/src/Makefile.in	2019-05-14 19:14:28.470795644 +0200
+@@ -147,7 +147,7 @@ am__uninstall_files_from_dir = { \
+          $(am__cd) "$$dir" && rm -f $$files; }; \
+   }
+ am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
+-LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
++LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
+ am__DEPENDENCIES_1 =
+ @GLIBCXX_LDBL_COMPAT_TRUE@am__objects_1 = compatibility-ldbl.lo
+ am__objects_2 = compatibility.lo compatibility-debug_list.lo \
+@@ -159,6 +159,19 @@ am_libstdc___la_OBJECTS = $(am__objects_
+ libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS)
+ @VTV_CYGMIN_FALSE@am_libstdc___la_rpath = -rpath $(toolexeclibdir)
+ @VTV_CYGMIN_TRUE@am_libstdc___la_rpath = -rpath $(toolexeclibdir)
++am_libstdc___nonshared44_la_OBJECTS =
++libstdc___nonshared44_la_OBJECTS =  \
++	$(am_libstdc___nonshared44_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_libstdc___nonshared48_la_OBJECTS =
++libstdc___nonshared48_la_OBJECTS =  \
++	$(am_libstdc___nonshared48_la_OBJECTS)
++am_libstdc___nonshared80_la_OBJECTS =
++libstdc___nonshared80_la_OBJECTS =  \
++	$(am_libstdc___nonshared80_la_OBJECTS)
+ libvtv_la_LIBADD =
+ @VTV_CYGMIN_TRUE@am_libvtv_la_OBJECTS = vtv_stubs.lo
+ libvtv_la_OBJECTS = $(am_libvtv_la_OBJECTS)
+@@ -180,10 +193,6 @@ depcomp =
+ am__depfiles_maybe =
+ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+-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_CXX = $(am__v_CXX_@AM_V@)
+ am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+ am__v_CXX_0 = @echo "  CXX     " $@;
+@@ -193,7 +202,27 @@ 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 = $(libstdc___la_SOURCES) $(libvtv_la_SOURCES)
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
++	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
++	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
++	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
++	$(AM_CFLAGS) $(CFLAGS)
++AM_V_CC = $(am__v_CC_@AM_V@)
++am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
++am__v_CC_0 = @echo "  CC      " $@;
++am__v_CC_1 = 
++CCLD = $(CC)
++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
++	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
++AM_V_CCLD = $(am__v_CCLD_@AM_V@)
++am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
++am__v_CCLD_0 = @echo "  CCLD    " $@;
++am__v_CCLD_1 = 
++SOURCES = $(libstdc___la_SOURCES) $(libstdc___nonshared44_la_SOURCES) \
++	$(libstdc___nonshared48_la_SOURCES) \
++	$(libstdc___nonshared80_la_SOURCES) $(libvtv_la_SOURCES)
+ RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ 	ctags-recursive dvi-recursive html-recursive info-recursive \
+ 	install-data-recursive install-dvi-recursive \
+@@ -233,7 +262,8 @@ am__define_uniq_tagged_files = \
+   done | $(am__uniquify_input)`
+ ETAGS = etags
+ CTAGS = ctags
+-DIST_SUBDIRS = c++98 c++11 c++17 filesystem
++DIST_SUBDIRS = c++98 c++11 c++17 filesystem nonshared98 nonshared11 \
++	nonshared17
+ ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
+ ACLOCAL = @ACLOCAL@
+ ALLOCATOR_H = @ALLOCATOR_H@
+@@ -252,6 +282,8 @@ AWK = @AWK@
+ BASIC_FILE_CC = @BASIC_FILE_CC@
+ BASIC_FILE_H = @BASIC_FILE_H@
+ CC = @CC@
++CCAS = @CCAS@
++CCASFLAGS = @CCASFLAGS@
+ CCODECVT_CC = @CCODECVT_CC@
+ CCOLLATE_CC = @CCOLLATE_CC@
+ CCTYPE_CC = @CCTYPE_CC@
+@@ -462,11 +494,15 @@ WARN_CXXFLAGS = \
+ AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)
+ @ENABLE_FILESYSTEM_TS_FALSE@filesystem_dir = 
+ @ENABLE_FILESYSTEM_TS_TRUE@filesystem_dir = filesystem
+-SUBDIRS = c++98 c++11 c++17 $(filesystem_dir)
++SUBDIRS = c++98 c++11 c++17 $(filesystem_dir) nonshared98 nonshared11 nonshared17
+ @VTV_CYGMIN_FALSE@toolexeclib_LTLIBRARIES = libstdc++.la
+ 
+ # Cross compiler support.
+ @VTV_CYGMIN_TRUE@toolexeclib_LTLIBRARIES = libvtv.la libstdc++.la
++noinst_LTLIBRARIES = libstdc++_nonshared44.la \
++		     libstdc++_nonshared48.la \
++		     libstdc++_nonshared80.la
++
+ @VTV_CYGMIN_TRUE@libvtv_la_SOURCES = vtv_stubs.cc
+ @VTV_CYGMIN_TRUE@libvtv_la_LDFLAGS = $(lt_host_flags)
+ @VTV_CYGMIN_TRUE@libvtv_la_AM_CXXFLAGS = \
+@@ -484,6 +520,39 @@ SUBDIRS = c++98 c++11 c++17 $(filesystem
+ parallel_compat_sources = \
+ 	compatibility-parallel_list.cc  compatibility-parallel_list-2.cc
+ 
++libstdc___nonshared44_la_SOURCES = 
++libstdc___nonshared44_la_LIBADD = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience44.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience44.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience44.la
++
++libstdc___nonshared44_la_DEPENDENCIES = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience44.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience44.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience44.la
++
++libstdc___nonshared48_la_SOURCES = 
++libstdc___nonshared48_la_LIBADD = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience48.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience48.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience48.la
++
++libstdc___nonshared48_la_DEPENDENCIES = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience48.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience48.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience48.la
++
++libstdc___nonshared80_la_SOURCES = 
++libstdc___nonshared80_la_LIBADD = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience80.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience80.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience80.la
++
++libstdc___nonshared80_la_DEPENDENCIES = \
++	$(top_builddir)/src/nonshared98/libnonshared98convenience80.la \
++	$(top_builddir)/src/nonshared11/libnonshared11convenience80.la \
++	$(top_builddir)/src/nonshared17/libnonshared17convenience80.la
++
+ cxx98_sources = \
+ 	compatibility.cc \
+ 	compatibility-debug_list.cc \
+@@ -658,6 +727,17 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(
+ 	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}; \
++	}
++
+ install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
+ 	@$(NORMAL_INSTALL)
+ 	@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
+@@ -696,6 +776,15 @@ clean-toolexeclibLTLIBRARIES:
+ libstdc++.la: $(libstdc___la_OBJECTS) $(libstdc___la_DEPENDENCIES) $(EXTRA_libstdc___la_DEPENDENCIES) 
+ 	$(AM_V_GEN)$(libstdc___la_LINK) $(am_libstdc___la_rpath) $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) $(LIBS)
+ 
++libstdc++_nonshared44.la: $(libstdc___nonshared44_la_OBJECTS) $(libstdc___nonshared44_la_DEPENDENCIES) $(EXTRA_libstdc___nonshared44_la_DEPENDENCIES) 
++	$(AM_V_CCLD)$(LINK)  $(libstdc___nonshared44_la_OBJECTS) $(libstdc___nonshared44_la_LIBADD) $(LIBS)
++
++libstdc++_nonshared48.la: $(libstdc___nonshared48_la_OBJECTS) $(libstdc___nonshared48_la_DEPENDENCIES) $(EXTRA_libstdc___nonshared48_la_DEPENDENCIES) 
++	$(AM_V_CCLD)$(LINK)  $(libstdc___nonshared48_la_OBJECTS) $(libstdc___nonshared48_la_LIBADD) $(LIBS)
++
++libstdc++_nonshared80.la: $(libstdc___nonshared80_la_OBJECTS) $(libstdc___nonshared80_la_DEPENDENCIES) $(EXTRA_libstdc___nonshared80_la_DEPENDENCIES) 
++	$(AM_V_CCLD)$(LINK)  $(libstdc___nonshared80_la_OBJECTS) $(libstdc___nonshared80_la_LIBADD) $(LIBS)
++
+ libvtv.la: $(libvtv_la_OBJECTS) $(libvtv_la_DEPENDENCIES) $(EXTRA_libvtv_la_DEPENDENCIES) 
+ 	$(AM_V_GEN)$(libvtv_la_LINK) $(am_libvtv_la_rpath) $(libvtv_la_OBJECTS) $(libvtv_la_LIBADD) $(LIBS)
+ 
+@@ -860,7 +949,8 @@ maintainer-clean-generic:
+ clean: clean-recursive
+ 
+ clean-am: clean-generic clean-libtool clean-local \
+-	clean-toolexeclibLTLIBRARIES mostlyclean-am
++	clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES \
++	mostlyclean-am
+ 
+ distclean: distclean-recursive
+ 	-rm -f Makefile
+@@ -930,14 +1020,14 @@ uninstall-am: uninstall-toolexeclibLTLIB
+ 
+ .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+ 	check check-am clean clean-generic clean-libtool clean-local \
+-	clean-toolexeclibLTLIBRARIES 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-data-local 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 \
++	clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES \
++	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-data-local 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 \
+ 	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
+ 	installdirs installdirs-am maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-compile \
+--- libstdc++-v3/src/c++11/thread.cc.jj	2019-04-25 20:01:51.855215613 +0200
++++ libstdc++-v3/src/c++11/thread.cc	2019-05-13 12:31:31.101569799 +0200
+@@ -101,6 +101,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   thread::_State::~_State() = default;
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_44
+   void
+   thread::join()
+   {
+@@ -128,6 +129,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+     _M_id = id();
+   }
++#endif
+ 
+   void
+   thread::_M_start_thread(_State_ptr state, void (*)())
+@@ -141,6 +143,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   }
+ 
+ #if _GLIBCXX_THREAD_ABI_COMPAT
++#ifndef _GLIBCXX_NONSHARED_CXX11_44
+   void
+   thread::_M_start_thread(__shared_base_type __b)
+   {
+@@ -154,6 +157,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+     _M_start_thread(std::move(__b), nullptr);
+   }
++#endif
+ 
+   void
+   thread::_M_start_thread(__shared_base_type __b, void (*)())
+@@ -171,6 +175,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   }
+ #endif
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_48
+   unsigned int
+   thread::hardware_concurrency() noexcept
+   {
+@@ -179,9 +184,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+       __n = 0;
+     return __n;
+   }
++#endif
+ 
+ namespace this_thread
+ {
++#ifndef _GLIBCXX_NONSHARED_CXX11_48
+   void
+   __sleep_for(chrono::seconds __s, chrono::nanoseconds __ns)
+   {
+@@ -230,6 +237,7 @@ namespace this_thread
+     ::Sleep(chrono::milliseconds(__s).count() + ms);
+ #endif
+   }
++#endif
+ }
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+--- libstdc++-v3/src/c++11/condition_variable.cc.jj	2019-04-25 20:01:51.847215736 +0200
++++ libstdc++-v3/src/c++11/condition_variable.cc	2019-05-13 10:20:36.336516569 +0200
+@@ -31,6 +31,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11
+ #ifdef __GTHREAD_COND_INIT
+   condition_variable::condition_variable() noexcept = default;
+ #else
+@@ -77,6 +78,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+     if (__e)
+       __throw_system_error(__e);
+   }
++#endif
+ 
+   extern void
+   __at_thread_exit(__at_thread_exit_elt*);
+--- libstdc++-v3/src/c++11/system_error.cc.jj	2019-04-25 20:01:51.854215629 +0200
++++ libstdc++-v3/src/c++11/system_error.cc	2019-05-13 10:20:36.336516569 +0200
+@@ -345,7 +345,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   const error_category&
+   _V2::generic_category() noexcept { return generic_category_instance; }
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11
+   system_error::~system_error() noexcept = default;
++#endif
+ 
+   error_condition
+   error_category::default_error_condition(int __i) const noexcept
+@@ -360,9 +362,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   error_category::equivalent(const error_code& __code, int __i) const noexcept
+   { return *this == __code.category() && __code.value() == __i; }
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11
+   error_condition
+   error_code::default_error_condition() const noexcept
+   { return category().default_error_condition(value()); }
++#endif
+ 
+ #if _GLIBCXX_USE_CXX11_ABI
+   // Return error_category::message() as a COW string
+--- libstdc++-v3/src/c++11/future.cc.jj	2019-04-25 20:01:51.851215675 +0200
++++ libstdc++-v3/src/c++11/future.cc	2019-05-13 12:30:29.266601894 +0200
+@@ -25,6 +25,7 @@
+ #include <future>
+ #include <bits/functexcept.h>
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_48
+ namespace
+ {
+   struct future_error_category : public std::error_category
+@@ -66,6 +67,7 @@ namespace
+     return __fec;
+   }
+ }
++#endif
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+@@ -75,6 +77,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   __throw_future_error(int __i __attribute__((unused)))
+   { _GLIBCXX_THROW_OR_ABORT(future_error(make_error_code(future_errc(__i)))); }
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_48
+   const error_category& future_category() noexcept
+   { return __future_category_instance(); }
+ 
+@@ -82,11 +85,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   const char*
+   future_error::what() const noexcept { return logic_error::what(); }
++#endif
+ 
+ #ifdef _GLIBCXX_HAS_GTHREADS
++#ifndef _GLIBCXX_NONSHARED_CXX11_48
+   __future_base::_Result_base::_Result_base() = default;
+ 
+   __future_base::_Result_base::~_Result_base() = default;
++#endif
+ 
+   void
+   __future_base::_State_baseV2::_Make_ready::_S_run(void* p)
+--- libstdc++-v3/src/c++11/cxx11-ios_failure.cc.jj	2019-04-25 20:01:51.855215613 +0200
++++ libstdc++-v3/src/c++11/cxx11-ios_failure.cc	2019-05-14 15:34:03.482631472 +0200
+@@ -42,6 +42,7 @@
+ # error This file should not be compiled for this configuration.
+ #endif
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
+ namespace
+ {
+   struct io_error_category : std::error_category
+@@ -75,11 +76,13 @@ namespace
+   }
+ 
+ } // namespace
++#endif
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
+   const error_category&
+   iostream_category() noexcept
+   { return __io_category_instance(); }
+@@ -99,6 +102,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   const char*
+   ios_base::failure::what() const throw()
+   { return runtime_error::what(); }
++#endif
+ 
+ #if __cpp_rtti
+   // These functions are defined in src/c++98/ios_failure.cc
+@@ -164,9 +168,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   using __ios_failure = ios::failure;
+ #endif
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
+   void
+   __throw_ios_failure(const char* __s __attribute__((unused)))
+   { _GLIBCXX_THROW_OR_ABORT(__ios_failure(_(__s))); }
++#endif
+ 
+   void
+   __throw_ios_failure(const char* str __attribute__((unused)),
+--- libstdc++-v3/src/c++11/compatibility-c++0x.cc.jj	2019-04-25 20:01:51.856215597 +0200
++++ libstdc++-v3/src/c++11/compatibility-c++0x.cc	2019-05-13 12:38:36.167474881 +0200
+@@ -46,6 +46,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_44
+   // gcc-4.4.0
+   // <mutex> exported std::lock_error
+ #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
+@@ -131,10 +132,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+     };
+     constexpr bool system_clock::is_monotonic;
+   } // namespace chrono
++#endif
+ 
+   // gcc-5 replaces this with _V2::error_category
+   class error_category
+   {
++#ifdef _GLIBCXX_NONSHARED_CXX11_44
++    // Ugly hack.  Ensure we don't emit the virtual table and
++    // use system libstdc++.so.6 one instead.
++    virtual void dummy();
++#endif
++
+   public:
+     error_category() noexcept;
+ 
+@@ -177,6 +185,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   error_category::~error_category() noexcept = default;
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_44
+   namespace
+   {
+     using std::string;
+@@ -251,6 +260,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+       return __code.value() == __i;
+     return false;
+   }
++#endif
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ }
+--- libstdc++-v3/src/c++11/shared_ptr.cc.jj	2019-04-25 20:01:51.848215721 +0200
++++ libstdc++-v3/src/c++11/shared_ptr.cc	2019-05-14 15:13:49.113921659 +0200
+@@ -43,11 +43,14 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
++#ifndef _GLIBCXX_NONSHARED_CXX11_48
+   bad_weak_ptr::~bad_weak_ptr() noexcept = default;
+ 
+   char const*
+   bad_weak_ptr::what() const noexcept
+   { return "bad_weak_ptr"; }
++#endif
+ 
+ #ifdef __GTHREADS
+   namespace
+@@ -93,6 +96,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+       }
+   }
+ #endif
++#endif
+ 
+   bool
+   _Sp_make_shared_tag::_S_eq(const type_info& ti) noexcept
+--- libstdc++-v3/src/c++11/codecvt.cc.jj	2019-04-25 20:01:51.856215597 +0200
++++ libstdc++-v3/src/c++11/codecvt.cc	2019-05-14 12:42:46.092151063 +0200
+@@ -30,6 +30,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
++//#ifndef _GLIBCXX_NONSHARED_CXX11_80
+   // The standard doesn't define these operators, which is annoying.
+   static underlying_type<codecvt_mode>::type
+   to_integer(codecvt_mode m)
+@@ -43,6 +44,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   static codecvt_mode operator~(codecvt_mode m)
+   { return codecvt_mode(~to_integer(m)); }
++//#endif
+ 
+ namespace
+ {
+@@ -738,6 +740,7 @@ namespace
+   }
+ }
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
+ // Define members of codecvt<char16_t, char, mbstate_t> specialization.
+ // Converts from UTF-8 to UTF-16.
+ 
+@@ -885,6 +888,7 @@ codecvt<char32_t, char, mbstate_t>::do_m
+   // up to 4 UTF-8 code units.
+   return 4;
+ }
++#endif
+ 
+ #if defined(_GLIBCXX_USE_CHAR8_T)
+ // Define members of codecvt<char16_t, char8_t, mbstate_t> specialization.
+@@ -1036,6 +1040,7 @@ codecvt<char32_t, char8_t, mbstate_t>::d
+ }
+ #endif // _GLIBCXX_USE_CHAR8_T
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
+ // Define members of codecvt_utf8<char16_t> base class implementation.
+ // Converts from UTF-8 to UCS-2.
+ 
+@@ -1791,11 +1796,15 @@ __codecvt_utf8_utf16_base<wchar_t>::do_m
+   return max;
+ }
+ #endif
++#endif
+ 
++//#ifndef _GLIBCXX_NONSHARED_CXX11_80
+ inline template class __codecvt_abstract_base<char16_t, char, mbstate_t>;
+ inline template class __codecvt_abstract_base<char32_t, char, mbstate_t>;
++#ifndef _GLIBCXX_NONSHARED_CXX11_80
+ template class codecvt_byname<char16_t, char, mbstate_t>;
+ template class codecvt_byname<char32_t, char, mbstate_t>;
++#endif
+ 
+ #if defined(_GLIBCXX_USE_CHAR8_T)
+ inline template class __codecvt_abstract_base<char16_t, char8_t, mbstate_t>;
+--- libstdc++-v3/src/c++11/ios.cc.jj	2019-04-25 20:01:51.854215629 +0200
++++ libstdc++-v3/src/c++11/ios.cc	2019-05-13 10:20:36.338516536 +0200
+@@ -33,6 +33,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11
+   // Definitions for static const members of ios_base.
+   const ios_base::fmtflags ios_base::boolalpha;
+   const ios_base::fmtflags ios_base::dec;
+@@ -184,6 +185,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+       }
+     _M_callbacks = 0;
+   }
++#endif
+ 
+   void
+   ios_base::_M_move(ios_base& __rhs) noexcept
+--- libstdc++-v3/src/c++11/cow-string-inst.cc.jj	2019-04-25 20:01:51.850215690 +0200
++++ libstdc++-v3/src/c++11/cow-string-inst.cc	2019-05-13 10:20:36.338516536 +0200
+@@ -27,7 +27,11 @@
+ //
+ 
+ #define _GLIBCXX_USE_CXX11_ABI 0
++#ifndef _GLIBCXX_NONSHARED_CXX11_44
+ #include "string-inst.cc"
++#else
++#include <string>
++#endif
+ 
+ #if ! _GLIBCXX_USE_DUAL_ABI
+ # error This file should not be compiled for this configuration.
+--- libstdc++-v3/src/c++11/random.cc.jj	2019-04-25 20:01:51.853215644 +0200
++++ libstdc++-v3/src/c++11/random.cc	2019-05-13 10:20:36.338516536 +0200
+@@ -71,6 +71,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+     }
+ 
+ #if (defined __i386__ || defined __x86_64__) && defined _GLIBCXX_X86_RDRAND
++#ifndef _GLIBCXX_NONSHARED_CXX11_48
+     unsigned int
+     __attribute__ ((target("rdrnd")))
+     __x86_rdrand(void)
+@@ -85,6 +86,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+       return val;
+     }
+ #endif
++#endif
+   }
+ 
+   void
+@@ -127,6 +129,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+     _M_mt.seed(_M_strtoul(token));
+   }
+ 
++#ifndef _GLIBCXX_NONSHARED_CXX11_48
+   void
+   random_device::_M_fini()
+   {
+@@ -172,6 +175,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul
+   {
+     return _M_mt();
+   }
++#endif
+ 
+   double
+   random_device::_M_getentropy() const noexcept
+--- libstdc++-v3/configure.ac.jj	2019-04-25 20:01:53.435191210 +0200
++++ libstdc++-v3/configure.ac	2019-05-13 10:20:36.352516303 +0200
+@@ -542,6 +542,11 @@ GLIBCXX_EXPORT_FLAGS
+ # Determine what GCC version number to use in filesystem paths.
+ GCC_BASE_VER
+ 
++CCAS='$(CXX)'
++CCASFLAGS='$(CXXFLAGS)'
++AC_SUBST(CCAS)
++AC_SUBST(CCASFLAGS)
++
+ dnl In autoconf 2.5x, AC_OUTPUT is replaced by four AC_CONFIG_* macros,
+ dnl which can all be called multiple times as needed, plus one (different)
+ dnl AC_OUTPUT macro.  This one lists the files to be created:
+--- libstdc++-v3/configure.jj	2019-04-25 20:01:51.710217852 +0200
++++ libstdc++-v3/configure	2019-05-13 10:47:30.549563320 +0200
+@@ -633,6 +633,8 @@ ac_subst_vars='am__EXEEXT_FALSE
+ am__EXEEXT_TRUE
+ LTLIBOBJS
+ LIBOBJS
++CCASFLAGS
++CCAS
+ get_gcc_base_ver
+ WARN_FLAGS
+ OPTIMIZE_CXXFLAGS
+@@ -5204,7 +5206,7 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
+   # expandable list at autoconf time; the second provides an expandable list
+   # (i.e., shell variable) at configure time.
+ 
+-  SUBDIRS='include libsupc++ src src/c++98 src/c++11 src/c++17 src/filesystem doc po testsuite python'
++  SUBDIRS='include libsupc++ src src/c++98 src/c++11 src/c++17 src/nonshared98 src/nonshared11 src/nonshared17 src/filesystem doc po testsuite python'
+ 
+   # These need to be absolute paths, yet at the same time need to
+   # canonicalize only relative paths, because then amd will not unmount
+@@ -11845,7 +11847,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11848 "configure"
++#line 11850 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -11951,7 +11953,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11954 "configure"
++#line 11956 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -15637,7 +15639,7 @@ $as_echo "$glibcxx_cv_atomic_long_long"
+   # Fake what AC_TRY_COMPILE does.
+ 
+     cat > conftest.$ac_ext << EOF
+-#line 15640 "configure"
++#line 15642 "configure"
+ int main()
+ {
+   typedef bool atomic_type;
+@@ -15672,7 +15674,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6;
+     rm -f conftest*
+ 
+     cat > conftest.$ac_ext << EOF
+-#line 15675 "configure"
++#line 15677 "configure"
+ int main()
+ {
+   typedef short atomic_type;
+@@ -15707,7 +15709,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6;
+     rm -f conftest*
+ 
+     cat > conftest.$ac_ext << EOF
+-#line 15710 "configure"
++#line 15712 "configure"
+ int main()
+ {
+   // NB: _Atomic_word not necessarily int.
+@@ -15743,7 +15745,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
+     rm -f conftest*
+ 
+     cat > conftest.$ac_ext << EOF
+-#line 15746 "configure"
++#line 15748 "configure"
+ int main()
+ {
+   typedef long long atomic_type;
+@@ -15896,7 +15898,7 @@ $as_echo "mutex" >&6; }
+   # unnecessary for this test.
+ 
+     cat > conftest.$ac_ext << EOF
+-#line 15899 "configure"
++#line 15901 "configure"
+ int main()
+ {
+   _Decimal32 d1;
+@@ -15938,7 +15940,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+   # unnecessary for this test.
+ 
+     cat > conftest.$ac_ext << EOF
+-#line 15941 "configure"
++#line 15943 "configure"
+ template<typename T1, typename T2>
+   struct same
+   { typedef T2 type; };
+@@ -15972,7 +15974,7 @@ $as_echo "$enable_int128" >&6; }
+     rm -f conftest*
+ 
+     cat > conftest.$ac_ext << EOF
+-#line 15975 "configure"
++#line 15977 "configure"
+ template<typename T1, typename T2>
+   struct same
+   { typedef T2 type; };
+@@ -82402,6 +82404,11 @@ fi
+ 
+ 
+ 
++CCAS='$(CXX)'
++CCASFLAGS='$(CXXFLAGS)'
++
++
++
+ ac_config_files="$ac_config_files Makefile"
+ 
+ ac_config_files="$ac_config_files scripts/testsuite_flags"
+@@ -82419,7 +82426,7 @@ ac_config_files="$ac_config_files doc/xs
+ # append it here.  Only modify Makefiles that have just been created.
+ #
+ # Also, get rid of this simulated-VPATH thing that automake does.
+-ac_config_files="$ac_config_files include/Makefile libsupc++/Makefile src/Makefile src/c++98/Makefile src/c++11/Makefile src/c++17/Makefile src/filesystem/Makefile doc/Makefile po/Makefile testsuite/Makefile python/Makefile"
++ac_config_files="$ac_config_files include/Makefile libsupc++/Makefile src/Makefile src/c++98/Makefile src/c++11/Makefile src/c++17/Makefile src/nonshared98/Makefile src/nonshared11/Makefile src/nonshared17/Makefile src/filesystem/Makefile doc/Makefile po/Makefile testsuite/Makefile python/Makefile"
+ 
+ 
+ ac_config_commands="$ac_config_commands generate-headers"
+@@ -83675,6 +83682,9 @@ do
+     "src/c++98/Makefile") CONFIG_FILES="$CONFIG_FILES src/c++98/Makefile" ;;
+     "src/c++11/Makefile") CONFIG_FILES="$CONFIG_FILES src/c++11/Makefile" ;;
+     "src/c++17/Makefile") CONFIG_FILES="$CONFIG_FILES src/c++17/Makefile" ;;
++    "src/nonshared98/Makefile") CONFIG_FILES="$CONFIG_FILES src/nonshared98/Makefile" ;;
++    "src/nonshared11/Makefile") CONFIG_FILES="$CONFIG_FILES src/nonshared11/Makefile" ;;
++    "src/nonshared17/Makefile") CONFIG_FILES="$CONFIG_FILES src/nonshared17/Makefile" ;;
+     "src/filesystem/Makefile") CONFIG_FILES="$CONFIG_FILES src/filesystem/Makefile" ;;
+     "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+     "po/Makefile") CONFIG_FILES="$CONFIG_FILES po/Makefile" ;;
+@@ -85527,6 +85537,39 @@ _EOF
+ s!`test -f '$<' || echo '$(srcdir)/'`!!
+ _EOF
+    sed -f vpsed$$ $ac_file > tmp$$
++   mv tmp$$ $ac_file
++   rm vpsed$$
++   echo 'MULTISUBDIR =' >> $ac_file
++   ml_norecursion=yes
++   . ${multi_basedir}/config-ml.in
++   { ml_norecursion=; unset ml_norecursion;}
++ ;;
++    "src/nonshared98/Makefile":F) cat > vpsed$$ << \_EOF
++s!`test -f '$<' || echo '$(srcdir)/'`!!
++_EOF
++   sed -f vpsed$$ $ac_file > tmp$$
++   mv tmp$$ $ac_file
++   rm vpsed$$
++   echo 'MULTISUBDIR =' >> $ac_file
++   ml_norecursion=yes
++   . ${multi_basedir}/config-ml.in
++   { ml_norecursion=; unset ml_norecursion;}
++ ;;
++    "src/nonshared11/Makefile":F) cat > vpsed$$ << \_EOF
++s!`test -f '$<' || echo '$(srcdir)/'`!!
++_EOF
++   sed -f vpsed$$ $ac_file > tmp$$
++   mv tmp$$ $ac_file
++   rm vpsed$$
++   echo 'MULTISUBDIR =' >> $ac_file
++   ml_norecursion=yes
++   . ${multi_basedir}/config-ml.in
++   { ml_norecursion=; unset ml_norecursion;}
++ ;;
++    "src/nonshared17/Makefile":F) cat > vpsed$$ << \_EOF
++s!`test -f '$<' || echo '$(srcdir)/'`!!
++_EOF
++   sed -f vpsed$$ $ac_file > tmp$$
+    mv tmp$$ $ac_file
+    rm vpsed$$
+    echo 'MULTISUBDIR =' >> $ac_file
+--- libstdc++-v3/acinclude.m4.jj	2019-05-13 10:20:36.393515618 +0200
++++ libstdc++-v3/acinclude.m4	2019-05-13 10:47:22.770693183 +0200
+@@ -49,7 +49,7 @@ AC_DEFUN([GLIBCXX_CONFIGURE], [
+   # Keep these sync'd with the list in Makefile.am.  The first provides an
+   # expandable list at autoconf time; the second provides an expandable list
+   # (i.e., shell variable) at configure time.
+-  m4_define([glibcxx_SUBDIRS],[include libsupc++ src src/c++98 src/c++11 src/c++17 src/filesystem doc po testsuite python])
++  m4_define([glibcxx_SUBDIRS],[include libsupc++ src src/c++98 src/c++11 src/c++17 src/nonshared98 src/nonshared11 src/nonshared17 src/filesystem doc po testsuite python])
+   SUBDIRS='glibcxx_SUBDIRS'
+ 
+   # These need to be absolute paths, yet at the same time need to
diff --git a/SOURCES/gcc9-libstdc++-docs.patch b/SOURCES/gcc9-libstdc++-docs.patch
new file mode 100644
index 0000000..4656a79
--- /dev/null
+++ b/SOURCES/gcc9-libstdc++-docs.patch
@@ -0,0 +1,24 @@
+--- libstdc++-v3/doc/html/index.html.jj	2011-01-03 12:53:21.282829010 +0100
++++ libstdc++-v3/doc/html/index.html	2011-01-04 18:06:28.999851145 +0100
+@@ -5,6 +5,8 @@
+       <a class="link" href="https://www.fsf.org" target="_top">FSF
+       </a>
+     </p><p>
++      Release 9.1.1
++    </p><p>
+       Permission is granted to copy, distribute and/or modify this
+       document under the terms of the GNU Free Documentation
+       License, Version 1.2 or any later version published by the
+--- libstdc++-v3/doc/html/api.html.jj	2011-01-03 12:53:21.000000000 +0100
++++ libstdc++-v3/doc/html/api.html	2011-01-04 18:12:01.672757784 +0100
+@@ -20,7 +20,9 @@
+   member functions for the library classes, finding out what is in a
+   particular include file, looking at inheritance diagrams, etc.
+ </p><p>
+-  The API documentation, rendered into HTML, can be viewed online
++  The API documentation, rendered into HTML, can be viewed locally
++  <a class="link" href="api/index.html" target="_top">for the 9.1.1 release</a>,
++  online
+   <a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
+   and
+   <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html" target="_top">
diff --git a/SOURCES/gcc9-libtool-no-rpath.patch b/SOURCES/gcc9-libtool-no-rpath.patch
new file mode 100644
index 0000000..466c661
--- /dev/null
+++ b/SOURCES/gcc9-libtool-no-rpath.patch
@@ -0,0 +1,27 @@
+libtool sucks.
+--- ltmain.sh.jj	2007-12-07 14:53:21.000000000 +0100
++++ ltmain.sh	2008-09-05 21:51:48.000000000 +0200
+@@ -5394,6 +5394,7 @@ EOF
+ 	  rpath="$finalize_rpath"
+ 	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+ 	  for libdir in $rpath; do
++	    case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
+ 	    if test -n "$hardcode_libdir_flag_spec"; then
+ 	      if test -n "$hardcode_libdir_separator"; then
+ 		if test -z "$hardcode_libdirs"; then
+@@ -6071,6 +6072,7 @@ EOF
+       rpath=
+       hardcode_libdirs=
+       for libdir in $compile_rpath $finalize_rpath; do
++	case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
+ 	if test -n "$hardcode_libdir_flag_spec"; then
+ 	  if test -n "$hardcode_libdir_separator"; then
+ 	    if test -z "$hardcode_libdirs"; then
+@@ -6120,6 +6122,7 @@ EOF
+       rpath=
+       hardcode_libdirs=
+       for libdir in $finalize_rpath; do
++	case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
+ 	if test -n "$hardcode_libdir_flag_spec"; then
+ 	  if test -n "$hardcode_libdir_separator"; then
+ 	    if test -z "$hardcode_libdirs"; then
diff --git a/SOURCES/gcc9-no-add-needed.patch b/SOURCES/gcc9-no-add-needed.patch
new file mode 100644
index 0000000..5817299
--- /dev/null
+++ b/SOURCES/gcc9-no-add-needed.patch
@@ -0,0 +1,37 @@
+2010-02-08  Roland McGrath  <roland@redhat.com>
+
+	* config/gnu-user.h (LINK_EH_SPEC): Pass --no-add-needed to the linker.
+	* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+	* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- gcc/config/alpha/elf.h.jj	2011-01-03 12:52:31.118056764 +0100
++++ gcc/config/alpha/elf.h	2011-01-04 18:14:10.931874160 +0100
+@@ -168,5 +168,5 @@ extern int alpha_this_gpdisp_sequence_nu
+    I imagine that other systems will catch up.  In the meantime, it
+    doesn't harm to make sure that the data exists to be used later.  */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
+ #endif
+--- gcc/config/ia64/linux.h.jj	2011-01-03 13:02:11.462994522 +0100
++++ gcc/config/ia64/linux.h	2011-01-04 18:14:10.931874160 +0100
+@@ -76,7 +76,7 @@ do {						\
+    Signalize that because we have fde-glibc, we don't need all C shared libs
+    linked against -lgcc_s.  */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC ""
++#define LINK_EH_SPEC "--no-add-needed "
+ 
+ #undef TARGET_INIT_LIBFUNCS
+ #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
+--- gcc/config/gnu-user.h.jj	2011-01-03 12:53:03.739057299 +0100
++++ gcc/config/gnu-user.h	2011-01-04 18:14:10.932814884 +0100
+@@ -106,7 +106,7 @@ see the files COPYING3 and COPYING.RUNTI
+ #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
+ #endif
+ 
+ #define GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC \
diff --git a/SOURCES/gcc9-pr90756.patch b/SOURCES/gcc9-pr90756.patch
new file mode 100644
index 0000000..c43fb18
--- /dev/null
+++ b/SOURCES/gcc9-pr90756.patch
@@ -0,0 +1,55 @@
+2019-07-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR rtl-optimization/90756
+	* explow.c (promote_ssa_mode): Always use TYPE_MODE, don't bypass it
+	for VECTOR_TYPE_P.
+
+--- gcc/explow.c
++++ gcc/explow.c
+@@ -892,16 +892,7 @@ promote_ssa_mode (const_tree name, int *punsignedp)
+ 
+   tree type = TREE_TYPE (name);
+   int unsignedp = TYPE_UNSIGNED (type);
+-  machine_mode mode = TYPE_MODE (type);
+-
+-  /* Bypass TYPE_MODE when it maps vector modes to BLKmode.  */
+-  if (mode == BLKmode)
+-    {
+-      gcc_assert (VECTOR_TYPE_P (type));
+-      mode = type->type_common.mode;
+-    }
+-
+-  machine_mode pmode = promote_mode (type, mode, &unsignedp);
++  machine_mode pmode = promote_mode (type, TYPE_MODE (type), &unsignedp);
+   if (punsignedp)
+     *punsignedp = unsignedp;
+ 
+--- /dev/null
++++ gcc/testsuite/gcc.dg/pr90756.c
+@@ -0,0 +1,26 @@
++/* PR rtl-optimization/90756 */
++/* { dg-do compile } */
++/* { dg-options "-O2 -Wno-psabi" } */
++/* { dg-additional-options "-mno-sse" { target ia32 } } */
++
++typedef float B __attribute__((vector_size(4 * sizeof (float))));
++typedef unsigned long long C __attribute__((vector_size(4 * sizeof (long long))));
++typedef short D __attribute__((vector_size(4 * sizeof (short))));
++B z;
++void foo (C);
++C bar (D);
++B baz ();
++D qux (B);
++
++void
++quux (int x)
++{
++  B n = z, b = z;
++  while (1)
++    switch (x)
++      {
++      case 0: n = baz (); /* FALLTHRU */
++      case 1: { B o = n; n = b; b = o; } /* FALLTHRU */
++      case 2: { D u = qux (b); C v = bar (u); foo (v); }
++      }
++}
diff --git a/SOURCES/gcc9-rh1574936.patch b/SOURCES/gcc9-rh1574936.patch
new file mode 100644
index 0000000..32db990
--- /dev/null
+++ b/SOURCES/gcc9-rh1574936.patch
@@ -0,0 +1,31 @@
+crt files and statically linked libgcc objects cause false positives
+in annobin coverage, so we add the assembler flag to generate notes
+for them.
+
+The patch also adds notes to libgcc_s.so, but this is harmless because
+these notes only confer that there is no other annobin markup.
+
+2018-07-25  Florian Weimer  <fweimer@redhat.com>
+
+	* Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add
+	-Wa,--generate-missing-build-notes=yes.
+
+--- libgcc/Makefile.in	2018-01-13 13:05:41.000000000 +0100
++++ libgcc/Makefile.in	2018-07-25 13:15:02.036226940 +0200
+@@ -244,6 +244,7 @@
+ LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
+ 		 $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
+ 		 -fbuilding-libgcc -fno-stack-protector \
++		 -Wa,--generate-missing-build-notes=yes \
+ 		 $(INHIBIT_LIBC_CFLAGS)
+ 
+ # Additional options to use when compiling libgcc2.a.
+@@ -297,6 +298,7 @@
+   $(NO_PIE_CFLAGS) -finhibit-size-directive -fno-inline -fno-exceptions \
+   -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
+   -fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \
++  -Wa,--generate-missing-build-notes=yes \
+   $(INHIBIT_LIBC_CFLAGS)
+ 
+ # Extra flags to use when compiling crt{begin,end}.o.
+
diff --git a/SOURCES/gcc9-sparc-config-detection.patch b/SOURCES/gcc9-sparc-config-detection.patch
new file mode 100644
index 0000000..bb06b35
--- /dev/null
+++ b/SOURCES/gcc9-sparc-config-detection.patch
@@ -0,0 +1,40 @@
+--- gcc/config.gcc.jj	2008-04-24 15:42:46.000000000 -0500
++++ gcc/config.gcc	2008-04-24 15:44:51.000000000 -0500
+@@ -2790,7 +2790,7 @@ sparc-*-rtems*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
+ 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
+ 	;;
+-sparc-*-linux*)
++sparc-*-linux* | sparcv9-*-linux*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
+ 	extra_options="${extra_options} sparc/long-double-switch.opt"
+ 	case ${target} in
+@@ -2844,7 +2844,7 @@ sparc64-*-rtems*)
+ 	extra_options="${extra_options}"
+ 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
+ 	;;
+-sparc64-*-linux*)
++sparc64*-*-linux*)
+ 	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
+ 	extra_options="${extra_options} sparc/long-double-switch.opt"
+ 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
+--- libgcc/config.host.jj	2008-04-24 15:46:19.000000000 -0500
++++ libgcc/config.host	2008-04-24 15:46:49.000000000 -0500
+@@ -1002,7 +1002,7 @@ sparc-*-elf*)
+ 	tmake_file="${tmake_file} t-fdpbit t-crtfm"
+ 	extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
+ 	;;
+-sparc-*-linux*)		# SPARC's running GNU/Linux, libc6
++sparc-*-linux* | sparcv9-*-linux*)		# SPARC's running GNU/Linux, libc6
+ 	tmake_file="${tmake_file} t-crtfm"
+ 	if test "${host_address}" = 64; then
+ 		tmake_file="$tmake_file sparc/t-linux64"
+@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
+ 	tmake_file="$tmake_file t-crtfm"
+ 	extra_parts="$extra_parts crtfastmath.o"
+ 	;;
+-sparc64-*-linux*)		# 64-bit SPARC's running GNU/Linux
++sparc64*-*-linux*)		# 64-bit SPARC's running GNU/Linux
+ 	extra_parts="$extra_parts crtfastmath.o"
+ 	tmake_file="${tmake_file} t-crtfm sparc/t-linux"
+ 	if test "${host_address}" = 64; then
diff --git a/SOURCES/libgomp_nonshared.c b/SOURCES/libgomp_nonshared.c
new file mode 100644
index 0000000..4380a7d
--- /dev/null
+++ b/SOURCES/libgomp_nonshared.c
@@ -0,0 +1,94 @@
+/* Copyright (C) 2019 Free Software Foundation, Inc.
+   Contributed by Jakub Jelinek <jakub@redhat.com>.
+
+   This file is part of the GNU Offloading and Multi Processing Library
+   (libgomp).
+  
+   Libgomp 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.
+
+   Libgomp 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.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Remapping of nonmonotonic runtime schedule and maybe nonmonotonic runtime
+   schedule loop entrypoints (the used by GCC 9 and later for runtime
+   schedule without monotonic or nonmonotonic modifiers).
+   RHEL 7 libgomp only implements the GOMP*loop*runtime* entrypoints without
+   nonmonotonic in the names, which always implement monotonic scheduling,
+   but the library doesn't implement any other scheduling, even in GCC 9
+   and monotonic scheduling is a valid implementation of non-monotonic
+   scheduling.  */
+
+#include <stdbool.h>
+
+typedef unsigned long long ull;
+extern bool GOMP_loop_runtime_start (long, long, long, long *, long *);
+extern bool GOMP_loop_runtime_next (long *, long *);
+extern void GOMP_parallel_loop_runtime (void (*)(void *), void *,
+					unsigned, long, long, long,
+					unsigned);
+extern bool GOMP_loop_ull_runtime_start (bool, ull, ull, ull, ull *, ull *);
+extern bool GOMP_loop_ull_runtime_next (ull *, ull *);
+#define alias(x, y) __typeof (x) y __attribute__((alias (#x)))
+
+#pragma GCC visibility push(hidden)
+
+bool
+GOMP_loop_nonmonotonic_runtime_start (long start, long end, long incr,
+				      long *istart, long *iend)
+{
+  return GOMP_loop_runtime_start (start, end, incr, istart, iend);
+}
+alias (GOMP_loop_nonmonotonic_runtime_start,
+       GOMP_loop_maybe_nonmonotonic_runtime_start);
+
+bool
+GOMP_loop_nonmonotonic_runtime_next (long *istart, long *iend)
+{
+  return GOMP_loop_runtime_next (istart, iend);
+}
+alias (GOMP_loop_nonmonotonic_runtime_next,
+       GOMP_loop_maybe_nonmonotonic_runtime_next);
+
+void
+GOMP_parallel_loop_nonmonotonic_runtime (void (*fn)(void *), void *data,
+					 unsigned num_threads, long start,
+					 long end, long incr, unsigned flags)
+{
+  return GOMP_parallel_loop_runtime (fn, data, num_threads, start,
+				     end, incr, flags);
+}
+alias (GOMP_parallel_loop_nonmonotonic_runtime,
+       GOMP_parallel_loop_maybe_nonmonotonic_runtime);
+
+bool
+GOMP_loop_ull_nonmonotonic_runtime_start (bool up, ull start, ull end,
+					  ull incr, ull *istart, ull *iend)
+{
+  return GOMP_loop_ull_runtime_start (up, start, end, incr, istart, iend);
+}
+alias (GOMP_loop_ull_nonmonotonic_runtime_start,
+       GOMP_loop_ull_maybe_nonmonotonic_runtime_start);
+
+bool
+GOMP_loop_ull_nonmonotonic_runtime_next (ull *istart, ull *iend)
+{
+  return GOMP_loop_ull_runtime_next (istart, iend);
+}
+alias (GOMP_loop_ull_nonmonotonic_runtime_next,
+       GOMP_loop_ull_maybe_nonmonotonic_runtime_next);
+
+#pragma  GCC visibility pop
diff --git a/SPECS/gcc.spec b/SPECS/gcc.spec
new file mode 100644
index 0000000..9271a3b
--- /dev/null
+++ b/SPECS/gcc.spec
@@ -0,0 +1,2577 @@
+%global __python /usr/bin/python3
+%{?scl:%global __strip %%{_scl_root}/usr/bin/strip}
+%{?scl:%global __objdump %%{_scl_root}/usr/bin/objdump}
+%{?scl:%scl_package gcc}
+%global DATE 20190605
+%global SVNREV 271961
+%global gcc_version 9.1.1
+%global gcc_major 9
+# Note, gcc_release must be integer, if you want to add suffixes to
+# %%{release}, append them after %%{gcc_release} on Release: line.
+%global gcc_release 2
+%global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f
+%global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24
+%global mpc_version 0.8.1
+%global isl_version 0.16.1
+%global doxygen_version 1.8.0
+%global _unpackaged_files_terminate_build 0
+%if 0%{?fedora} > 27 || 0%{?rhel} > 7
+%undefine _annotated_build
+%endif
+%global multilib_64_archs sparc64 ppc64 ppc64p7 x86_64
+%if 0%{?rhel} > 7
+%global build_ada 0
+%global build_objc 0
+%global build_go 0
+%global build_d 0
+%else
+%ifarch %{ix86} x86_64 ia64 ppc %{power64} alpha s390x %{arm} aarch64
+%global build_ada 0
+%else
+%global build_ada 0
+%endif
+%global build_objc 0
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
+%global build_go 0
+%else
+%global build_go 0
+%endif
+%ifarch %{ix86} x86_64 %{arm} %{mips} s390 s390x riscv64
+%global build_d 1
+%else
+%global build_d 0
+%endif
+%endif
+%if 0%{?rhel} >= 7
+%ifarch %{ix86} x86_64 ia64 ppc ppc64 ppc64le
+%global build_libquadmath 1
+%else
+%global build_libquadmath 0
+%endif
+%endif
+%if 0%{?rhel} == 6
+%ifarch %{ix86} x86_64 ia64 ppc64le
+%global build_libquadmath 1
+%else
+%global build_libquadmath 0
+%endif
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
+%global build_libasan 1
+%else
+%global build_libasan 0
+%endif
+%ifarch x86_64 ppc64 ppc64le aarch64
+%global build_libtsan 1
+%else
+%global build_libtsan 0
+%endif
+%ifarch x86_64 ppc64 ppc64le aarch64
+%global build_liblsan 1
+%else
+%global build_liblsan 0
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
+%global build_libubsan 1
+%else
+%global build_libubsan 0
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
+%global build_libatomic 1
+%else
+%global build_libatomic 0
+%endif
+%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64
+%global build_libitm 1
+%else
+%global build_libitm 0
+%endif
+%global build_isl 1
+%global build_libstdcxx_docs 1
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
+%global attr_ifunc 1
+%else
+%global attr_ifunc 0
+%endif
+%ifarch x86_64 ppc64le
+%global build_offload_nvptx 0
+%else
+%global build_offload_nvptx 0
+%endif
+%ifarch s390x
+%global multilib_32_arch s390
+%endif
+%ifarch sparc64
+%global multilib_32_arch sparcv9
+%endif
+%ifarch ppc64 ppc64p7
+%global multilib_32_arch ppc
+%endif
+%ifarch x86_64
+%global multilib_32_arch i686
+%endif
+Summary: GCC version 9
+Name: %{?scl_prefix}gcc
+Version: %{gcc_version}
+Release: %{gcc_release}.6%{?dist}
+# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
+# GCC Runtime Exception.
+License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
+# The source for this package was pulled from upstream's vcs.  Use the
+# following commands to generate the tarball:
+# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-9-branch@%%{SVNREV} gcc-%%{version}-%%{DATE}
+# tar cf - gcc-%%{version}-%%{DATE} | xz -9e > gcc-%%{version}-%%{DATE}.tar.xz
+Source0: gcc-%{version}-%{DATE}.tar.xz
+Source1: ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.bz2
+Source2: http://www.multiprecision.org/mpc/download/mpc-%{mpc_version}.tar.gz
+Source3: ftp://ftp.stack.nl/pub/users/dimitri/doxygen-%{doxygen_version}.src.tar.gz
+Source4: libgomp_nonshared.c
+URL: http://gcc.gnu.org
+# Need binutils with -pie support >= 2.14.90.0.4-4
+# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
+# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2
+# Need binutils which support .weakref >= 2.16.91.0.3-1
+# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7
+# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8
+# Need binutils which support --build-id >= 2.17.50.0.17-3
+# Need binutils which support %%gnu_unique_object >= 2.19.51.0.14
+# Need binutils which support .cfi_sections >= 2.19.51.0.14-33
+# Need binutils which support new PowerPC relocs >= 2.31
+BuildRequires: binutils >= 2.19.51.0.14-33
+# While gcc doesn't include statically linked binaries, during testing
+# -static is used several times.
+BuildRequires: glibc-static
+%if 0%{?scl:1}
+BuildRequires: %{?scl_prefix}binutils >= 2.31
+# For testing
+%if 0%{?rhel} >= 6
+# FIXME gcc-toolset-9-gdb isn't yet in the buildroot.
+BuildRequires: gdb
+%else
+BuildRequires: %{?scl_prefix}gdb >= 7.4.50
+%endif
+%endif
+BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, sharutils
+BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man
+#BuildRequires: systemtap-sdt-devel >= 1.3
+#BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1
+#BuildRequires: python2-devel, python3-devel, /usr/bin/python
+BuildRequires: gcc, gcc-c++
+# For VTA guality testing
+BuildRequires: gdb
+# Make sure pthread.h doesn't contain __thread tokens
+# Make sure glibc supports stack protector
+# Make sure glibc supports DT_GNU_HASH
+BuildRequires: glibc-devel >= 2.4.90-13
+BuildRequires: elfutils-devel >= 0.147
+BuildRequires: elfutils-libelf-devel >= 0.147
+%ifarch ppc ppc64 ppc64le ppc64p7 s390 s390x sparc sparcv9 alpha
+# Make sure glibc supports TFmode long double
+BuildRequires: glibc >= 2.3.90-35
+%endif
+%ifarch %{multilib_64_archs} sparcv9 ppc
+# Ensure glibc{,-devel} is installed for both multilib arches
+BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
+%endif
+%ifarch ia64
+BuildRequires: libunwind >= 0.98
+%endif
+# Need .eh_frame ld optimizations
+# Need proper visibility support
+# Need -pie support
+# Need --as-needed/--no-as-needed support
+# On ppc64, need omit dot symbols support and --non-overlapping-opd
+# Need binutils that owns /usr/bin/c++filt
+# Need binutils that support .weakref
+# Need binutils that supports --hash-style=gnu
+# Need binutils that support mffgpr/mftgpr
+# Need binutils that support --build-id
+# Need binutils that support %%gnu_unique_object
+# Need binutils that support .cfi_sections
+%if 0%{?rhel} <= 7
+Requires: %{?scl_prefix}binutils >= 2.22.52.0.1
+%else
+Requires: binutils >= 2.24
+%endif
+# Make sure gdb will understand DW_FORM_strp
+Conflicts: gdb < 5.1-2
+Requires: glibc-devel >= 2.2.90-12
+%ifarch ppc ppc64 ppc64le ppc64p7 s390 s390x sparc sparcv9 alpha
+# Make sure glibc supports TFmode long double
+Requires: glibc >= 2.3.90-35
+%endif
+Requires: libgcc >= 4.1.2-43
+Requires: libgomp >= 4.4.4-13
+BuildRequires: gmp-devel >= 4.1.2-8
+BuildRequires: mpfr-devel >= 2.2.1
+%if 0%{?rhel} >= 7
+BuildRequires: libmpc-devel >= 0.8.1
+%endif
+%if %{build_libstdcxx_docs}
+BuildRequires: libxml2
+BuildRequires: graphviz
+%if 0%{?rhel} < 7
+# doxygen BRs
+BuildRequires: perl
+BuildRequires: texlive-dvips, texlive-utils, texlive-latex
+BuildRequires: ghostscript
+%endif
+%if 0%{?rhel} >= 7
+BuildRequires: doxygen >= 1.7.1
+BuildRequires: dblatex, texlive-collection-latex, docbook5-style-xsl
+%endif
+%endif
+%{?scl:Requires:%scl_runtime}
+AutoReq: true
+AutoProv: false
+%ifarch sparc64 ppc64 ppc64le s390x x86_64 ia64 aarch64
+Provides: liblto_plugin.so.0()(64bit)
+%else
+Provides: liblto_plugin.so.0
+%endif
+%global oformat %{nil}
+%global oformat2 %{nil}
+%ifarch %{ix86}
+%global oformat OUTPUT_FORMAT(elf32-i386)
+%endif
+%ifarch x86_64
+%global oformat OUTPUT_FORMAT(elf64-x86-64)
+%global oformat2 OUTPUT_FORMAT(elf32-i386)
+%endif
+%ifarch ppc
+%global oformat OUTPUT_FORMAT(elf32-powerpc)
+%global oformat2 OUTPUT_FORMAT(elf64-powerpc)
+%endif
+%ifarch ppc64
+%global oformat OUTPUT_FORMAT(elf64-powerpc)
+%global oformat2 OUTPUT_FORMAT(elf32-powerpc)
+%endif
+%ifarch s390
+%global oformat OUTPUT_FORMAT(elf32-s390)
+%endif
+%ifarch s390x
+%global oformat OUTPUT_FORMAT(elf64-s390)
+%global oformat2 OUTPUT_FORMAT(elf32-s390)
+%endif
+%ifarch ia64
+%global oformat OUTPUT_FORMAT(elf64-ia64-little)
+%endif
+%ifarch ppc64le
+%global oformat OUTPUT_FORMAT(elf64-powerpcle)
+%endif
+%ifarch aarch64
+%global oformat OUTPUT_FORMAT(elf64-littleaarch64)
+%endif
+%if 0%{?rhel} == 6
+ExclusiveArch: x86_64 %{ix86}
+%endif
+
+Patch0: gcc9-hack.patch
+Patch1: gcc9-i386-libgomp.patch
+Patch2: gcc9-sparc-config-detection.patch
+Patch3: gcc9-libgomp-omp_h-multilib.patch
+Patch4: gcc9-libtool-no-rpath.patch
+Patch5: gcc9-isl-dl.patch
+Patch6: gcc9-libstdc++-docs.patch
+Patch7: gcc9-no-add-needed.patch
+Patch8: gcc9-foffload-default.patch
+Patch9: gcc9-Wno-format-security.patch
+Patch10: gcc9-rh1574936.patch
+Patch11: gcc9-d-shared-libphobos.patch
+Patch12: gcc9-pr90756.patch
+
+Patch1000: gcc9-libstdc++-compat.patch
+Patch1001: gcc9-alt-compat-test.patch
+Patch1002: gcc9-isl-dl2.patch
+Patch1003: gcc9-libgfortran-compat.patch
+
+Patch2001: doxygen-1.7.1-config.patch
+Patch2002: doxygen-1.7.5-timestamp.patch
+Patch2003: doxygen-1.8.0-rh856725.patch
+
+Patch3001: 0001-Default-widths-for-i-f-and-g-format-specifiers-in-fo.patch
+Patch3002: 0002-Allow-duplicate-declarations.patch
+Patch3003: 0003-Convert-LOGICAL-to-INTEGER-for-arithmetic-ops-and-vi.patch
+Patch3004: 0004-Allow-CHARACTER-literals-in-assignments-and-data-sta.patch
+Patch3005: 0005-dec-comparisons.patch
+Patch3006: 0006-Allow-blank-format-items-in-format-strings.patch
+Patch3007: 0007-Allow-more-than-one-character-as-argument-to-ICHAR.patch
+Patch3008: 0008-Allow-non-integer-substring-indexes.patch
+Patch3009: 0009-Allow-old-style-initializers-in-derived-types.patch
+Patch3010: 0010-Allow-string-length-and-kind-to-be-specified-on-a-pe.patch
+Patch3011: 0011-Allow-non-logical-expressions-in-IF-statements.patch
+Patch3012: 0012-Support-type-promotion-in-calls-to-intrinsics.patch
+Patch3013: 0013-Add-the-SEQUENCE-attribute-by-default-if-it-s-not-pr.patch
+Patch3014: 0014-Fill-in-missing-array-dimensions-using-the-lower-bou.patch
+Patch3015: 0015-Allow-automatics-in-equivalence.patch
+Patch3016: 0016-Suppress-warning-with-Wno-overwrite-recursive.patch
+
+%if 0%{?rhel} > 7
+%global nonsharedver 80
+%else
+%if 0%{?rhel} == 7
+%global nonsharedver 48
+%else
+%global nonsharedver 44
+%endif
+%endif
+
+%if 0%{?scl:1}
+%global _gnu %{nil}
+%else
+%global _gnu 7E
+%endif
+%ifarch sparcv9
+%global gcc_target_platform sparc64-%{_vendor}-%{_target_os}%{?_gnu}
+%endif
+%ifarch ppc ppc64p7
+%global gcc_target_platform ppc64-%{_vendor}-%{_target_os}%{?_gnu}
+%endif
+%ifnarch sparcv9 ppc ppc64p7
+%global gcc_target_platform %{_target_platform}
+%endif
+
+%description
+The %{?scl_prefix}gcc%{!?scl:5} package contains the GNU Compiler Collection version 9.
+
+%package -n libgcc
+Summary: GCC version 9 shared support library
+Autoreq: false
+
+%description -n libgcc
+This package contains GCC shared support library which is needed
+e.g. for exception handling support.
+
+%package c++
+Summary: C++ support for GCC  version 9
+Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
+%if 0%{?rhel} >= 7
+Requires: libstdc++
+%else
+Requires: libstdc++ >= 4.4.4-13
+%endif
+Requires: %{?scl_prefix}libstdc++%{!?scl:5}-devel = %{version}-%{release}
+Autoreq: true
+Autoprov: true
+
+%description c++
+This package adds C++ support to the GNU Compiler Collection
+version 9.  It includes support for most of the current C++ specification
+and a lot of support for the upcoming C++ specification.
+
+%package -n libstdc++
+Summary: GNU Standard C++ Library
+Autoreq: true
+Requires: glibc >= 2.10.90-7
+
+%description -n libstdc++
+The libstdc++ package contains a rewritten standard compliant GCC Standard
+C++ Library.
+
+%package -n %{?scl_prefix}libstdc++%{!?scl:5}-devel
+Summary: Header files and libraries for C++ development
+%if 0%{?rhel} >= 7
+Requires: libstdc++
+%else
+Requires: libstdc++ >= 4.4.4-13
+%endif
+Requires: libstdc++%{?_isa}
+Autoreq: true
+Autoprov: true
+
+%description -n %{?scl_prefix}libstdc++%{!?scl:5}-devel
+This is the GNU implementation of the standard C++ libraries.  This
+package includes the header files and libraries needed for C++
+development. This includes rewritten implementation of STL.
+
+%package -n %{?scl_prefix}libstdc++%{!?scl:5}-docs
+Summary: Documentation for the GNU standard C++ library
+Autoreq: true
+
+%description -n %{?scl_prefix}libstdc++%{!?scl:5}-docs
+Manual, doxygen generated API information and Frequently Asked Questions
+for the GNU standard C++ library.
+
+%package gfortran
+Summary: Fortran support for GCC 9
+Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
+%if 0%{?rhel} > 7
+Requires: libgfortran >= 8.1.1
+%else
+Requires: libgfortran5 >= 8.1.1
+%endif
+%if %{build_libquadmath}
+%if 0%{!?scl:1}
+Requires: libquadmath
+%endif
+Requires: %{?scl_prefix}libquadmath-devel = %{version}-%{release}
+%endif
+Autoreq: true
+Autoprov: true
+
+%description gfortran
+The %{?scl_prefix}gcc%{!?scl:5}-gfortran package provides support for compiling Fortran
+programs with the GNU Compiler Collection.
+
+
+%package gdb-plugin
+Summary: GCC 9 plugin for GDB
+Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
+
+%description gdb-plugin
+This package contains GCC 9 plugin for GDB C expression evaluation.
+
+%package -n %{?scl_prefix}libgccjit
+Summary: Library for embedding GCC inside programs and libraries
+Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
+
+%description -n %{?scl_prefix}libgccjit
+This package contains shared library with GCC 9 JIT front-end.
+
+%package -n %{?scl_prefix}libgccjit-devel
+Summary: Support for embedding GCC inside programs and libraries
+Group: Development/Libraries
+Requires: %{?scl_prefix}libgccjit = %{version}-%{release}
+Requires: %{?scl_prefix}libgccjit-docs = %{version}-%{release}
+
+%description -n %{?scl_prefix}libgccjit-devel
+This package contains header files for GCC 8 JIT front end.
+
+%package -n %{?scl_prefix}libgccjit-docs
+Summary: Documentation for embedding GCC inside programs and libraries
+Group: Development/Libraries
+%if 0%{?rhel} > 7
+BuildRequires: python3-sphinx
+%else
+BuildRequires: python-sphinx
+%endif
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n %{?scl_prefix}libgccjit-docs
+This package contains documentation for GCC 9 JIT front-end.
+
+%package -n libquadmath
+Summary: GCC 9 __float128 shared support library
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libquadmath
+This package contains GCC shared support library which is needed
+for __float128 math support and for Fortran REAL*16 support.
+
+%package -n %{?scl_prefix}libquadmath-devel
+Summary: GCC 9 __float128 support
+Group: Development/Libraries
+%if 0%{!?scl:1}
+Requires: %{?scl_prefix}libquadmath%{_isa} = %{version}-%{release}
+%else
+%if 0%{?rhel} >= 7
+Requires: libquadmath%{_isa}
+%endif
+%endif
+Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
+
+%description -n %{?scl_prefix}libquadmath-devel
+This package contains headers for building Fortran programs using
+REAL*16 and programs using __float128 math.
+
+%package -n libitm
+Summary: The GNU Transactional Memory library
+Group: System Environment/Libraries
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libitm
+This package contains the GNU Transactional Memory library
+which is a GCC transactional memory support runtime library.
+
+%package -n %{?scl_prefix}libitm-devel
+Summary: The GNU Transactional Memory support
+Requires: libitm%{_isa} >= 4.7.0-1
+Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
+
+%description -n %{?scl_prefix}libitm-devel
+This package contains headers and support files for the
+GNU Transactional Memory library.
+
+%package plugin-devel
+Summary: Support for compiling GCC plugins
+Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
+Requires: gmp-devel >= 4.1.2-8
+Requires: mpfr-devel >= 2.2.1
+%if 0%{?rhel} >= 7
+Requires: libmpc-devel >= 0.8.1
+%endif
+
+%description plugin-devel
+This package contains header files and other support files
+for compiling GCC 8 plugins.  The GCC plugin ABI is currently
+not stable, so plugins must be rebuilt any time GCC is updated.
+
+%package -n libatomic
+Summary: The GNU Atomic library
+Group: System Environment/Libraries
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libatomic
+This package contains the GNU Atomic library
+which is a GCC support runtime library for atomic operations not supported
+by hardware.
+
+%package -n %{?scl_prefix}libatomic-devel
+Summary: The GNU Atomic static library
+Requires: libatomic%{_isa} >= 4.8.0
+
+%description -n %{?scl_prefix}libatomic-devel
+This package contains GNU Atomic static libraries.
+
+%package -n libasan5
+Summary: The Address Sanitizer runtime library from GCC 9
+Group: System Environment/Libraries
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libasan5
+This package contains the Address Sanitizer library from GCC 9
+which is used for -fsanitize=address instrumented programs.
+
+%package -n %{?scl_prefix}libasan-devel
+Summary: The Address Sanitizer static library
+%if 0%{?rhel} > 7
+Requires: libasan%{_isa} >= 8.3.1
+Obsoletes: libasan5
+%else
+Requires: libasan5%{_isa} >= 8.3.1
+%endif
+
+%description -n %{?scl_prefix}libasan-devel
+This package contains Address Sanitizer static runtime library.
+
+%package -n libtsan
+Summary: The Thread Sanitizer runtime library
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libtsan
+This package contains the Thread Sanitizer library
+which is used for -fsanitize=thread instrumented programs.
+
+%package -n %{?scl_prefix}libtsan-devel
+Summary: The Thread Sanitizer static library
+Requires: libtsan%{_isa} >= 5.1.1
+
+%description -n %{?scl_prefix}libtsan-devel
+This package contains Thread Sanitizer static runtime library.
+
+%package -n libubsan1
+Summary: The Undefined Behavior Sanitizer runtime library
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libubsan1
+This package contains the Undefined Behavior Sanitizer library
+which is used for -fsanitize=undefined instrumented programs.
+
+%package -n %{?scl_prefix}libubsan-devel
+Summary: The Undefined Behavior Sanitizer static library
+%if 0%{?rhel} > 7
+Requires: libubsan%{_isa} >= 8.3.1
+Obsoletes: libubsan1
+%else
+Requires: libubsan1%{_isa} >= 8.3.1
+%endif
+
+%description -n %{?scl_prefix}libubsan-devel
+This package contains Undefined Behavior Sanitizer static runtime library.
+
+%package -n liblsan
+Summary: The Leak Sanitizer runtime library
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n liblsan
+This package contains the Leak Sanitizer library
+which is used for -fsanitize=leak instrumented programs.
+
+%package -n %{?scl_prefix}liblsan-devel
+Summary: The Leak Sanitizer static library
+Requires: liblsan%{_isa} >= 5.1.1
+
+%description -n %{?scl_prefix}liblsan-devel
+This package contains Leak Sanitizer static runtime library.
+
+
+%prep
+%if 0%{?rhel} >= 7
+%setup -q -n gcc-%{version}-%{DATE} -a 1
+%else
+%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3
+%endif
+%patch0 -p0 -b .hack~
+%patch1 -p0 -b .i386-libgomp~
+%patch2 -p0 -b .sparc-config-detection~
+%patch3 -p0 -b .libgomp-omp_h-multilib~
+%patch4 -p0 -b .libtool-no-rpath~
+%if %{build_isl}
+%patch5 -p0 -b .isl-dl~
+%endif
+%if %{build_libstdcxx_docs}
+%patch6 -p0 -b .libstdc++-docs~
+%endif
+%patch7 -p0 -b .no-add-needed~
+%patch8 -p0 -b .foffload-default~
+%patch9 -p0 -b .Wno-format-security~
+%if 0%{?fedora} >= 29 || 0%{?rhel} > 7
+%patch10 -p0 -b .rh1574936~
+%endif
+%patch11 -p0 -b .d-shared-libphobos~
+%patch12 -p0 -b .pr90756~
+
+%patch1000 -p0 -b .libstdc++-compat~
+%ifarch %{ix86} x86_64
+%if 0%{?rhel} < 7
+# On i?86/x86_64 there are some incompatibilities in _Decimal* as well as
+# aggregates containing larger vector passing.
+%patch1001 -p0 -b .alt-compat-test~
+%endif
+%endif
+%if %{build_isl}
+%patch1002 -p0 -b .isl-dl2~
+%endif
+%patch1003 -p0 -b .libgfortran-compat~
+
+%if %{build_libstdcxx_docs}
+%if 0%{?rhel} < 7
+cd doxygen-%{doxygen_version}
+%patch2001 -p1 -b .config~
+%patch2002 -p1 -b .timestamp~
+%patch2003 -p1 -b .rh856725~
+cd ..
+%endif
+%endif
+
+%patch3001 -p1 -b .fortran01~
+%patch3002 -p1 -b .fortran02~
+%patch3003 -p1 -b .fortran03~
+%patch3004 -p1 -b .fortran04~
+%patch3005 -p1 -b .fortran05~
+%patch3006 -p1 -b .fortran06~
+%patch3007 -p1 -b .fortran07~
+%patch3008 -p1 -b .fortran08~
+%patch3009 -p1 -b .fortran09~
+%patch3010 -p1 -b .fortran10~
+%patch3011 -p1 -b .fortran11~
+%patch3012 -p1 -b .fortran12~
+%patch3013 -p1 -b .fortran13~
+%patch3014 -p1 -b .fortran14~
+%patch3015 -p1 -b .fortran15~
+%patch3016 -p1 -b .fortran16~
+
+echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
+
+%if 0%{?rhel} == 6
+# Default to -gdwarf-3 rather than -gdwarf-4
+sed -i '/UInteger Var(dwarf_version)/s/Init(4)/Init(3)/' gcc/common.opt
+sed -i 's/\(may be either 2, 3 or 4; the default version is \)4\./\13./' gcc/doc/invoke.texi
+%endif
+
+cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
+cp -a libstdc++-v3/config/cpu/i{4,3}86/opt
+echo 'TM_H += $(srcdir)/config/rs6000/rs6000-modes.h' >> gcc/config/rs6000/t-rs6000
+
+./contrib/gcc_update --touch
+
+LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi
+
+sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt
+
+%ifarch ppc
+if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then
+  mkdir -p libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64
+  mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{,64/}baseline_symbols.txt
+  mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{32/,}baseline_symbols.txt
+  rm -rf libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32
+fi
+%endif
+%ifarch sparc
+if [ -d libstdc++-v3/config/abi/post/sparc64-linux-gnu ]; then
+  mkdir -p libstdc++-v3/config/abi/post/sparc64-linux-gnu/64
+  mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{,64/}baseline_symbols.txt
+  mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{32/,}baseline_symbols.txt
+  rm -rf libstdc++-v3/config/abi/post/sparc64-linux-gnu/32
+fi
+%endif
+
+# This test causes fork failures, because it spawns way too many threads
+rm -f gcc/testsuite/go.test/test/chan/goroutines.go
+
+%build
+
+# Undo the broken autoconf change in recent Fedora versions
+export CONFIG_SITE=NONE
+
+rm -fr obj-%{gcc_target_platform}
+mkdir obj-%{gcc_target_platform}
+cd obj-%{gcc_target_platform}
+
+%if %{build_libstdcxx_docs}
+
+%if 0%{?rhel} < 7
+mkdir doxygen-install
+pushd ../doxygen-%{doxygen_version}
+./configure --prefix `cd ..; pwd`/obj-%{gcc_target_platform}/doxygen-install \
+  --shared --release --english-only
+
+make %{?_smp_mflags} all
+make install
+popd
+export PATH=`pwd`/doxygen-install/bin/${PATH:+:${PATH}}
+%endif
+%endif
+
+%if 0%{?rhel} < 7
+mkdir mpc mpc-install
+cd mpc
+../../mpc-%{mpc_version}/configure --disable-shared \
+  CFLAGS="${CFLAGS:-%optflags} -fPIC" CXXFLAGS="${CXXFLAGS:-%optflags} -fPIC" \
+  --prefix=`cd ..; pwd`/mpc-install
+make %{?_smp_mflags}
+make install
+cd ..
+%endif
+
+%if %{build_isl}
+mkdir isl-build isl-install
+%ifarch s390 s390x
+ISL_FLAG_PIC=-fPIC
+%else
+ISL_FLAG_PIC=-fpic
+%endif
+cd isl-build
+sed -i 's|libisl|libgcc7privateisl|g' \
+  ../../isl-%{isl_version}/Makefile.{am,in}
+../../isl-%{isl_version}/configure \
+  CC=/usr/bin/gcc CXX=/usr/bin/g++ \
+  CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..; pwd`/isl-install
+make %{?_smp_mflags}
+make install
+cd ../isl-install/lib
+rm libgcc7privateisl.so{,.15}
+mv libgcc7privateisl.so.15.1.1 libisl.so.15
+ln -sf libisl.so.15 libisl.so
+cd ../..
+%endif
+
+%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
+
+CC=gcc
+CXX=g++
+OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'`
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/ -pipe / /g'`
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-Werror=format-security/-Wformat-security/g'`
+%ifarch sparc
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'`
+%endif
+%ifarch %{ix86}
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-march=i.86//g'`
+%endif
+OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'`
+case "$OPT_FLAGS" in
+  *-fasynchronous-unwind-tables*)
+    sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables /' \
+      ../libgcc/Makefile.in
+    ;;
+esac
+CONFIGURE_OPTS="\
+	--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
+	--with-bugurl=http://bugzilla.redhat.com/bugzilla \
+	--enable-shared --enable-threads=posix --enable-checking=release \
+%ifarch ppc64le
+	--enable-targets=powerpcle-linux \
+%endif
+%ifarch ppc64le %{mips} riscv64 s390x
+	--disable-multilib \
+%else
+	--enable-multilib \
+%endif
+	--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
+	--enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \
+%ifnarch %{mips}
+	--with-linker-hash-style=gnu \
+%endif
+%if 0%{?rhel} <= 7
+	--with-default-libstdcxx-abi=gcc4-compatible \
+%endif
+	--enable-plugin --enable-initfini-array \
+%if %{build_isl}
+	--with-isl=`pwd`/isl-install \
+%else
+	--without-isl \
+%endif
+	--disable-libmpx \
+%if 0%{?rhel} < 7
+	--with-mpc=`pwd`/mpc-install \
+%endif
+%if 0%{?fedora} >= 21 || 0%{?rhel} >= 7
+%if %{attr_ifunc}
+	--enable-gnu-indirect-function \
+%endif
+%endif
+%ifarch %{arm}
+	--disable-sjlj-exceptions \
+%endif
+%ifarch ppc ppc64 ppc64le ppc64p7
+	--enable-secureplt \
+%endif
+%ifarch sparc sparcv9 sparc64 ppc ppc64 ppc64le ppc64p7 s390 s390x alpha
+	--with-long-double-128 \
+%endif
+%ifarch sparc
+	--disable-linux-futex \
+%endif
+%ifarch sparc64
+	--with-cpu=ultrasparc \
+%endif
+%ifarch sparc sparcv9
+	--host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7
+%endif
+%ifarch ppc ppc64 ppc64p7
+%if 0%{?rhel} >= 7
+	--with-cpu-32=power7 --with-tune-32=power7 --with-cpu-64=power7 --with-tune-64=power7 \
+%endif
+%if 0%{?rhel} == 6
+	--with-cpu-32=power4 --with-tune-32=power6 --with-cpu-64=power4 --with-tune-64=power6 \
+%endif
+%endif
+%ifarch ppc64le
+	--with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \
+%endif
+%ifarch ppc
+	--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
+%endif
+%ifarch %{ix86} x86_64
+	--with-tune=generic \
+%endif
+%if 0%{?rhel} >= 7
+%ifarch %{ix86}
+	--with-arch=x86-64 \
+%endif
+%ifarch x86_64
+	--with-arch_32=x86-64 \
+%endif
+%else
+%ifarch %{ix86}
+	--with-arch=i686 \
+%endif
+%ifarch x86_64
+	--with-arch_32=i686 \
+%endif
+%endif
+%ifarch s390 s390x
+%if 0%{?rhel} >= 7
+%if 0%{?rhel} > 7
+	--with-arch=z13 --with-tune=z14 \
+%else
+	--with-arch=z196 --with-tune=zEC12 \
+%endif
+%else
+%if 0%{?fedora} >= 26
+	--with-arch=zEC12 --with-tune=z13 \
+%else
+	--with-arch=z9-109 --with-tune=z10 \
+%endif
+%endif
+	--enable-decimal-float \
+%endif
+%ifarch armv7hl
+	--with-tune=generic-armv7-a --with-arch=armv7-a \
+	--with-float=hard --with-fpu=vfpv3-d16 --with-abi=aapcs-linux \
+%endif
+%ifarch mips mipsel
+	--with-arch=mips32r2 --with-fp-32=xx \
+%endif
+%ifarch mips64 mips64el
+	--with-arch=mips64r2 --with-abi=64 \
+%endif
+%ifnarch sparc sparcv9 ppc
+	--build=%{gcc_target_platform} \
+%endif
+	"
+
+CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
+	CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
+		  | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
+	XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
+	../configure --enable-bootstrap \
+	--enable-languages=c,c++,fortran,lto \
+	$CONFIGURE_OPTS
+
+%ifarch sparc sparcv9 sparc64
+make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
+%else
+make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
+%endif
+
+%if 0%{?rhel} <= 8
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared%{nonsharedver} )' \
+  > %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_system.so
+
+# Relink libcc1 against -lstdc++_nonshared:
+sed -i -e '/^postdeps/s/-lstdc++/-lstdc++_system/' libcc1/libtool
+rm -f libcc1/libcc1.la
+make -C libcc1 libcc1.la
+%endif
+
+CC="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cc`"
+CXX="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cxx` `%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-includes`"
+
+# Build libgccjit separately, so that normal compiler binaries aren't -fpic
+# unnecessarily.
+mkdir objlibgccjit
+cd objlibgccjit
+CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
+	CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
+		  | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
+	XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
+	../../configure --disable-bootstrap --enable-host-shared \
+	--enable-languages=jit $CONFIGURE_OPTS
+make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" all-gcc
+cp -a gcc/libgccjit.so* ../gcc/
+cd ../gcc/
+ln -sf xgcc %{gcc_target_platform}-gcc-%{gcc_major}
+cp -a Makefile{,.orig}
+sed -i -e '/^CHECK_TARGETS/s/$/ check-jit/' Makefile
+touch -r Makefile.orig Makefile
+rm Makefile.orig
+make jit.sphinx.html
+make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html
+cd ..
+
+%if %{build_isl}
+cp -a isl-install/lib/libisl.so.15 gcc/
+%endif
+
+# Make generated man pages even if Pod::Man is not new enough
+perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
+for i in ../gcc/doc/*.texi; do
+  cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i
+done
+make -C gcc generated-manpages
+for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done
+
+# Make generated doxygen pages.
+%if %{build_libstdcxx_docs}
+cd %{gcc_target_platform}/libstdc++-v3
+make doc-html-doxygen
+make doc-man-doxygen
+cd ../..
+%endif
+
+# Copy various doc files here and there
+cd ..
+mkdir -p rpm.doc/gfortran rpm.doc/libquadmath rpm.doc/libitm
+mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/jit,libstdc++-v3,libgomp,libcc1,libatomic,libsanitizer}
+
+for i in {gcc,gcc/cp,gcc/jit,libstdc++-v3,libgomp,libcc1,libatomic,libsanitizer}/ChangeLog*; do
+	cp -p $i rpm.doc/changelogs/$i
+done
+
+(cd gcc/fortran; for i in ChangeLog*; do
+	cp -p $i ../../rpm.doc/gfortran/$i
+done)
+(cd libgfortran; for i in ChangeLog*; do
+	cp -p $i ../rpm.doc/gfortran/$i.libgfortran
+done)
+%if %{build_libquadmath}
+(cd libquadmath; for i in ChangeLog* COPYING.LIB; do
+	cp -p $i ../rpm.doc/libquadmath/$i.libquadmath
+done)
+%endif
+%if %{build_libitm}
+(cd libitm; for i in ChangeLog*; do
+	cp -p $i ../rpm.doc/libitm/$i.libitm
+done)
+%endif
+
+rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9]
+find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9
+
+# Test the nonshared bits.
+mkdir libstdc++_compat_test
+cd libstdc++_compat_test
+readelf -Ws %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 | sed -n '/\.symtab/,$d;/ UND /d;/@GLIBC_PRIVATE/d;/\(GLOBAL\|WEAK\|UNIQUE\)/p' | awk '{ if ($4 == "OBJECT") { printf "%s %s %s %s %s\n", $8, $4, $5, $6, $3 } else { printf "%s %s %s %s\n", $8, $4, $5, $6 }}' | sed 's/ UNIQUE / GLOBAL /;s/ WEAK / GLOBAL /;s/@@GLIBCXX_[0-9.]*//;s/@@CXXABI_TM_[0-9.]*//;s/@@CXXABI_FLOAT128//;s/@@CXXABI_[0-9.]*//' | LC_ALL=C sort -u > system.abilist
+readelf -Ws ../obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so.6 | sed -n '/\.symtab/,$d;/ UND /d;/@GLIBC_PRIVATE/d;/\(GLOBAL\|WEAK\|UNIQUE\)/p' | awk '{ if ($4 == "OBJECT") { printf "%s %s %s %s %s\n", $8, $4, $5, $6, $3 } else { printf "%s %s %s %s\n", $8, $4, $5, $6 }}' | sed 's/ UNIQUE / GLOBAL /;s/ WEAK / GLOBAL /;s/@@GLIBCXX_[0-9.]*//;s/@@CXXABI_TM_[0-9.]*//;s/@@CXXABI_FLOAT128//;s/@@CXXABI_[0-9.]*//' | LC_ALL=C sort -u > vanilla.abilist
+diff -up system.abilist vanilla.abilist | awk '/^\+\+\+/{next}/^\+/{print gensub(/^+(.*)$/,"\\1","1",$0)}' > system2vanilla.abilist.diff
+../obj-%{gcc_target_platform}/gcc/xgcc -B ../obj-%{gcc_target_platform}/gcc/ -shared -o libstdc++_nonshared.so -Wl,--whole-archive ../obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a -Wl,--no-whole-archive %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6
+readelf -Ws libstdc++_nonshared.so | sed -n '/\.symtab/,$d;/ UND /d;/@GLIBC_PRIVATE/d;/\(GLOBAL\|WEAK\|UNIQUE\)/p' | awk '{ if ($4 == "OBJECT") { printf "%s %s %s %s %s\n", $8, $4, $5, $6, $3 } else { printf "%s %s %s %s\n", $8, $4, $5, $6 }}' | sed 's/ UNIQUE / GLOBAL /;s/ WEAK / GLOBAL /;s/@@GLIBCXX_[0-9.]*//;s/@@CXXABI_TM_[0-9.]*//;s/@@CXXABI_FLOAT128//;s/@@CXXABI_[0-9.]*//' | LC_ALL=C sort -u > nonshared.abilist
+echo ====================NONSHARED=========================
+ldd -d -r ./libstdc++_nonshared.so || :
+ldd -u ./libstdc++_nonshared.so || :
+diff -up system2vanilla.abilist.diff nonshared.abilist || :
+readelf -Ws ../obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a | grep HIDDEN.*UND | grep -v __dso_handle || :
+echo ====================NONSHARED END=====================
+rm -f libstdc++_nonshared.so
+cd ..
+
+%install
+rm -rf %{buildroot}
+
+%if %{build_libstdcxx_docs}
+%if 0%{?rhel} < 7
+export PATH=`pwd`/obj-%{gcc_target_platform}/doxygen-install/bin/${PATH:+:${PATH}}
+%endif
+%endif
+
+%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
+# Also set LD_LIBRARY_PATH so that DTS eu-strip (called from find-debuginfo.sh)
+# can find the libraries it needs.
+%{?scl:export LD_LIBRARY_PATH=%{_libdir}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}}
+
+perl -pi -e \
+  's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \
+  libstdc++-v3/doc/html/api.html
+
+cd obj-%{gcc_target_platform}
+
+TARGET_PLATFORM=%{gcc_target_platform}
+
+# There are some MP bugs in libstdc++ Makefiles
+make -C %{gcc_target_platform}/libstdc++-v3
+
+%if 0%{?scl:1}
+rm -f gcc/libgcc_s.so
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat}
+GROUP ( /%{_lib}/libgcc_s.so.1 libgcc.a )' > gcc/libgcc_s.so
+%endif
+
+make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \
+  infodir=%{buildroot}%{_infodir} install
+
+%if 0%{?scl:1}
+rm -f gcc/libgcc_s.so
+ln -sf libgcc_s.so.1 gcc/libgcc_s.so
+%endif
+
+FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
+
+%if 0%{?scl:1}
+ln -sf ../../../../bin/ar $FULLEPATH/ar
+ln -sf ../../../../bin/as $FULLEPATH/as
+ln -sf ../../../../bin/ld $FULLEPATH/ld
+ln -sf ../../../../bin/ld.bfd $FULLEPATH/ld.bfd
+ln -sf ../../../../bin/ld.gold $FULLEPATH/ld.gold
+ln -sf ../../../../bin/nm $FULLEPATH/nm
+ln -sf ../../../../bin/objcopy $FULLEPATH/objcopy
+ln -sf ../../../../bin/ranlib $FULLEPATH/ranlib
+ln -sf ../../../../bin/strip $FULLEPATH/strip
+%endif
+
+%if %{build_isl}
+cp -a isl-install/lib/libisl.so.15 $FULLPATH/
+%endif
+
+# fix some things
+ln -sf gcc %{buildroot}%{_prefix}/bin/cc
+mkdir -p %{buildroot}/lib
+ln -sf ..%{_prefix}/bin/cpp %{buildroot}/lib/cpp
+ln -sf gfortran %{buildroot}%{_prefix}/bin/f95
+rm -f %{buildroot}%{_infodir}/dir
+gzip -9 %{buildroot}%{_infodir}/*.info*
+ln -sf gcc %{buildroot}%{_prefix}/bin/gnatgcc
+
+cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
+for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
+  if ! diff -up $cxxconfig $i; then
+    cat > %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/bits/c++config.h <<EOF
+#ifndef _CPP_CPPCONFIG_WRAPPER
+#define _CPP_CPPCONFIG_WRAPPER 1
+#include <bits/wordsize.h>
+#if __WORDSIZE == 32
+%ifarch %{multilib_64_archs}
+`cat $(find %{gcc_target_platform}/32/libstdc++-v3/include -name c++config.h)`
+%else
+`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
+%endif
+#else
+%ifarch %{multilib_64_archs}
+`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
+%else
+`cat $(find %{gcc_target_platform}/64/libstdc++-v3/include -name c++config.h)`
+%endif
+#endif
+#endif
+EOF
+    break
+  fi
+done
+
+for f in `find %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/ -name c++config.h`; do
+  for i in 1 2 4 8; do
+    sed -i -e 's/#define _GLIBCXX_ATOMIC_BUILTINS_'$i' 1/#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_'$i'\
+&\
+#endif/' $f
+  done
+%if 0%{?rhel} <= 7
+  # Force the old ABI unconditionally, the new one does not work in the
+  # libstdc++_nonshared.a model against RHEL 6/7 libstdc++.so.6.
+  sed -i -e 's/\(define[[:blank:]]*_GLIBCXX_USE_DUAL_ABI[[:blank:]]*\)1/\10/' $f
+%endif
+done
+
+# Nuke bits/*.h.gch dirs
+# 1) there is no bits/*.h header installed, so when gch file can't be
+#    used, compilation fails
+# 2) sometimes it is hard to match the exact options used for building
+#    libstdc++-v3 or they aren't desirable
+# 3) there are multilib issues, conflicts etc. with this
+# 4) it is huge
+# People can always precompile on their own whatever they want, but
+# shipping this for everybody is unnecessary.
+rm -rf %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/bits/*.h.gch
+
+%if %{build_libstdcxx_docs}
+libstdcxx_doc_builddir=%{gcc_target_platform}/libstdc++-v3/doc/doxygen
+mkdir -p ../rpm.doc/libstdc++-v3
+cp -r -p ../libstdc++-v3/doc/html ../rpm.doc/libstdc++-v3/html
+cp -r -p $libstdcxx_doc_builddir/html ../rpm.doc/libstdc++-v3/html/api
+mkdir -p %{buildroot}%{_mandir}/man3
+cp -r -p $libstdcxx_doc_builddir/man/man3/* %{buildroot}%{_mandir}/man3/
+find ../rpm.doc/libstdc++-v3 -name \*~ | xargs rm
+%endif
+
+%ifarch sparcv9 sparc64
+ln -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gcc \
+  %{buildroot}%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}%{?_gnu}-gcc
+%endif
+%ifarch ppc ppc64 ppc64p7
+ln -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gcc \
+  %{buildroot}%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}%{?_gnu}-gcc
+%endif
+
+%ifarch sparcv9 ppc
+FULLLPATH=$FULLPATH/lib32
+%endif
+%ifarch sparc64 ppc64 ppc64p7
+FULLLPATH=$FULLPATH/lib64
+%endif
+if [ -n "$FULLLPATH" ]; then
+  mkdir -p $FULLLPATH
+else
+  FULLLPATH=$FULLPATH
+fi
+
+find %{buildroot} -name \*.la | xargs rm -f
+
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.spec $FULLPATH/libgfortran.spec
+%if %{build_libitm}
+mv %{buildroot}%{_prefix}/%{_lib}/libitm.spec $FULLPATH/
+%endif
+%if %{build_libasan}
+mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/
+%endif
+
+mkdir -p %{buildroot}/%{_lib}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_major}-%{DATE}.so.1
+chmod 755 %{buildroot}/%{_lib}/libgcc_s-%{gcc_major}-%{DATE}.so.1
+ln -sf libgcc_s-%{gcc_major}-%{DATE}.so.1 %{buildroot}/%{_lib}/libgcc_s.so.1
+ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so
+%ifarch sparcv9 ppc
+ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so
+%endif
+%ifarch %{multilib_64_archs}
+ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so
+%endif
+
+rm -f $FULLPATH/libgcc_s.so
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat}
+GROUP ( /%{_lib}/libgcc_s.so.1 libgcc.a )' > $FULLPATH/libgcc_s.so
+%ifarch sparcv9 ppc
+rm -f $FULLPATH/64/libgcc_s.so
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat2}
+GROUP ( /lib64/libgcc_s.so.1 libgcc.a )' > $FULLPATH/64/libgcc_s.so
+%endif
+%ifarch %{multilib_64_archs}
+rm -f $FULLPATH/32/libgcc_s.so
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat2}
+GROUP ( /lib/libgcc_s.so.1 libgcc.a )' > $FULLPATH/32/libgcc_s.so
+%endif
+
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
+cp -a %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a \
+  $FULLLPATH/libstdc++_nonshared.a
+
+%if 0%{?rhel} <= 7
+# Build libgomp_nonshared.a with the system RHEL 7 compiler.  Use -O2 to
+# get tailcalls.
+gcc %{SOURCE4} -O2 -c
+ar rcs libgomp_nonshared.a libgomp_nonshared.o
+cp -a libgomp_nonshared.a $FULLLPATH
+%ifarch x86_64
+# Only need this for -m32 on x86_64.  devtoolset-N-gcc isn't multilib,
+# and we don't have a devtoolset-N-libgomp-devel subpackage.
+gcc %{SOURCE4} -O2 -c -m32 -o libgomp_nonshared32.o
+ar rcs libgomp_nonshared32.a libgomp_nonshared32.o
+cp -a libgomp_nonshared32.a $FULLLPATH/32/libgomp_nonshared.a
+%endif
+%endif
+
+rm -f $FULLEPATH/libgccjit.so
+mkdir -p %{buildroot}%{_prefix}/%{_lib}/
+cp -a objlibgccjit/gcc/libgccjit.so.* %{buildroot}%{_prefix}/%{_lib}/
+rm -f $FULLPATH/libgccjit.so
+echo '/* GNU ld script */
+%{oformat}
+INPUT ( %{_prefix}/%{_lib}/libgccjit.so.0 )' > $FULLPATH/libgccjit.so
+cp -a ../gcc/jit/libgccjit*.h $FULLPATH/include/
+/usr/bin/install -c -m 644 objlibgccjit/gcc/doc/libgccjit.info %{buildroot}/%{_infodir}/
+gzip -9 %{buildroot}/%{_infodir}/libgccjit.info
+
+
+pushd $FULLPATH
+%if 0%{?rhel} <= 7
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libgomp.so.1 -lgomp_nonshared )' > libgomp.so
+%else
+echo '/* GNU ld script */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libgomp.so.1 )' > libgomp.so
+%endif
+
+%if 0%{?rhel} <= 8
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared )' > libstdc++.so
+%else
+echo '%{oformat}
+INPUT ( %{_root_prefix}/%{_lib}/libstdc++.so.6 )' > libstdc++.so
+%endif
+
+rm -f libgfortran.so
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libgfortran.so.5 )' > libgfortran.so
+%if %{build_libquadmath}
+rm -f libquadmath.so
+echo '/* GNU ld script */
+%{oformat}
+%if 0%{!?scl:1}
+INPUT ( %{_prefix}/%{_lib}/libquadmath.so.0 )' > libquadmath.so
+%else
+%if 0%{?rhel} >= 7
+INPUT ( %{_root_prefix}/%{_lib}/libquadmath.so.0 )' > libquadmath.so
+%else
+INPUT ( libquadmath.a )' > libquadmath.so
+%endif
+%endif
+%endif
+%if %{build_libitm}
+rm -f libitm.so
+echo '/* GNU ld script */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libitm.so.1 )' > libitm.so
+%endif
+%if %{build_libatomic}
+rm -f libatomic.so
+echo '/* GNU ld script */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libatomic.so.1 )' > libatomic.so
+%endif
+%if %{build_libasan}
+rm -f libasan.so
+echo '/* GNU ld script */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libasan.so.5 )' > libasan.so
+%endif
+%if %{build_libtsan}
+rm -f libtsan.so
+echo '/* GNU ld script */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libtsan.so.0 )' > libtsan.so
+%endif
+%if %{build_libubsan}
+rm -f libubsan.so
+echo '/* GNU ld script */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libubsan.so.1 )' > libubsan.so
+%endif
+%if %{build_liblsan}
+rm -f liblsan.so
+echo '/* GNU ld script */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/liblsan.so.0 )' > liblsan.so
+%endif
+mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++fs.*a $FULLLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libsupc++.*a .
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.*a .
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.*a .
+%if %{build_libquadmath}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libquadmath.*a $FULLLPATH/
+%endif
+%if %{build_libitm}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libitm.*a $FULLLPATH/
+%endif
+%if %{build_libatomic}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libatomic.*a $FULLLPATH/
+%endif
+%if %{build_libasan}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libasan.*a $FULLLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libasan_preinit.o $FULLLPATH/
+%endif
+%if %{build_libtsan}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan.*a $FULLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan_preinit.o $FULLPATH/
+%endif
+%if %{build_libubsan}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libubsan.*a $FULLLPATH/
+%endif
+%if %{build_liblsan}
+mv -f %{buildroot}%{_prefix}/%{_lib}/liblsan.*a $FULLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/liblsan_preinit.o $FULLPATH/
+%endif
+
+%ifarch sparcv9 ppc
+%if 0%{?rhel} <= 8
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libstdc++.so.6 -lstdc++_nonshared )' > 64/libstdc++.so
+%else
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat2}
+INPUT ( %{_root_prefix}/lib64/libstdc++.so.6 )' > 64/libstdc++.so
+%endif
+rm -f 64/libgfortran.so
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libgfortran.so.5 )' > 64/libgfortran.so
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libgomp.so.1 )' > 64/libgomp.so
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{_prefix}/lib64/libgccjit.so.0 )' > 64/libgccjit.so
+%if %{build_libquadmath}
+rm -f 64/libquadmath.so
+echo '/* GNU ld script */
+%{oformat2}
+%if 0%{!?scl:1}
+INPUT ( %{_prefix}/lib64/libquadmath.so.0 )' > 64/libquadmath.so
+%else
+%if 0%{?rhel} >= 7
+INPUT ( %{_root_prefix}/lib64/libquadmath.so.0 )' > 64/libquadmath.so
+%else
+INPUT ( libquadmath.a )' > 64/libquadmath.so
+%endif
+%endif
+%endif
+%if %{build_libitm}
+rm -f 64/libitm.so
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libitm.so.1 )' > 64/libitm.so
+%endif
+%if %{build_libatomic}
+rm -f 64/libatomic.so
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libatomic.so.1 )' > 64/libatomic.so
+%endif
+%if %{build_libasan}
+rm -f 64/libasan.so
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libasan.so.5 )' > 64/libasan.so
+%endif
+%if %{build_libubsan}
+rm -f 64/libubsan.so
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libubsan.so.1 )' > 64/libubsan.so
+%endif
+mv -f %{buildroot}%{_prefix}/lib64/libsupc++.*a 64/
+mv -f %{buildroot}%{_prefix}/lib64/libgfortran.*a 64/
+mv -f %{buildroot}%{_prefix}/lib64/libgomp.*a 64/
+%if %{build_libquadmath}
+mv -f %{buildroot}%{_prefix}/lib64/libquadmath.*a 64/
+%endif
+ln -sf lib32/libstdc++.a libstdc++.a
+ln -sf ../lib64/libstdc++.a 64/libstdc++.a
+ln -sf lib32/libstdc++fs.a libstdc++fs.a
+ln -sf ../lib64/libstdc++fs.a 64/libstdc++fs.a
+ln -sf lib32/libstdc++_nonshared.a libstdc++_nonshared.a
+ln -sf ../lib64/libstdc++_nonshared.a 64/libstdc++_nonshared.a
+%if %{build_libquadmath}
+ln -sf lib32/libquadmath.a libquadmath.a
+ln -sf ../lib64/libquadmath.a 64/libquadmath.a
+%endif
+%if %{build_libitm}
+ln -sf lib32/libitm.a libitm.a
+ln -sf ../lib64/libitm.a 64/libitm.a
+%endif
+%if %{build_libatomic}
+ln -sf lib32/libatomic.a libatomic.a
+ln -sf ../lib64/libatomic.a 64/libatomic.a
+%endif
+%if %{build_libasan}
+ln -sf lib32/libasan.a libasan.a
+ln -sf ../lib64/libasan.a 64/libasan.a
+ln -sf lib32/libasan_preinit.o libasan_preinit.o
+ln -sf ../lib64/libasan_preinit.o 64/libasan_preinit.o
+%endif
+%if %{build_libubsan}
+ln -sf lib32/libubsan.a libubsan.a
+ln -sf ../lib64/libubsan.a 64/libubsan.a
+%endif
+%endif
+%ifarch %{multilib_64_archs}
+mkdir -p 32
+%if 0%{?rhel} <= 8
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libstdc++.so.6 -lstdc++_nonshared )' > 32/libstdc++.so
+%else
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat2}
+INPUT ( %{_root_prefix}/lib/libstdc++.so.6 )' > 32/libstdc++.so
+%endif
+rm -f 32/libgfortran.so
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libgfortran.so.5 )' > 32/libgfortran.so
+
+%if 0%{?rhel} <= 7
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libgomp.so.1 -lgomp_nonshared )' > 32/libgomp.so
+%else
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libgomp.so.1 )' > 32/libgomp.so
+%endif
+
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{_prefix}/lib/libgccjit.so.0 )' > 32/libgccjit.so
+%if %{build_libquadmath}
+rm -f 32/libquadmath.so
+echo '/* GNU ld script */
+%{oformat2}
+%if 0%{!?scl:1}
+INPUT ( %{_prefix}/lib/libquadmath.so.0 )' > 32/libquadmath.so
+%else
+%if 0%{?rhel} >= 7
+INPUT ( %{_root_prefix}/lib/libquadmath.so.0 )' > 32/libquadmath.so
+%else
+INPUT ( libquadmath.a )' > 32/libquadmath.so
+%endif
+%endif
+%endif
+%if %{build_libitm}
+rm -f 32/libitm.so
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libitm.so.1 )' > 32/libitm.so
+%endif
+%if %{build_libatomic}
+rm -f 32/libatomic.so
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libatomic.so.1 )' > 32/libatomic.so
+%endif
+%if %{build_libasan}
+rm -f 32/libasan.so
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libasan.so.5 )' > 32/libasan.so
+%endif
+%if %{build_libubsan}
+rm -f 32/libubsan.so
+echo '/* GNU ld script */
+%{oformat2}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libubsan.so.1 )' > 32/libubsan.so
+%endif
+mv -f %{buildroot}%{_prefix}/lib/libsupc++.*a 32/
+mv -f %{buildroot}%{_prefix}/lib/libgfortran.*a 32/
+mv -f %{buildroot}%{_prefix}/lib/libgomp.*a 32/
+%if %{build_libquadmath}
+mv -f %{buildroot}%{_prefix}/lib/libquadmath.*a 32/
+%endif
+%endif
+%ifarch sparc64 ppc64
+ln -sf ../lib32/libstdc++.a 32/libstdc++.a
+ln -sf lib64/libstdc++.a libstdc++.a
+ln -sf ../lib32/libstdc++fs.a 32/libstdc++fs.a
+ln -sf lib64/libstdc++fs.a libstdc++fs.a
+%if 0%{?rhel} <= 8
+ln -sf ../lib32/libstdc++_nonshared.a 32/libstdc++_nonshared.a
+ln -sf lib64/libstdc++_nonshared.a libstdc++_nonshared.a
+%endif
+%if 0%{?rhel} <= 7
+ln -sf lib64/libgomp_nonshared.a libgomp_nonshared.a
+%endif
+%if %{build_libquadmath}
+ln -sf ../lib32/libquadmath.a 32/libquadmath.a
+ln -sf lib64/libquadmath.a libquadmath.a
+%endif
+%if %{build_libitm}
+ln -sf ../lib32/libitm.a 32/libitm.a
+ln -sf lib64/libitm.a libitm.a
+%endif
+%if %{build_libatomic}
+ln -sf ../lib32/libatomic.a 32/libatomic.a
+ln -sf lib64/libatomic.a libatomic.a
+%endif
+%if %{build_libasan}
+ln -sf ../lib32/libasan.a 32/libasan.a
+ln -sf lib64/libasan.a libasan.a
+ln -sf ../lib32/libasan_preinit.o 32/libasan_preinit.o
+ln -sf lib64/libasan_preinit.o libasan_preinit.o
+%endif
+%if %{build_libubsan}
+ln -sf ../lib32/libubsan.a 32/libubsan.a
+ln -sf lib64/libubsan.a libubsan.a
+%endif
+%else
+%ifarch %{multilib_64_archs}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libstdc++.a 32/libstdc++.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libstdc++fs.a 32/libstdc++fs.a
+%if 0%{?rhel} <= 8
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libstdc++_nonshared.a 32/libstdc++_nonshared.a
+%endif
+%if %{build_libquadmath}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libquadmath.a 32/libquadmath.a
+%endif
+%if %{build_libitm}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libitm.a 32/libitm.a
+%endif
+%if %{build_libatomic}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libatomic.a 32/libatomic.a
+%endif
+%if %{build_libasan}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libasan.a 32/libasan.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libasan_preinit.o 32/libasan_preinit.o
+%endif
+%if %{build_libubsan}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libubsan.a 32/libubsan.a
+%endif
+%endif
+%endif
+
+# If we are building a debug package then copy all of the static archives
+# into the debug directory to keep them as unstripped copies.
+%if 0%{?_enable_debug_packages}
+mkdir -p $RPM_BUILD_ROOT%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+adirs="$FULLPATH"
+if [ $FULLLPATH -ne $FULLPATH ]; then
+  adirs="$adirs $FULLLPATH"
+fi
+for f in `find $adirs -maxdepth 1 -a \
+		 \( -name libgfortran.a -o -name libgomp.a \
+		    -o -name libgcc.a -o -name libgcc_eh.a -o -name libgcov.a \
+		    -o -name libquadmath.a -o -name libitm.a \
+		    -o -name libatomic.a -o -name libasan.a \
+		    -o -name libtsan.a -o -name libubsan.a \
+		    -o -name liblsan.a \
+		    -o -name libcc1.a \
+		    -o -name libstdc++_nonshared.a \
+		    -o -name libgomp_nonshared.a \
+		    -o -name libsupc++.a \
+		    -o -name libstdc++.a -o -name libcaf_single.a \
+		    -o -name libstdc++fs.a \) -a -type f`; do
+  cp -a $f $RPM_BUILD_ROOT%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/
+done
+%endif
+
+# Strip debug info from Fortran/ObjC/Java static libraries
+strip -g `find . \( -name libgfortran.a  -o -name libgomp.a \
+		    -o -name libgcc.a -o -name libgcov.a \
+		    -o -name libquadmath.a -o -name libitm.a \
+		    -o -name libatomic.a -o -name libasan.a \
+		    -o -name libtsan.a -o -name libubsan.a \
+		    -o -name liblsan.a \
+		    -o -name libcc1.a \) -a -type f`
+popd
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgfortran.so.5.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgomp.so.1.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.*
+%if %{build_libquadmath}
+%if 0%{!?scl:1}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.*
+%endif
+%endif
+%if %{build_libitm}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.*
+%if 0%{?scl:1}
+mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
+mv %{buildroot}%{_prefix}/%{_lib}/libitm.so.1* %{buildroot}%{_root_prefix}/%{_lib}/
+mkdir -p %{buildroot}%{_root_infodir}
+%if 0%{?rhel} <= 7
+mv %{buildroot}%{_infodir}/libitm.info* %{buildroot}%{_root_infodir}/
+%endif
+%endif
+%endif
+%if %{build_libatomic}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libatomic.so.1.*
+%if 0%{?scl:1}
+mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
+mv %{buildroot}%{_prefix}/%{_lib}/libatomic.so.1* %{buildroot}%{_root_prefix}/%{_lib}/
+mkdir -p %{buildroot}%{_root_infodir}
+%endif
+%endif
+%if %{build_libasan}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.5.*
+%if 0%{?scl:1}
+mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
+mv %{buildroot}%{_prefix}/%{_lib}/libasan.so.5* %{buildroot}%{_root_prefix}/%{_lib}/
+mkdir -p %{buildroot}%{_root_infodir}
+%endif
+%endif
+%if %{build_libtsan}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0.*
+%if 0%{?scl:1}
+mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
+mv %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0* %{buildroot}%{_root_prefix}/%{_lib}/
+mkdir -p %{buildroot}%{_root_infodir}
+%endif
+%endif
+%if %{build_libubsan}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libubsan.so.1.*
+%if 0%{?scl:1}
+mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
+mv %{buildroot}%{_prefix}/%{_lib}/libubsan.so.1* %{buildroot}%{_root_prefix}/%{_lib}/
+mkdir -p %{buildroot}%{_root_infodir}
+%endif
+%endif
+%if %{build_liblsan}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
+%if 0%{?scl:1}
+mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
+mv %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0* %{buildroot}%{_root_prefix}/%{_lib}/
+mkdir -p %{buildroot}%{_root_infodir}
+%endif
+%endif
+
+mv $FULLPATH/include-fixed/syslimits.h $FULLPATH/include/syslimits.h
+mv $FULLPATH/include-fixed/limits.h $FULLPATH/include/limits.h
+for h in `find $FULLPATH/include -name \*.h`; do
+  if grep -q 'It has been auto-edited by fixincludes from' $h; then
+    rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'`
+    diff -up $rh $h || :
+    rm -f $h
+  fi
+done
+
+
+cd ..
+
+%if 0%{!?scl:1}
+for i in %{buildroot}%{_prefix}/bin/{*gcc,*++,gcov,gfortran,gcc-ar,gcc-nm,gcc-ranlib}; do
+  mv -f $i ${i}5
+done
+%endif
+
+# Remove binaries we will not be including, so that they don't end up in
+# gcc-debuginfo
+rm -f %{buildroot}%{_prefix}/%{_lib}/{libffi*,libiberty.a,libmudflap*,libstdc++*,libgfortran*}
+%if 0%{?scl:1}
+rm -f %{buildroot}%{_prefix}/%{_lib}/{libquadmath*,libitm*,libatomic*,libasan*,libtsan*,libubsan*,liblsan*}
+%else
+%if 0%{?rhel} >= 7
+rm -f %{buildroot}%{_prefix}/%{_lib}/{libitm*,libatomic*}
+%endif
+%endif
+rm -f %{buildroot}%{_prefix}/%{_lib}/libgomp*
+rm -f %{buildroot}/%{_lib}/libgcc_s*
+rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
+rm -f %{buildroot}%{_prefix}/lib/{32,64}/libiberty.a
+rm -f %{buildroot}%{_prefix}/%{_lib}/libssp*
+rm -f %{buildroot}%{_prefix}/%{_lib}/libvtv* || :
+rm -f %{buildroot}/lib/cpp
+rm -f %{buildroot}/%{_lib}/libgcc_s*
+rm -f %{buildroot}%{_prefix}/bin/{f95,gccbug,gnatgcc*}
+rm -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gfortran
+%if 0%{!?scl:1}
+rm -f %{buildroot}%{_prefix}/bin/{*c++*,cc,cpp}
+%endif
+rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gfortran || :
+
+%ifarch %{multilib_64_archs}
+# Remove libraries for the other arch on multilib arches
+rm -f %{buildroot}%{_prefix}/lib/lib*.so*
+rm -f %{buildroot}%{_prefix}/lib/lib*.a
+rm -f %{buildroot}/lib/libgcc_s*.so*
+%else
+%ifarch sparcv9 ppc
+rm -f %{buildroot}%{_prefix}/lib64/lib*.so*
+rm -f %{buildroot}%{_prefix}/lib64/lib*.a
+rm -f %{buildroot}/lib64/libgcc_s*.so*
+%endif
+%endif
+
+%ifnarch sparc64 ppc64
+%ifarch %{multilib_64_archs}
+cat <<\EOF > %{buildroot}%{_prefix}/bin/%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}-gcc-%{gcc_major}
+#!/bin/sh
+%ifarch s390x
+exec %{gcc_target_platform}-gcc-%{gcc_major} -m31 "$@"
+%else
+exec %{gcc_target_platform}-gcc-%{gcc_major} -m32 "$@"
+%endif
+EOF
+chmod 755 %{buildroot}%{_prefix}/bin/%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}-gcc-%{gcc_major}
+%endif
+%endif
+
+# Help plugins find out nvra.
+echo gcc-%{version}-%{release}.%{arch} > $FULLPATH/rpmver
+
+%check
+cd obj-%{gcc_target_platform}
+
+%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
+%if 0%{?rhel} <= 8
+# Test against the system libstdc++.so.6 + libstdc++_nonshared.a combo
+mv %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so.6{,.not_here}
+mv %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so{,.not_here}
+ln -sf %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 \
+  %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so.6
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+%{oformat}
+INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared )' \
+  > %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so
+cp -a %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a \
+  %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared.a
+%endif
+
+# run the tests.
+make %{?_smp_mflags} -k check RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}'" || :
+( LC_ALL=C ../contrib/test_summary -t || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' > testresults
+rm -rf gcc/testsuite.prev
+mv gcc/testsuite{,.prev}
+rm -f gcc/site.exp
+make %{?_smp_mflags} -C gcc -k check-gcc check-g++ ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}' compat.exp struct-layout-1.exp" || :
+mv gcc/testsuite/gcc/gcc.sum{,.sent}
+mv gcc/testsuite/g++/g++.sum{,.sent}
+( LC_ALL=C ../contrib/test_summary -o -t || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' > testresults2
+rm -rf gcc/testsuite.compat
+mv gcc/testsuite{,.compat}
+mv gcc/testsuite{.prev,}
+echo ====================TESTING=========================
+cat testresults
+echo ===`gcc --version | head -1` compatibility tests====
+cat testresults2
+echo ====================TESTING END=====================
+mkdir testlogs-%{_target_platform}-%{version}-%{release}
+for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats.*/tests/'`; do
+  ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || :
+done
+for i in `find gcc/testsuite.compat -name \*.log | grep -v 'config.log\|acats.*/tests/'`; do
+  ln $i testlogs-%{_target_platform}-%{version}-%{release}/`basename $i`.compat || :
+done
+tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \
+  | uuencode testlogs-%{_target_platform}.tar.bz2 || :
+rm -rf testlogs-%{_target_platform}-%{version}-%{release}
+
+
+%if 0%{?scl:1}
+%post gfortran
+if [ -f %{_infodir}/gfortran.info.gz ]; then
+  /sbin/install-info \
+    --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
+fi
+
+%preun gfortran
+if [ $1 = 0 -a -f %{_infodir}/gfortran.info.gz ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
+fi
+%endif
+
+%post gdb-plugin -p /sbin/ldconfig
+
+%postun gdb-plugin -p /sbin/ldconfig
+
+%post -n %{?scl_prefix}libgccjit -p /sbin/ldconfig
+
+%postun -n %{?scl_prefix}libgccjit -p /sbin/ldconfig
+
+%post -n %{?scl_prefix}libgccjit-docs
+if [ -f %{_infodir}/libgccjit.info.gz ]; then
+  /sbin/install-info \
+    --info-dir=%{_infodir} %{_infodir}/libgccjit.info.gz || :
+fi
+
+%preun -n %{?scl_prefix}libgccjit-docs
+if [ $1 = 0 -a -f %{_infodir}/libgccjit.info.gz ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/libgccjit.info.gz || :
+fi
+
+%post -n libquadmath
+/sbin/ldconfig
+if [ -f %{_infodir}/libquadmath.info.gz ]; then
+  /sbin/install-info \
+    --info-dir=%{_infodir} %{_infodir}/libquadmath.info.gz || :
+fi
+
+%preun -n libquadmath
+if [ $1 = 0 -a -f %{_infodir}/libquadmath.info.gz ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/libquadmath.info.gz || :
+fi
+
+%postun -n libquadmath -p /sbin/ldconfig
+
+%post -n libitm
+/sbin/ldconfig
+if [ -f %{_infodir}/libitm.info.gz ]; then
+  /sbin/install-info \
+    --info-dir=%{_infodir} %{_infodir}/libitm.info.gz || :
+fi
+
+%preun -n libitm
+if [ $1 = 0 -a -f %{_infodir}/libitm.info.gz ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/libitm.info.gz || :
+fi
+
+%postun -n libitm -p /sbin/ldconfig
+
+%post -n libatomic -p /sbin/ldconfig
+
+%postun -n libatomic -p /sbin/ldconfig
+
+%post -n libasan5 -p /sbin/ldconfig
+
+%postun -n libasan5 -p /sbin/ldconfig
+
+%post -n libtsan -p /sbin/ldconfig
+
+%postun -n libtsan -p /sbin/ldconfig
+
+%post -n libubsan1 -p /sbin/ldconfig
+
+%postun -n libubsan1 -p /sbin/ldconfig
+
+%post -n liblsan -p /sbin/ldconfig
+
+%postun -n liblsan -p /sbin/ldconfig
+
+%files
+%{_prefix}/bin/gcc%{!?scl:5}
+%{_prefix}/bin/gcov%{!?scl:5}
+%{_prefix}/bin/gcov-tool%{!?scl:5}
+%{_prefix}/bin/gcov-dump%{!?scl:5}
+%{_prefix}/bin/gcc-ar%{!?scl:5}
+%{_prefix}/bin/gcc-nm%{!?scl:5}
+%{_prefix}/bin/gcc-ranlib%{!?scl:5}
+%ifarch ppc
+%{_prefix}/bin/%{_target_platform}-gcc%{!?scl:5}
+%endif
+%ifarch sparc64 sparcv9
+%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}%{?_gnu}-gcc%{!?scl:5}
+%endif
+%ifarch ppc64 ppc64p7
+%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}%{?_gnu}-gcc%{!?scl:5}
+%endif
+%{_prefix}/bin/%{gcc_target_platform}-gcc%{!?scl:5}
+%{_prefix}/bin/%{gcc_target_platform}-gcc-%{gcc_major}
+%ifnarch sparc64 ppc64
+%ifarch %{multilib_64_archs}
+%{_prefix}/bin/%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}-gcc-%{gcc_major}
+%endif
+%endif
+%if 0%{?scl:1}
+%{_prefix}/bin/cc
+%{_prefix}/bin/cpp
+%{_mandir}/man1/gcc.1*
+%{_mandir}/man1/cpp.1*
+%{_mandir}/man1/gcov.1*
+%{_mandir}/man1/gcov-tool.1*
+%{_mandir}/man1/gcov-dump.1*
+%{_infodir}/gcc*
+%{_infodir}/cpp*
+%endif
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/lto1
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/lto-wrapper
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/liblto_plugin.so*
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/rpmver
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stddef.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdarg.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdfix.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/varargs.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/float.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/limits.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdbool.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/iso646.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/syslimits.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/unwind.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/omp.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/openacc.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdint.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdint-gcc.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdalign.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdnoreturn.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdatomic.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/gcov.h
+%ifarch %{ix86} x86_64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/emmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ammintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/smmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/nmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/wmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/immintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/fma4intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xopintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/lwpintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/popcntintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmiintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tbmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia32intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx2intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmi2intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/f16cintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/fmaintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/lzcntintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/rtmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xtestintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/adxintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/prfchwintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/rdseedintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/fxsrintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsaveintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsaveoptintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512cdintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512erintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512pfintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/shaintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm_malloc.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm3dnow.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cpuid.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cross-stdarg.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bwintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512dqintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512ifmaintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512ifmavlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vbmiintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vbmivlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vlbwintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vldqintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clflushoptintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clwbintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mwaitxintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsavecintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsavesintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clzerointrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pkuintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx5124fmapsintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx5124vnniwintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vpopcntdqintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sgxintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/gfniintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cetintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cet.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vbmi2intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vbmi2vlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vnniintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vnnivlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vaesintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vpclmulqdqintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vpopcntdqvlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bitalgintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pconfigintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/wbnoinvdintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/movdirintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/waitpkgintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cldemoteintrin.h
+%endif
+%ifarch ia64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h
+%endif
+%ifarch ppc ppc64 ppc64le ppc64p7
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ppc-asm.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/altivec.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ppu_intrinsics.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/si2vmx.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/spu2vmx.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vec_types.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmi2intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmiintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm_malloc.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/emmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/smmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amo.h
+%endif
+%ifarch %{arm}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/unwind-arm-common.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_neon.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_acle.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_cmse.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_fp16.h
+%endif
+%ifarch aarch64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_neon.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_acle.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_fp16.h
+%endif
+%ifarch sparc sparcv9 sparc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/visintrin.h
+%endif
+%ifarch s390 s390x
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/s390intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vecintrin.h
+%endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer
+%endif
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cc1
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/collect2
+%if 0%{?scl:1}
+%if 0%{?rhel} <= 7
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ar
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/as
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ld
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ld.bfd
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ld.gold
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/nm
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/objcopy
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ranlib
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/strip
+%endif
+%endif
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_eh.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_s.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.spec
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.so
+%if 0%{?rhel} <= 7
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp_nonshared.a
+%endif
+%if %{build_libitm}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.spec
+%endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsanitizer.spec
+%endif
+%ifarch sparcv9 sparc64 ppc ppc64
+%if %{build_libquadmath}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.so
+%endif
+%endif
+%if %{build_isl}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libisl.so.*
+%endif
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_eh.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_s.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgomp.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgomp.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgccjit.so
+%if %{build_libquadmath}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libquadmath.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libquadmath.so
+%endif
+%if %{build_libitm}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libitm.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libitm.so
+%endif
+%if %{build_libatomic}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic.so
+%endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan_preinit.o
+%endif
+%if %{build_libubsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libubsan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libubsan.so
+%endif
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_eh.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_s.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.so
+
+# Add libgomp_nonshared.a
+%if 0%{?rhel} <= 7
+%ifarch x86_64
+# Need it for -m32.
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp_nonshared.a
+%endif
+%ifarch ppc64
+# We've created a symlink to lib64/libgomp_nonshared.a, so add it.
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libgomp_nonshared.a
+%endif
+%endif
+
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgccjit.so
+%if %{build_libquadmath}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libquadmath.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libquadmath.so
+%endif
+%if %{build_libitm}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libitm.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libitm.so
+%endif
+%if %{build_libatomic}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.so
+%endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan_preinit.o
+%endif
+%if %{build_libubsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.so
+%endif
+%endif
+%ifarch sparcv9 sparc64 ppc ppc64 ppc64p7
+%if %{build_libquadmath}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.so
+%endif
+%if %{build_libitm}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.so
+%endif
+%if %{build_libatomic}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so
+%endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan_preinit.o
+%endif
+%if %{build_libubsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.so
+%endif
+%if %{build_libtsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
+%endif
+%if %{build_liblsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so
+%endif
+%endif
+%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING* COPYING.RUNTIME
+
+%files c++
+%{_prefix}/bin/%{gcc_target_platform}-g++%{!?scl:5}
+%{_prefix}/bin/g++%{!?scl:5}
+%if 0%{?scl:1}
+%{_prefix}/bin/%{gcc_target_platform}-c++
+%{_prefix}/bin/c++
+%{_mandir}/man1/g++.1*
+%endif
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cc1plus
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++fs.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++_nonshared.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libsupc++.a
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++fs.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++_nonshared.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libsupc++.a
+%endif
+%ifarch sparcv9 ppc %{multilib_64_archs}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsupc++.a
+%endif
+%ifarch sparcv9 sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_nonshared.a
+%endif
+%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
+
+%files -n %{?scl_prefix}libstdc++%{!?scl:5}-devel
+%defattr(-,root,root,-)
+%dir %{_prefix}/include/c++
+%{_prefix}/include/c++/%{gcc_major}
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++fs.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++_nonshared.a
+%endif
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++fs.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++_nonshared.a
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_nonshared.a
+%endif
+%ifnarch sparcv9 ppc %{multilib_64_archs}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsupc++.a
+%endif
+%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README*
+
+
+%if %{build_libstdcxx_docs}
+%files -n %{?scl_prefix}libstdc++%{!?scl:5}-docs
+%{_mandir}/man3/*
+%doc rpm.doc/libstdc++-v3/html
+%endif
+
+%files gfortran
+%{_prefix}/bin/gfortran%{!?scl:5}
+%if 0%{?scl:1}
+%{_mandir}/man1/gfortran.1*
+%{_infodir}/gfortran*
+%endif
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.f90
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib_kinds.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc.f90
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc_kinds.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc_lib.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/ieee_arithmetic.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/ieee_exceptions.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/ieee_features.mod
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/f951
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran.spec
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libcaf_single.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran.so
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libcaf_single.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgfortran.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/finclude
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libcaf_single.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgfortran.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/finclude
+%endif
+%doc rpm.doc/gfortran/*
+
+%if %{build_libquadmath}
+%files -n %{?scl_prefix}libquadmath-devel
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/quadmath.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/quadmath_weak.h
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libquadmath.a
+%endif
+%ifarch sparc64 ppc64 ppc64p7
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libquadmath.a
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.so
+%endif
+%doc rpm.doc/libquadmath/ChangeLog*
+%endif
+
+%if %{build_libitm}
+%files -n %{?scl_prefix}libitm-devel
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libitm.a
+%endif
+%ifarch sparc64 ppc64 ppc64p7
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libitm.a
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.a
+%endif
+%doc rpm.doc/libitm/ChangeLog*
+%endif
+
+%if %{build_libatomic}
+%files -n %{?scl_prefix}libatomic-devel
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libatomic.a
+%endif
+%ifarch sparc64 ppc64 ppc64p7
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libatomic.a
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a
+%endif
+%doc rpm.doc/changelogs/libatomic/ChangeLog*
+%endif
+
+%if %{build_libasan}
+# GTS 9 libasan5 would clash with the system RHEL 8 libasan.
+%if 0%{?rhel} < 8
+%files -n libasan5
+%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libasan.so.5*
+%endif
+
+%files -n %{?scl_prefix}libasan-devel
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libasan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libasan_preinit.o
+%endif
+%ifarch sparc64 ppc64 ppc64p7
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libasan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libasan_preinit.o
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan_preinit.o
+%endif
+%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%endif
+
+%if %{build_libtsan}
+%files -n libtsan
+%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libtsan.so.0*
+
+%files -n %{?scl_prefix}libtsan-devel
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan_preinit.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.a
+%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%endif
+
+%if %{build_libubsan}
+# GTS 9 libubsan1 would clash with the system RHEL 8 libubsan.
+%if 0%{?rhel} < 8
+%files -n libubsan1
+%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libubsan.so.1*
+%endif
+
+%files -n %{?scl_prefix}libubsan-devel
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.a
+%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%endif
+
+%if %{build_liblsan}
+%files -n liblsan
+%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/liblsan.so.0*
+
+%files -n %{?scl_prefix}liblsan-devel
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan_preinit.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.a
+%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%endif
+
+%files -n %{?scl_prefix}libgccjit
+%{_prefix}/%{_lib}/libgccjit.so*
+%doc rpm.doc/changelogs/gcc/jit/ChangeLog*
+
+%files -n %{?scl_prefix}libgccjit-devel
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgccjit.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/libgccjit*.h
+
+%files -n %{?scl_prefix}libgccjit-docs
+%{_infodir}/libgccjit.info*
+%doc rpm.doc/libgccjit-devel/*
+%doc gcc/jit/docs/examples
+
+%files plugin-devel
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gtype.state
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/include
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
+
+%files gdb-plugin
+%{_prefix}/%{_lib}/libcc1.so*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/libcc1plugin.so*
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/libcp1plugin.so*
+%doc rpm.doc/changelogs/libcc1/ChangeLog*
+
+%changelog
+* Thu Nov 21 2019 Marek Polacek <polacek@redhat.com> 9.1.1-2.6
+- fix libgomp_nonshared.a symlink on ppc64
+
+* Tue Nov 19 2019 Marek Polacek <polacek@redhat.com> 9.1.1-2.5
+- add libgomp_nonshared.a (#1769957)
+
+* Thu Aug 15 2019 Marek Polacek <polacek@redhat.com> 9.1.1-2.4
+- require binutils >= 2.31 so that gcc supports -mpltseq
+
+* Fri Aug  9 2019 Marek Polacek <polacek@redhat.com> 9.1.1-2.3
+- fix visibility of symbols in gcc9-libstdc++-compat.patch (#1738677)
+
+* Mon Jul 22 2019 Marek Polacek <polacek@redhat.com> 9.1.1-2.2
+- small fixes for the Fortran patches (#1728355)
+
+* Mon Jul 22 2019 Marek Polacek <polacek@redhat.com> 9.1.1-2.1
+- updates from GTS 9 gcc
+
+* Fri Jul 19 2019 Marek Polacek <polacek@redhat.com> 9.1.1-2
+- fix Release
+
+* Thu Jul 18 2019 Marek Polacek <polacek@redhat.com> 9.1.1-1.1
+- fix out-of-ssa with unsupported vector types (PR rtl-optimization/90756,
+  #1727979)
+- apply Fortran patches (#1728355)
+
+* Tue Jul  9 2019 Marek Polacek <polacek@redhat.com> 9.1.1-1
+- new package
+- fix library requires: use %{_isa} (#1697655)