diff --git a/.devtoolset-4-gcc.metadata b/.devtoolset-4-gcc.metadata
index 59715fa..e7c89b3 100644
--- a/.devtoolset-4-gcc.metadata
+++ b/.devtoolset-4-gcc.metadata
@@ -1,4 +1,4 @@
7f4348418dc3efefd357b32a2b5c8010211ab284 SOURCES/doxygen-1.8.0.src.tar.gz
-84f20f8ae52afc3a404c83671b1d0be2d08ad8f4 SOURCES/gcc-5.2.1-20150902.tar.bz2
+2b75e91f3a19e466580b04b057ec7ad251333221 SOURCES/gcc-5.3.1-20160406.tar.bz2
b09e25df265c97ed54002cd811d227a9a26c5f9c SOURCES/isl-0.14.tar.bz2
5ef03ca7aee134fe7dfecb6c9d048799f0810278 SOURCES/mpc-0.8.1.tar.gz
diff --git a/.gitignore b/.gitignore
index d985a27..735efe6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
SOURCES/doxygen-1.8.0.src.tar.gz
-SOURCES/gcc-5.2.1-20150902.tar.bz2
+SOURCES/gcc-5.3.1-20160406.tar.bz2
SOURCES/isl-0.14.tar.bz2
SOURCES/mpc-0.8.1.tar.gz
diff --git a/SOURCES/gcc5-isl-dl.patch b/SOURCES/gcc5-isl-dl.patch
index 104296f..1322cd2 100644
--- a/SOURCES/gcc5-isl-dl.patch
+++ b/SOURCES/gcc5-isl-dl.patch
@@ -1,6 +1,6 @@
---- gcc/Makefile.in.jj 2012-12-13 17:09:20.000000000 +0100
-+++ gcc/Makefile.in 2012-12-14 11:45:22.585670055 +0100
-@@ -1006,7 +1006,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
+--- gcc/Makefile.in.jj 2015-06-06 10:00:25.000000000 +0200
++++ gcc/Makefile.in 2015-11-04 14:56:02.643536437 +0100
+@@ -1013,7 +1013,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
# and the system's installed libraries.
LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
@@ -9,7 +9,7 @@
$(ZLIB)
# Any system libraries needed just for GNAT.
SYSLIBS = @GNAT_LIBEXC@
-@@ -2050,6 +2050,15 @@ $(out_object_file): $(out_file)
+@@ -2058,6 +2058,15 @@ $(out_object_file): $(out_file)
$(common_out_object_file): $(common_out_file)
$(COMPILE) $<
$(POSTCOMPILE)
@@ -25,9 +25,9 @@
#
# Generate header and source files from the machine description,
# and compile them.
---- gcc/graphite-poly.h.jj 2012-12-13 11:31:27.000000000 +0100
-+++ gcc/graphite-poly.h 2012-12-14 13:41:41.970800726 +0100
-@@ -22,6 +22,478 @@ along with GCC; see the file COPYING3.
+--- gcc/graphite-poly.h.jj 2015-11-04 14:15:36.000000000 +0100
++++ gcc/graphite-poly.h 2015-11-04 14:59:46.066375844 +0100
+@@ -22,6 +22,489 @@ along with GCC; see the file COPYING3.
#ifndef GCC_GRAPHITE_POLY_H
#define GCC_GRAPHITE_POLY_H
@@ -39,12 +39,19 @@
+#include
+#include
+#include
++#include
+#include
+#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+#define DYNSYM_ZERO_DISTANCE DYNSYM (isl_band_member_is_coincident)
+#else
+#define DYNSYM_ZERO_DISTANCE DYNSYM (isl_band_member_is_zero_distance)
+#endif
++#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
++#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_serialize_sccs)
++#else
++#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_fuse)
++#endif
++
+#define DYNSYMS \
+ DYNSYM (isl_aff_add_coefficient_si); \
+ DYNSYM (isl_aff_free); \
@@ -108,7 +115,7 @@
+ DYNSYM (isl_map_set_tuple_id); \
+ DYNSYM (isl_map_universe); \
+ DYNSYM (isl_options_set_on_error); \
-+ DYNSYM (isl_options_set_schedule_fuse); \
++ DYNSYM_SCHEDULE_FUSE; \
+ DYNSYM (isl_options_set_schedule_max_constant_term); \
+ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
+ DYNSYM (isl_printer_free); \
@@ -343,7 +350,11 @@
+#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)
++#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
++#define isl_options_set_schedule_serialize_sccs (*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
++#else
+#define isl_options_set_schedule_fuse (*isl_pointers__.p_isl_options_set_schedule_fuse)
++#endif
+#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)
@@ -503,12 +514,12 @@
+#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
+#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
+
- typedef struct poly_dr *poly_dr_p;
-
- typedef struct poly_bb *poly_bb_p;
---- gcc/graphite.c.jj 2012-12-13 11:31:00.000000000 +0100
-+++ gcc/graphite.c 2012-12-14 13:40:44.155136961 +0100
-@@ -90,6 +90,34 @@ along with GCC; see the file COPYING3.
+ #ifndef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
+ # define isl_stat int
+ # define isl_stat_ok 0
+--- gcc/graphite.c.jj 2015-11-04 14:15:32.000000000 +0100
++++ gcc/graphite.c 2015-11-04 14:56:02.645536409 +0100
+@@ -91,6 +91,34 @@ along with GCC; see the file COPYING3.
#include "graphite-isl-ast-to-gimple.h"
#include "graphite-sese-to-poly.h"
@@ -543,7 +554,7 @@
/* Print global statistics to FILE. */
static void
-@@ -285,6 +313,15 @@ graphite_transform_loops (void)
+@@ -286,6 +314,15 @@ graphite_transform_loops (void)
if (parallelized_function_p (cfun->decl))
return;
diff --git a/SOURCES/gcc5-libstdc++-compat.patch b/SOURCES/gcc5-libstdc++-compat.patch
index ec632e5..726a276 100644
--- a/SOURCES/gcc5-libstdc++-compat.patch
+++ b/SOURCES/gcc5-libstdc++-compat.patch
@@ -3115,7 +3115,7 @@
+#include "../c++11/ios.cc"
--- libstdc++-v3/src/nonshared11/cow-shim_facets.cc.jj 2015-09-02 20:01:03.173393798 +0200
+++ libstdc++-v3/src/nonshared11/cow-shim_facets.cc 2015-09-02 20:01:03.173393798 +0200
-@@ -0,0 +1,172 @@
+@@ -0,0 +1,170 @@
+// Copyright (C) 2012-2015 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
@@ -3171,8 +3171,6 @@
+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 _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_.part.2");
-+asm (".hidden _ZNSs4_Rep10_M_disposeERKSaIcE.part.1");
+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");
+asm (".hidden _ZNSt13__facet_shims11__money_getIcEESt19istreambuf_iteratorIT_St11char_traitsIS2_EESt17integral_constantIbLb0EEPKNSt6locale5facetES5_S5_bRSt8ios_baseRSt12_Ios_IostatePePNS_12__any_stringE");
@@ -3700,7 +3698,7 @@
+#include "../c++11/compatibility-c++0x.cc"
--- libstdc++-v3/src/nonshared11/cxx11-shim_facets.cc.jj 2015-09-02 20:01:03.175393770 +0200
+++ libstdc++-v3/src/nonshared11/cxx11-shim_facets.cc 2015-09-02 20:01:03.175393770 +0200
-@@ -0,0 +1,172 @@
+@@ -0,0 +1,170 @@
+// Copyright (C) 2012-2015 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
@@ -3826,8 +3824,6 @@
+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 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag.isra.44");
-+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag.isra.51");
+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");
diff --git a/SOURCES/gcc5-libstdc++-docs.patch b/SOURCES/gcc5-libstdc++-docs.patch
index 14b2573..eecd4af 100644
--- a/SOURCES/gcc5-libstdc++-docs.patch
+++ b/SOURCES/gcc5-libstdc++-docs.patch
@@ -4,7 +4,7 @@
FSF
-+ Release 5.2.1
++ Release 5.3.1
+
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation
@@ -18,7 +18,7 @@
- The API documentation, rendered into HTML, can be viewed online:
+ The API documentation, rendered into HTML, can be viewed here:
-+ for the 5.2.1 release, local
++ for the 5.3.1 release, local
+
+
for the 3.4 release
diff --git a/SOURCES/gcc5-pr65689.patch b/SOURCES/gcc5-pr65689.patch
deleted file mode 100644
index 0dcdd5e..0000000
--- a/SOURCES/gcc5-pr65689.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-2015-04-17 Jakub Jelinek
-
- PR target/65689
- * genpreds.c (struct constraint_data): Add maybe_allows_reg and
- maybe_allows_mem bitfields.
- (maybe_allows_none_start, maybe_allows_none_end,
- maybe_allows_reg_start, maybe_allows_reg_end, maybe_allows_mem_start,
- maybe_allows_mem_end): New variables.
- (compute_maybe_allows): New function.
- (add_constraint): Use it to initialize maybe_allows_reg and
- maybe_allows_mem fields.
- (choose_enum_order): Sort the non-is_register/is_const_int/is_memory/
- is_address constraints such that those that allow neither mem nor
- reg come first, then those that only allow reg but not mem, then
- those that only allow mem but not reg, then the rest.
- (write_allows_reg_mem_function): New function.
- (write_tm_preds_h): Call it.
- * stmt.c (parse_output_constraint, parse_input_constraint): Use
- the generated insn_extra_constraint_allows_reg_mem function
- instead of always setting *allows_reg = true; *allows_mem = true;
- for unknown extra constraints.
-
- * gcc.target/aarch64/c-output-template-4.c: New test.
-
---- gcc/genpreds.c.jj 2015-04-08 18:23:50.643556230 +0200
-+++ gcc/genpreds.c 2015-04-17 17:44:23.097650110 +0200
-@@ -640,12 +640,14 @@ struct constraint_data
- const char *regclass; /* for register constraints */
- rtx exp; /* for other constraints */
- unsigned int lineno; /* line of definition */
-- unsigned int is_register : 1;
-- unsigned int is_const_int : 1;
-- unsigned int is_const_dbl : 1;
-- unsigned int is_extra : 1;
-- unsigned int is_memory : 1;
-- unsigned int is_address : 1;
-+ unsigned int is_register : 1;
-+ unsigned int is_const_int : 1;
-+ unsigned int is_const_dbl : 1;
-+ unsigned int is_extra : 1;
-+ unsigned int is_memory : 1;
-+ unsigned int is_address : 1;
-+ unsigned int maybe_allows_reg : 1;
-+ unsigned int maybe_allows_mem : 1;
- };
-
- /* Overview of all constraints beginning with a given letter. */
-@@ -691,6 +693,9 @@ static unsigned int satisfied_start;
- static unsigned int const_int_start, const_int_end;
- static unsigned int memory_start, memory_end;
- static unsigned int address_start, address_end;
-+static unsigned int maybe_allows_none_start, maybe_allows_none_end;
-+static unsigned int maybe_allows_reg_start, maybe_allows_reg_end;
-+static unsigned int maybe_allows_mem_start, maybe_allows_mem_end;
-
- /* Convert NAME, which contains angle brackets and/or underscores, to
- a string that can be used as part of a C identifier. The string
-@@ -711,6 +716,34 @@ mangle (const char *name)
- return XOBFINISH (rtl_obstack, const char *);
- }
-
-+/* Return a bitmask, bit 1 if EXP maybe allows a REG/SUBREG, 2 if EXP
-+ maybe allows a MEM. Bits should be clear only when we are sure it
-+ will not allow a REG/SUBREG or a MEM. */
-+static int
-+compute_maybe_allows (rtx exp)
-+{
-+ switch (GET_CODE (exp))
-+ {
-+ case IF_THEN_ELSE:
-+ /* Conservative answer is like IOR, of the THEN and ELSE branches. */
-+ return compute_maybe_allows (XEXP (exp, 1))
-+ | compute_maybe_allows (XEXP (exp, 2));
-+ case AND:
-+ return compute_maybe_allows (XEXP (exp, 0))
-+ & compute_maybe_allows (XEXP (exp, 1));
-+ case IOR:
-+ return compute_maybe_allows (XEXP (exp, 0))
-+ | compute_maybe_allows (XEXP (exp, 1));
-+ case MATCH_CODE:
-+ if (*XSTR (exp, 1) == '\0')
-+ return (strstr (XSTR (exp, 0), "reg") != NULL ? 1 : 0)
-+ | (strstr (XSTR (exp, 0), "mem") != NULL ? 2 : 0);
-+ /* FALLTHRU */
-+ default:
-+ return 3;
-+ }
-+}
-+
- /* Add one constraint, of any sort, to the tables. NAME is its name;
- REGCLASS is the register class, if any; EXP is the expression to
- test, if any; IS_MEMORY and IS_ADDRESS indicate memory and address
-@@ -866,6 +899,11 @@ add_constraint (const char *name, const
- c->is_extra = !(regclass || is_const_int || is_const_dbl);
- c->is_memory = is_memory;
- c->is_address = is_address;
-+ int maybe_allows = 3;
-+ if (exp)
-+ maybe_allows = compute_maybe_allows (exp);
-+ c->maybe_allows_reg = (maybe_allows & 1) != 0;
-+ c->maybe_allows_mem = (maybe_allows & 2) != 0;
-
- c->next_this_letter = *slot;
- *slot = c;
-@@ -940,8 +978,30 @@ choose_enum_order (void)
- enum_order[next++] = c;
- address_end = next;
-
-+ maybe_allows_none_start = next;
-+ FOR_ALL_CONSTRAINTS (c)
-+ if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
-+ && !c->maybe_allows_reg && !c->maybe_allows_mem)
-+ enum_order[next++] = c;
-+ maybe_allows_none_end = next;
-+
-+ maybe_allows_reg_start = next;
-+ FOR_ALL_CONSTRAINTS (c)
-+ if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
-+ && c->maybe_allows_reg && !c->maybe_allows_mem)
-+ enum_order[next++] = c;
-+ maybe_allows_reg_end = next;
-+
-+ maybe_allows_mem_start = next;
-+ FOR_ALL_CONSTRAINTS (c)
-+ if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
-+ && !c->maybe_allows_reg && c->maybe_allows_mem)
-+ enum_order[next++] = c;
-+ maybe_allows_mem_end = next;
-+
- FOR_ALL_CONSTRAINTS (c)
-- if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address)
-+ if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
-+ && c->maybe_allows_reg && c->maybe_allows_mem)
- enum_order[next++] = c;
- gcc_assert (next == num_constraints);
- }
-@@ -1229,6 +1289,41 @@ write_range_function (const char *name,
- "}\n\n", name);
- }
-
-+/* Write a definition for insn_extra_constraint_allows_reg_mem function. */
-+static void
-+write_allows_reg_mem_function (void)
-+{
-+ printf ("static inline void\n"
-+ "insn_extra_constraint_allows_reg_mem (enum constraint_num c,\n"
-+ "\t\t\t\t bool *allows_reg, bool *allows_mem)\n"
-+ "{\n");
-+ if (maybe_allows_none_start != maybe_allows_none_end)
-+ printf (" if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
-+ " return;\n",
-+ enum_order[maybe_allows_none_start]->c_name,
-+ enum_order[maybe_allows_none_end - 1]->c_name);
-+ if (maybe_allows_reg_start != maybe_allows_reg_end)
-+ printf (" if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
-+ " {\n"
-+ " *allows_reg = true;\n"
-+ " return;\n"
-+ " }\n",
-+ enum_order[maybe_allows_reg_start]->c_name,
-+ enum_order[maybe_allows_reg_end - 1]->c_name);
-+ if (maybe_allows_mem_start != maybe_allows_mem_end)
-+ printf (" if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
-+ " {\n"
-+ " *allows_mem = true;\n"
-+ " return;\n"
-+ " }\n",
-+ enum_order[maybe_allows_mem_start]->c_name,
-+ enum_order[maybe_allows_mem_end - 1]->c_name);
-+ printf (" (void) c;\n"
-+ " *allows_reg = true;\n"
-+ " *allows_mem = true;\n"
-+ "}\n\n");
-+}
-+
- /* VEC is a list of key/value pairs, with the keys being lower bounds
- of a range. Output a decision tree that handles the keys covered by
- [VEC[START], VEC[END]), returning FALLBACK for keys lower then VEC[START]'s.
-@@ -1326,6 +1421,7 @@ write_tm_preds_h (void)
- memory_start, memory_end);
- write_range_function ("insn_extra_address_constraint",
- address_start, address_end);
-+ write_allows_reg_mem_function ();
-
- if (constraint_max_namelen > 1)
- {
---- gcc/stmt.c.jj 2015-04-08 18:23:50.660555956 +0200
-+++ gcc/stmt.c 2015-04-17 17:36:50.623044548 +0200
-@@ -342,13 +342,7 @@ parse_output_constraint (const char **co
- else if (insn_extra_memory_constraint (cn))
- *allows_mem = true;
- else
-- {
-- /* Otherwise we can't assume anything about the nature of
-- the constraint except that it isn't purely registers.
-- Treat it like "g" and hope for the best. */
-- *allows_reg = true;
-- *allows_mem = true;
-- }
-+ insn_extra_constraint_allows_reg_mem (cn, allows_reg, allows_mem);
- break;
- }
-
-@@ -465,13 +459,7 @@ parse_input_constraint (const char **con
- else if (insn_extra_memory_constraint (cn))
- *allows_mem = true;
- else
-- {
-- /* Otherwise we can't assume anything about the nature of
-- the constraint except that it isn't purely registers.
-- Treat it like "g" and hope for the best. */
-- *allows_reg = true;
-- *allows_mem = true;
-- }
-+ insn_extra_constraint_allows_reg_mem (cn, allows_reg, allows_mem);
- break;
- }
-
---- gcc/testsuite/gcc.target/aarch64/c-output-template-4.c.jj 2015-04-17 17:48:27.588654584 +0200
-+++ gcc/testsuite/gcc.target/aarch64/c-output-template-4.c 2015-04-17 17:48:22.149743468 +0200
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O0" } */
-+
-+void
-+test (void)
-+{
-+ __asm__ ("@ %c0" : : "S" (&test + 4));
-+}
-+
-+/* { dg-final { scan-assembler "@ test\\+4" } } */
diff --git a/SOURCES/gcc5-rh1279639.patch b/SOURCES/gcc5-rh1279639.patch
new file mode 100644
index 0000000..907452e
--- /dev/null
+++ b/SOURCES/gcc5-rh1279639.patch
@@ -0,0 +1,19 @@
+# Workaround doxygen 1.8.10 bugs.
+--- libstdc++-v3/doc/doxygen/user.cfg.in
++++ libstdc++-v3/doc/doxygen/user.cfg.in
+@@ -895,7 +895,6 @@ INPUT = @srcdir@/doc/doxygen/doxygroups.cc \
+ include/ext/pb_ds/detail/binary_heap_ \
+ include/ext/pb_ds/detail/binomial_heap_ \
+ include/ext/pb_ds/detail/binomial_heap_base_ \
+- include/ext/pb_ds/detail/bin_search_tree_ \
+ include/ext/pb_ds/detail/branch_policy \
+ include/ext/pb_ds/detail/cc_hash_table_map_ \
+ include/ext/pb_ds/detail/eq_fn \
+@@ -2135,6 +2122,7 @@ PREDEFINED = __cplusplus=201103L \
+ _GLIBCXX_USE_CONSTEXPR=constexpr \
+ "_GLIBCXX_THROW(E)= " \
+ _GLIBCXX_NOEXCEPT=noexcept \
++ "_GLIBCXX_NOEXCEPT_IF(E)=noexcept(E)" \
+ _GLIBCXX_NOTHROW=noexcept \
+ _GLIBCXX_USE_NOEXCEPT=noexcept \
+ _GLIBCXX_USE_WCHAR_T \
diff --git a/SPECS/gcc.spec b/SPECS/gcc.spec
index 82bddb3..6d91674 100644
--- a/SPECS/gcc.spec
+++ b/SPECS/gcc.spec
@@ -1,12 +1,12 @@
%{?scl:%scl_package gcc}
%{?scl:%global __strip strip}
%{?scl:%global __objdump objdump}
-%global DATE 20150902
-%global SVNREV 227412
-%global gcc_version 5.2.1
+%global DATE 20160406
+%global SVNREV 234777
+%global gcc_version 5.3.1
# 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 gcc_release 6
%global mpc_version 0.8.1
%global isl_version 0.14
%global graphviz_version 2.26.0
@@ -82,7 +82,7 @@ Summary: GCC version 5
Name: %{?scl_prefix}gcc
#Name: %{?scl_prefix}gcc%{!?scl:5}
Version: %{gcc_version}
-Release: %{gcc_release}.2%{?dist}
+Release: %{gcc_release}.1%{?dist}
# libgcc, libgfortran, libmudflap, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
@@ -247,7 +247,7 @@ Patch11: gcc5-no-add-needed.patch
Patch12: gcc5-libgo-p224.patch
Patch13: gcc5-aarch64-async-unw-tables.patch
Patch14: gcc5-libsanitize-aarch64-va42.patch
-Patch15: gcc5-pr65689.patch
+Patch15: gcc5-rh1279639.patch
Patch1000: gcc5-libstdc++-compat.patch
Patch1001: gcc5-libgfortran-compat.patch
@@ -606,7 +606,7 @@ This package contains the Memory Protection Extensions static runtime libraries.
rm -f libgo/go/crypto/elliptic/p224{,_test}.go
%patch13 -p0 -b .aarch64-async-unw-tables~
%patch14 -p0 -b .libsanitize-aarch64-va42~
-%patch15 -p0 -b .pr65689~
+%patch15 -p0 -b .rh1279639~
sed -i -e 's/ -Wl,-z,nodlopen//g' gcc/ada/gcc-interface/Makefile.in
%patch1000 -p0 -b .libstdc++-compat~
@@ -1267,6 +1267,7 @@ echo '/* GNU ld script */
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libmpxwrappers.so.0 )' > libmpxwrappers.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 .
%if %{build_fortran}
mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.*a .
@@ -1386,6 +1387,8 @@ 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}
@@ -1508,6 +1511,8 @@ mv -f %{buildroot}%{_prefix}/lib/libquadmath.*a 32/
%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
ln -sf ../lib32/libstdc++_nonshared.a 32/libstdc++_nonshared.a
ln -sf lib64/libstdc++_nonshared.a libstdc++_nonshared.a
%if %{build_libquadmath}
@@ -1545,6 +1550,7 @@ ln -sf lib64/libmpxwrappers.a libmpxwrappers.a
%else
%ifarch %{multilib_64_archs}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_version}/libstdc++.a 32/libstdc++.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_version}/libstdc++fs.a 32/libstdc++fs.a
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_version}/libstdc++_nonshared.a 32/libstdc++_nonshared.a
%if %{build_libquadmath}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_version}/libquadmath.a 32/libquadmath.a
@@ -1572,6 +1578,30 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_versi
%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_version}
+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 libcilkrts.a \
+ -o -name libmpx.a -o -name libmpxwrappers.a \
+ -o -name libcc1.a -o -name libstdc++_nonshared.a \
+ -o -name libgfortran_nonshared.a -o -name libsupc++.a \
+ -o -name libstdc++.a -o -name libcaf_single.a \
+ -o -name libgfortranbegin.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_version}/
+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 \
@@ -2207,6 +2237,7 @@ fi
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++_nonshared.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libsupc++.a
%endif
@@ -2214,6 +2245,7 @@ fi
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++_nonshared.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libsupc++.a
%endif
@@ -2223,6 +2255,7 @@ fi
%endif
%ifarch sparcv9 sparc64 ppc ppc64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++_nonshared.a
%endif
%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
@@ -2240,15 +2273,18 @@ fi
%ifarch sparcv9 ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libstdc++_nonshared.a
%endif
%ifarch sparc64 ppc64
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++_nonshared.a
%endif
%ifnarch sparcv9 sparc64 ppc ppc64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++_nonshared.a
%endif
%ifnarch sparcv9 ppc %{multilib_64_archs}
@@ -2555,6 +2591,20 @@ fi
%doc rpm.doc/changelogs/libcc1/ChangeLog*
%changelog
+* Thu Apr 7 2016 Jakub Jelinek 5.3.1-6.1
+- fix up libstdc++_nonshared.a - don't use .hidden directive on
+ *.part.* and *.isra.* symbols
+
+* Wed Apr 6 2016 Jakub Jelinek 5.3.1-6
+- update from Fedora 5.3.1-5 (#1305952)
+- include non-stripped copies of *.a libraries in the debuginfo subpackage
+
+* Tue Apr 5 2016 Jakub Jelinek 5.3.1-5
+- update from Fedora 5.3.1-5 (#1305952)
+
+* Fri Feb 12 2016 Jakub Jelinek 5.3.1-4
+- update from Fedora 5.3.1-4 (#1305952)
+
* Mon Oct 12 2015 Jakub Jelinek 5.2.1-2.2
- add ld.bfd and ld.gold symlinks (#1269279)