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 - rguenther@suse.com + +- Add gcc8-pr86751.patch, revert fix for PR86751 which breaks the ABI. + +------------------------------------------------------------------- +Thu Oct 25 14:32:52 UTC 2018 - rguenther@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 - rguenther@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 <jwakely@redhat.com> Backport from mainline 2018-07-31 Jonathan Wakely <jwakely@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 <jwakely@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')
participants (1)
-
root