Hello community,

here is the log from the commit of package gcc8 for openSUSE:Factory checked in 
at 2018-11-05 22:50:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gcc8 (Old)
 and      /work/SRC/openSUSE:Factory/.gcc8.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gcc8"

Mon Nov  5 22:50:23 2018 rev:10 rq:645704 version:8.2.1+r265487

Changes:
--------
--- /work/SRC/openSUSE:Factory/gcc8/cross-aarch64-gcc8.changes  2018-09-11 
17:06:47.784387696 +0200
+++ /work/SRC/openSUSE:Factory/.gcc8.new/cross-aarch64-gcc8.changes     
2018-11-05 22:50:30.788425978 +0100
@@ -1,0 +2,19 @@
+Wed Oct 31 10:34:12 UTC 2018 - rguent...@suse.com
+
+- Add gcc8-pr86751.patch, revert fix for PR86751 which breaks the ABI.
+
+-------------------------------------------------------------------
+Thu Oct 25 14:32:52 UTC 2018 - rguent...@suse.com
+
+- Update to gcc-8-branch head (r265487).
+  * Pulls in libbacktrace fix.  [bnc#1112690]
+- Add gcc8-pr87642.patch to fix multibyte thousands separator printing.
+  [bnc#1112361]
+
+-------------------------------------------------------------------
+Thu Sep 13 12:27:43 UTC 2018 - rguent...@suse.com
+
+- Fix AVR configuration to not use __cxa_atexit or libstdc++ headers.
+  Point to /usr/avr/sys-root/include as system header include directory.
+
+-------------------------------------------------------------------
cross-arm-gcc8.changes: same change
cross-arm-none-gcc8-bootstrap.changes: same change
cross-arm-none-gcc8.changes: same change
cross-avr-gcc8-bootstrap.changes: same change
cross-avr-gcc8.changes: same change
cross-epiphany-gcc8-bootstrap.changes: same change
cross-epiphany-gcc8.changes: same change
cross-hppa-gcc8.changes: same change
cross-i386-gcc8.changes: same change
cross-m68k-gcc8.changes: same change
cross-mips-gcc8.changes: same change
cross-nvptx-gcc8.changes: same change
cross-ppc64-gcc8.changes: same change
cross-ppc64le-gcc8.changes: same change
cross-riscv64-elf-gcc8-bootstrap.changes: same change
cross-riscv64-elf-gcc8.changes: same change
cross-riscv64-gcc8.changes: same change
cross-rx-gcc8-bootstrap.changes: same change
cross-rx-gcc8.changes: same change
cross-s390x-gcc8.changes: same change
cross-sparc-gcc8.changes: same change
cross-sparc64-gcc8.changes: same change
cross-x86_64-gcc8.changes: same change
gcc8-testresults.changes: same change
gcc8.changes: same change

Old:
----
  gcc-8.2.1+r264010.tar.xz

New:
----
  gcc-8.2.1+r265487.tar.xz
  gcc8-pr86751.patch
  gcc8-pr87642.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cross-aarch64-gcc8.spec ++++++
--- /var/tmp/diff_new_pack.IxVODg/_old  2018-11-05 22:50:48.132404039 +0100
+++ /var/tmp/diff_new_pack.IxVODg/_new  2018-11-05 22:50:48.132404039 +0100
@@ -173,7 +173,7 @@
 %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
 
 Url:            http://gcc.gnu.org/
-Version:        8.2.1+r264010
+Version:        8.2.1+r265487
 Release:        0
 %define gcc_dir_version %(echo %version |  sed 's/+.*//' | cut -d '.' -f 1)
 %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' 
| sed 's/+/-/')
@@ -195,6 +195,8 @@
 Patch15:        gcc7-avoid-fixinc-error.diff
 Patch16:        libffi-riscv.patch
 Patch17:        riscv-builtin-eh-return.patch
+Patch18:        gcc8-pr87642.patch
+Patch19:        gcc8-pr86751.patch
 # A set of patches from the RH srpm
 Patch51:        gcc41-ppc32-retaddr.patch
 # Some patches taken from Debian
@@ -271,6 +273,8 @@
 %patch15
 %patch16
 %patch17 -p1
+%patch18
+%patch19 -R
 %patch51
 %patch60
 %patch61
@@ -397,7 +401,6 @@
        --with-pkgversion="SUSE Linux" \
        --with-slibdir=/%{_lib} \
        --with-system-zlib \
-       --enable-__cxa_atexit \
        --enable-libstdcxx-allocator=new \
        --disable-libstdcxx-pch \
 %if 0%{suse_version} <= 1320
@@ -455,6 +458,11 @@
        --disable-sjlj-exceptions \
        --enable-newlib-io-long-long \
 %endif
+%if "%{TARGET_ARCH}" == "avr"
+       --enable-lto \
+       --without-gxx-include-dir \
+       --with-native-system-header-dir=/include \
+%endif
 %endif
 %if "%{TARGET_ARCH}" == "arm"
         --with-arch=armv6zk \

cross-arm-gcc8.spec: same change
cross-arm-none-gcc8-bootstrap.spec: same change
cross-arm-none-gcc8.spec: same change
cross-avr-gcc8-bootstrap.spec: same change
cross-avr-gcc8.spec: same change
cross-epiphany-gcc8-bootstrap.spec: same change
cross-epiphany-gcc8.spec: same change
cross-hppa-gcc8.spec: same change
cross-i386-gcc8.spec: same change
cross-m68k-gcc8.spec: same change
cross-mips-gcc8.spec: same change
cross-nvptx-gcc8.spec: same change
cross-ppc64-gcc8.spec: same change
cross-ppc64le-gcc8.spec: same change
cross-riscv64-elf-gcc8-bootstrap.spec: same change
cross-riscv64-elf-gcc8.spec: same change
cross-riscv64-gcc8.spec: same change
cross-rx-gcc8-bootstrap.spec: same change
cross-rx-gcc8.spec: same change
cross-s390x-gcc8.spec: same change
cross-sparc-gcc8.spec: same change
cross-sparc64-gcc8.spec: same change
cross-x86_64-gcc8.spec: same change
gcc8-testresults.spec: same change
++++++ gcc8.spec ++++++
--- /var/tmp/diff_new_pack.IxVODg/_old  2018-11-05 22:50:48.816403174 +0100
+++ /var/tmp/diff_new_pack.IxVODg/_new  2018-11-05 22:50:48.824403164 +0100
@@ -232,7 +232,7 @@
 %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
 
 Url:            http://gcc.gnu.org/
-Version:        8.2.1+r264010
+Version:        8.2.1+r265487
 Release:        0
 %define gcc_dir_version %(echo %version |  sed 's/+.*//' | cut -d '.' -f 1)
 %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' 
| sed 's/+/-/')
@@ -293,6 +293,8 @@
 Patch15:        gcc7-avoid-fixinc-error.diff
 Patch16:        libffi-riscv.patch
 Patch17:        riscv-builtin-eh-return.patch
+Patch18:        gcc8-pr87642.patch
+Patch19:        gcc8-pr86751.patch
 # A set of patches from the RH srpm
 Patch51:        gcc41-ppc32-retaddr.patch
 # Some patches taken from Debian
@@ -1688,6 +1690,8 @@
 %patch15
 %patch16
 %patch17 -p1
+%patch18
+%patch19 -R
 %patch51
 %patch60
 %patch61
@@ -1814,7 +1818,6 @@
        --with-pkgversion="SUSE Linux" \
        --with-slibdir=/%{_lib} \
        --with-system-zlib \
-       --enable-__cxa_atexit \
        --enable-libstdcxx-allocator=new \
        --disable-libstdcxx-pch \
 %if 0%{suse_version} <= 1320
@@ -1872,6 +1875,11 @@
        --disable-sjlj-exceptions \
        --enable-newlib-io-long-long \
 %endif
+%if "%{TARGET_ARCH}" == "avr"
+       --enable-lto \
+       --without-gxx-include-dir \
+       --with-native-system-header-dir=/include \
+%endif
 %endif
 %if "%{TARGET_ARCH}" == "arm"
         --with-arch=armv6zk \

++++++ gcc-8.2.1+r264010.tar.xz -> gcc-8.2.1+r265487.tar.xz ++++++
/work/SRC/openSUSE:Factory/gcc8/gcc-8.2.1+r264010.tar.xz 
/work/SRC/openSUSE:Factory/.gcc8.new/gcc-8.2.1+r265487.tar.xz differ: char 26, 
line 1

++++++ gcc.spec.in ++++++
--- /var/tmp/diff_new_pack.IxVODg/_old  2018-11-05 22:50:49.004402936 +0100
+++ /var/tmp/diff_new_pack.IxVODg/_new  2018-11-05 22:50:49.004402936 +0100
@@ -236,7 +236,7 @@
 %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
 
 URL:          http://gcc.gnu.org/
-Version: 8.2.1+r264010
+Version: 8.2.1+r265487
 Release:      1
 %define gcc_dir_version %(echo %version |  sed 's/+.*//' | cut -d '.' -f 1)
 %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' 
| sed 's/+/-/')
@@ -298,6 +298,8 @@
 Patch15:       gcc7-avoid-fixinc-error.diff
 Patch16:        libffi-riscv.patch
 Patch17:        riscv-builtin-eh-return.patch
+Patch18:       gcc8-pr87642.patch
+Patch19:       gcc8-pr86751.patch
 # A set of patches from the RH srpm
 Patch51:       gcc41-ppc32-retaddr.patch
 # Some patches taken from Debian
@@ -1027,6 +1029,8 @@
 %patch15
 %patch16
 %patch17 -p1
+%patch18
+%patch19 -R
 %patch51
 %patch60
 %patch61
@@ -1153,7 +1157,6 @@
        --with-pkgversion="SUSE Linux" \
        --with-slibdir=/%{_lib} \
        --with-system-zlib \
-       --enable-__cxa_atexit \
        --enable-libstdcxx-allocator=new \
        --disable-libstdcxx-pch \
 %if 0%{suse_version} <= 1320
@@ -1211,6 +1214,11 @@
        --disable-sjlj-exceptions \
        --enable-newlib-io-long-long \
 %endif
+%if "%{TARGET_ARCH}" == "avr"
+       --enable-lto \
+       --without-gxx-include-dir \
+       --with-native-system-header-dir=/include \
+%endif
 %endif
 %if "%{TARGET_ARCH}" == "arm"
         --with-arch=armv6zk \

++++++ gcc8-pr86751.patch ++++++
Revert
2018-10-12  Jonathan Wakely  <jwak...@redhat.com>
 
        Backport from mainline
        2018-07-31  Jonathan Wakely  <jwak...@redhat.com>

        PR libstdc++/86751
        * include/bits/stl_pair.h (__pair_base): New class with deleted copy
        assignment operator.
        (pair): Derive from __pair_base.
        (pair::operator=): Remove deleted overload.
        * python/libstdcxx/v6/printers.py (StdPairPrinter): New pretty printer
        so that new base class isn't shown in GDB.
        * testsuite/20_util/pair/86751.cc: New test.
        * testsuite/20_util/pair/ref_assign.cc: New test.

Index: libstdc++-v3/python/libstdcxx/v6/printers.py
===================================================================
--- libstdc++-v3/python/libstdcxx/v6/printers.py        (revision 265088)
+++ libstdc++-v3/python/libstdcxx/v6/printers.py        (revision 265089)
@@ -1229,6 +1229,39 @@ class StdExpPathPrinter:
         return self._iterator(self.val['_M_cmpts'])
 
 
+class StdPairPrinter:
+    "Print a std::pair object, with 'first' and 'second' as children"
+
+    def __init__(self, typename, val):
+        self.val = val
+
+    class _iter(Iterator):
+        "An iterator for std::pair types. Returns 'first' then 'second'."
+
+        def __init__(self, val):
+            self.val = val
+            self.which = 'first'
+
+        def __iter__(self):
+            return self
+
+        def __next__(self):
+            if self.which is None:
+                raise StopIteration
+            which = self.which
+            if which == 'first':
+                self.which = 'second'
+            else:
+                self.which = None
+            return (which, self.val[which])
+
+    def children(self):
+        return self._iter(self.val)
+
+    def to_string(self):
+        return None
+
+
 # A "regular expression" printer which conforms to the
 # "SubPrettyPrinter" protocol from gdb.printing.
 class RxPrinter(object):
@@ -1629,6 +1662,7 @@ def build_libstdcxx_dictionary ():
     libstdcxx_printer.add_container('std::', 'map', StdMapPrinter)
     libstdcxx_printer.add_container('std::', 'multimap', StdMapPrinter)
     libstdcxx_printer.add_container('std::', 'multiset', StdSetPrinter)
+    libstdcxx_printer.add_version('std::', 'pair', StdPairPrinter)
     libstdcxx_printer.add_version('std::', 'priority_queue',
                                   StdStackOrQueuePrinter)
     libstdcxx_printer.add_version('std::', 'queue', StdStackOrQueuePrinter)
Index: libstdc++-v3/include/bits/stl_pair.h
===================================================================
--- libstdc++-v3/include/bits/stl_pair.h        (revision 265088)
+++ libstdc++-v3/include/bits/stl_pair.h        (revision 265089)
@@ -185,8 +185,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   struct __nonesuch_no_braces : std::__nonesuch {
     explicit __nonesuch_no_braces(const __nonesuch&) = delete;
   };
+#endif // C++11
 
-#endif
+  class __pair_base
+  {
+#if __cplusplus >= 201103L
+    template<typename _T1, typename _T2> friend struct pair;
+    __pair_base() = default;
+    ~__pair_base() = default;
+    __pair_base(const __pair_base&) = default;
+    __pair_base& operator=(const __pair_base&) = delete;
+#endif // C++11
+  };
 
  /**
    *  @brief Struct holding two objects of arbitrary type.
@@ -196,6 +206,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    */
   template<typename _T1, typename _T2>
     struct pair
+    : private __pair_base
     {
       typedef _T1 first_type;    /// @c first_type is the first bound type
       typedef _T2 second_type;   /// @c second_type is the second bound type
@@ -376,17 +387,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       pair&
       operator=(typename conditional<
-               __not_<__and_<is_copy_assignable<_T1>,
-                             is_copy_assignable<_T2>>>::value,
-               const pair&, const __nonesuch_no_braces&>::type __p) = delete;
-
-      pair&
-      operator=(typename conditional<
                __and_<is_move_assignable<_T1>,
                       is_move_assignable<_T2>>::value,
                pair&&, __nonesuch_no_braces&&>::type __p)
       noexcept(__and_<is_nothrow_move_assignable<_T1>,
-                     is_nothrow_move_assignable<_T2>>::value)
+                     is_nothrow_move_assignable<_T2>>::value)
       {
        first = std::forward<first_type>(__p.first);
        second = std::forward<second_type>(__p.second);
Index: libstdc++-v3/testsuite/20_util/pair/ref_assign.cc
===================================================================
--- libstdc++-v3/testsuite/20_util/pair/ref_assign.cc   (nonexistent)
+++ libstdc++-v3/testsuite/20_util/pair/ref_assign.cc   (revision 265089)
@@ -0,0 +1,74 @@
+// Copyright (C) 2018 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+// { dg-do run { target c++11 } }
+
+#include <utility>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+  typedef std::pair<int&, int> pair_type;
+  int i = 1;
+  int j = 2;
+  pair_type p(i, 3);
+  const pair_type q(j, 4);
+  p = q;
+  VERIFY( p.first == q.first );
+  VERIFY( p.second == q.second );
+  VERIFY( i == j );
+}
+
+void
+test02()
+{
+  typedef std::pair<int, int&> pair_type;
+  int i = 1;
+  int j = 2;
+  pair_type p(3, i);
+  const pair_type q(4, j);
+  p = q;
+  VERIFY( p.first == q.first );
+  VERIFY( p.second == q.second );
+  VERIFY( i == j );
+}
+
+void
+test03()
+{
+  typedef std::pair<int&, int&> pair_type;
+  int i = 1;
+  int j = 2;
+  int k = 3;
+  int l = 4;
+  pair_type p(i, j);
+  const pair_type q(k, l);
+  p = q;
+  VERIFY( p.first == q.first );
+  VERIFY( p.second == q.second );
+  VERIFY( i == k );
+  VERIFY( j == l );
+}
+
+int
+main()
+{
+  test01();
+  test02();
+  test03();
+}
Index: libstdc++-v3/testsuite/20_util/pair/86751.cc
===================================================================
--- libstdc++-v3/testsuite/20_util/pair/86751.cc        (nonexistent)
+++ libstdc++-v3/testsuite/20_util/pair/86751.cc        (revision 265089)
@@ -0,0 +1,33 @@
+// Copyright (C) 2018 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+// { dg-do compile { target c++11 } }
+
+#include <utility>
+
+struct X {
+  template<typename T> operator T() const;
+};
+
+
+void
+test01()
+{
+  std::pair<int, int> p;
+  X x;
+  p = x;  // PR libstdc++/86751
+}
++++++ gcc8-pr87642.patch ++++++
2018-10-18  Jonathan Wakely  <jwak...@redhat.com>
 
        PR libstdc++/87642
        * config/locale/gnu/monetary_members.cc
        (moneypunct<char, true>::_M_initialize_moneypunct): Use
        __narrow_multibyte_chars to convert multibyte thousands separators
        to a single char.
        * config/locale/gnu/numeric_members.cc
        (numpunct<char>::_M_initialize_numpunct): Likewise.
        (__narrow_multibyte_chars): New function.

Index: libstdc++-v3/config/locale/gnu/numeric_members.cc
===================================================================
--- libstdc++-v3/config/locale/gnu/numeric_members.cc   (revision 265285)
+++ libstdc++-v3/config/locale/gnu/numeric_members.cc   (revision 265286)
@@ -30,11 +30,62 @@
 
 #include <locale>
 #include <bits/c++locale_internal.h>
+#include <iconv.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
+  extern char __narrow_multibyte_chars(const char* s, __locale_t cloc);
+
+// This file might be compiled twice, but we only want to define this once.
+#if ! _GLIBCXX_USE_CXX11_ABI
+  char
+  __narrow_multibyte_chars(const char* s, __locale_t cloc)
+  {
+    const char* codeset = __nl_langinfo_l(CODESET, cloc);
+    if (!strcmp(codeset, "UTF-8"))
+      {
+       // optimize for some known cases
+       if (!strcmp(s, "\u202F")) // NARROW NO-BREAK SPACE
+         return ' ';
+       if (!strcmp(s, "\u2019")) // RIGHT SINGLE QUOTATION MARK
+         return '\'';
+       if (!strcmp(s, "\u066C")) // ARABIC THOUSANDS SEPARATOR
+         return '\'';
+      }
+
+    iconv_t cd = iconv_open("ASCII//TRANSLIT", codeset);
+    if (cd != (iconv_t)-1)
+      {
+       char c1;
+       size_t inbytesleft = strlen(s);
+       size_t outbytesleft = 1;
+       char* inbuf = const_cast<char*>(s);
+       char* outbuf = &c1;
+       size_t n = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
+       iconv_close(cd);
+       if (n != (size_t)-1)
+         {
+           cd = iconv_open(codeset, "ASCII");
+           if (cd != (iconv_t)-1)
+             {
+               char c2;
+               inbuf = &c1;
+               inbytesleft = 1;
+               outbuf = &c2;
+               outbytesleft = 1;
+               n = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
+               iconv_close(cd);
+               if (n != (size_t)-1)
+                 return c2;
+             }
+         }
+      }
+    return '\0';
+  }
+#endif
+
   template<>
     void
     numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
@@ -63,8 +114,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
          // Named locale.
          _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT,
                                                        __cloc));
-         _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP,
-                                                       __cloc));
+         const char* thousands_sep = __nl_langinfo_l(THOUSANDS_SEP, __cloc);
+
+         if (thousands_sep[0] != '\0' && thousands_sep[1] != '\0')
+           _M_data->_M_thousands_sep = __narrow_multibyte_chars(thousands_sep,
+                                                                __cloc);
+         else
+           _M_data->_M_thousands_sep = *thousands_sep;
 
          // Check for NULL, which implies no grouping.
          if (_M_data->_M_thousands_sep == '\0')
Index: libstdc++-v3/config/locale/gnu/monetary_members.cc
===================================================================
--- libstdc++-v3/config/locale/gnu/monetary_members.cc  (revision 265285)
+++ libstdc++-v3/config/locale/gnu/monetary_members.cc  (revision 265286)
@@ -207,6 +207,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   }
 #endif
 
+  extern char __narrow_multibyte_chars(const char* s, __locale_t cloc);
+
   template<>
     void
     moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc,
@@ -241,8 +243,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
          // Named locale.
          _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT,
                                                        __cloc));
-         _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
-                                                       __cloc));
+         const char* thousands_sep = __nl_langinfo_l(__MON_THOUSANDS_SEP,
+                                                     __cloc);
+         if (thousands_sep[0] != '\0' && thousands_sep[1] != '\0')
+           _M_data->_M_thousands_sep = __narrow_multibyte_chars(thousands_sep,
+                                                                __cloc);
+         else
+           _M_data->_M_thousands_sep = *thousands_sep;
 
          // Check for NULL, which implies no fractional digits.
          if (_M_data->_M_decimal_point == '\0')

Reply via email to