Merge pull request #800 from Linux4Yourself/upd

Upd
This commit is contained in:
makpif 2021-08-02 09:21:20 +03:00 committed by GitHub
commit fa27ed65c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 49 additions and 573 deletions

View File

@ -1 +1 @@
bootscripts-1.0
bootscripts-1.1

View File

@ -1 +1 @@
1.0
1.1

View File

@ -1 +0,0 @@
gcc-patch-11.1.0-upstream_fixes-1

View File

@ -1 +0,0 @@
https://lx4u.ru/downloads/packages/gcc-11.1.0-upstream_fixes-1.patch

View File

@ -1 +0,0 @@
11.1.0-upstream_fixes-1

View File

@ -1 +1 @@
gcc-11.1.0
gcc-11.2.0

View File

@ -2,7 +2,6 @@ build
configure
install
multi_configure
patch
postinstall
prepare
test

View File

@ -1 +1 @@
https://lx4u.ru/downloads/packages/gcc-11.1.0.tar.xz
https://lx4u.ru/downloads/packages/gcc-11.2.0.tar.xz

View File

@ -1 +1 @@
11.1.0
11.2.0

View File

@ -1 +0,0 @@
patch -Np1 -i ../gcc-11.1.0-upstream_fixes-1.patch

View File

@ -1,9 +1,9 @@
rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/11.1.0/include-fixed/bits/
rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/11.2.0/include-fixed/bits/
chown -v -R root:root \
/usr/lib/gcc/*linux-gnu/11.1.0/include{,-fixed}
/usr/lib/gcc/*linux-gnu/11.2.0/include{,-fixed}
ln -svr /usr/bin/cpp /usr/lib
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/11.1.0/liblto_plugin.so \
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/11.2.0/liblto_plugin.so \
/usr/lib/bfd-plugins/
mkdir -pv /usr/share/gdb/auto-load/usr/lib{,32}
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
mv -v /usr/lib32/*gdb.py /usr/share/gdb/auto-load/usr/lib32
mv -v /usr/lib32/*gdb.py /usr/share/gdb/auto-load/usr/lib32

View File

@ -1 +1 @@
linux-5.13.3
linux-5.13.4

View File

@ -1 +1 @@
https://lx4u.ru/downloads/packages/linux-5.13.3.tar.xz
https://lx4u.ru/downloads/packages/linux-5.13.4.tar.xz

View File

@ -1 +1 @@
5.13.3
5.13.4

View File

@ -0,0 +1 @@
install

View File

@ -22,7 +22,7 @@ a4fb91a9441bcaec576d4c4a56fa3aa6 expat-2.4.1.tar.xz
eeefe2e6380931a77dfa6d9350b43186 findutils-4.8.0.tar.xz
2882e3179748cc9f9c23ec593d6adc8d flex-2.6.4.tar.gz
8470c34eeecc41c1aa0c5d89e630df50 gawk-5.1.0.tar.xz
77f6252be0861ab918042acf42bc10ff gcc-11.1.0.tar.xz
31c86f2ced76acac66992eeedce2fce2 gcc-11.2.0.tar.xz
006c19b8b60828fd6916a16f3496bd3c gdbm-1.20.tar.gz
40996bbaf7d1356d3c22e33a8b255b31 gettext-0.21.tar.xz
390bbd889c7e8e8a7041564cb6b27cca glibc-2.33.tar.xz
@ -91,10 +91,9 @@ b939ee54eabc6b9b0a8d5c03ace879c9 wget-1.21.1.tar.gz
c46f6eb3bd1287031ae5d36465094402 libtasn1-4.17.0.tar.gz
8ccf11c4a2e2e505b8e516d8549e64a5 p11-kit-0.24.0.tar.xz
e0356f5ae5623f227a3f69b5e8848ec6 make-ca-1.7.tar.xz
19852fe67b6babb67bfae0b6db9ef732 bzip2-1.0.8-install_docs-1.patch
fe2680b5a72d1ca7f7fee7b723456e0e coreutils-8.32-i18n-1.patch
dd09372fc5740324c82aed7d97635d6d glibc-2.33-fhs-1.patch
3249eddfaf6138c9542d0b5165033d5d kbd-2.4.0-backspace-1.patch
fd07ab7c0e5ec38ac2aa2d79178e4562 sysvinit-2.99-consolidated-1.patch
be1a50953a7f22c9f1e88d78bb86c326 gcc-11.1.0-upstream_fixes-1.patch
6c3af2c50718168f781bf0c565736928 efivar-37-gcc_9-1.patch
b45d3bea4ddb7f64b6e56033ecc0fb11 bzip2-1.0.8-install_docs-1.patch
cd8ebed2a67fff2e231026df91af6776 coreutils-8.32-i18n-1.patch
9a5997c3452909b1769918c759eff8a2 glibc-2.33-fhs-1.patch
f75cca16a38da6caa7d52151f7136895 kbd-2.4.0-backspace-1.patch
4900322141d493e74020c9cf437b2cdc sysvinit-2.99-consolidated-1.patch
e795e52eeefc0d2c62c6c4bd748d2d38 efivar-37-gcc_9-1.patch

View File

@ -611,33 +611,29 @@
},
{
"name": "gcc",
"fileName": "gcc-11.1.0.tar.xz",
"fileName": "gcc-11.2.0.tar.xz",
"description": "Пакет содержит набор компиляторов GNU для таких языков как Си и Си++.",
"url": "https://ftp.gnu.org/gnu/gcc/gcc-11.1.0/gcc-11.1.0.tar.xz",
"url": "https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz",
"homeUrl": "https://gnu.org/software/gcc",
"version": "11.1.0",
"version": "11.2.0",
"releasesUrl": "https://ftp.gnu.org/gnu/gcc",
"priority": "required",
"md5": "77f6252be0861ab918042acf42bc10ff",
"size": "75.22",
"md5": "31c86f2ced76acac66992eeedce2fce2",
"size": "77.14",
"installedSize": 161,
"sbu": 14.8,
"sbu2": 25,
"patches": [
"gcc-patch"
],
"scripts": [
"build",
"configure",
"install",
"multi_configure",
"patch",
"postinstall",
"prepare",
"test"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/gcc-11.1.0.tar.xz"
"downloadUrl": "https://lx4u.ru/downloads/packages/gcc-11.2.0.tar.xz"
},
{
"name": "gdbm",
@ -1070,9 +1066,9 @@
"name": "bootscripts",
"fileName": "bootscripts.tar.xz",
"description": "Скрипты загрузки и системной конфигурации.",
"url": "https://github.com/Linux4Yourself/bootscripts/releases/download/1.0/bootscripts.tar.xz",
"url": "https://github.com/Linux4Yourself/bootscripts/releases/download/1.1/bootscripts.tar.xz",
"homeUrl": "https://github.com/Linux4Yourself/bootscripts",
"version": "1.0",
"version": "1.1",
"releasesUrl": "",
"priority": "required",
"md5": "4f2a2b6159a437d1e89961b0231eaab0",
@ -2302,7 +2298,7 @@
"version": "1.0.8",
"releasesUrl": "",
"priority": "required",
"md5": "19852fe67b6babb67bfae0b6db9ef732",
"md5": "b45d3bea4ddb7f64b6e56033ecc0fb11",
"size": "0.00",
"installedSize": 0,
"sbu": 0,
@ -2319,8 +2315,8 @@
"version": "8.32-i18n-1",
"releasesUrl": "",
"priority": "optional",
"md5": "fe2680b5a72d1ca7f7fee7b723456e0e",
"size": "0.17",
"md5": "cd8ebed2a67fff2e231026df91af6776",
"size": "0.16",
"installedSize": 0,
"sbu": 0,
"sbu2": 0,
@ -2336,7 +2332,7 @@
"version": "2.33-fhs-1",
"releasesUrl": "",
"priority": "important",
"md5": "dd09372fc5740324c82aed7d97635d6d",
"md5": "9a5997c3452909b1769918c759eff8a2",
"size": "0.00",
"installedSize": 0,
"sbu": 0,
@ -2353,7 +2349,7 @@
"version": "2.4.0-backspace-1",
"releasesUrl": "",
"priority": "important",
"md5": "3249eddfaf6138c9542d0b5165033d5d",
"md5": "f75cca16a38da6caa7d52151f7136895",
"size": "0.01",
"installedSize": 0,
"sbu": 0,
@ -2370,7 +2366,7 @@
"version": "2.99-consolidated-1",
"releasesUrl": "",
"priority": "required",
"md5": "fd07ab7c0e5ec38ac2aa2d79178e4562",
"md5": "4900322141d493e74020c9cf437b2cdc",
"size": "0.00",
"installedSize": 0,
"sbu": 0,
@ -2378,23 +2374,6 @@
"downloadUrl": "https://lx4u.ru/downloads/packages/sysvinit-2.99-consolidated-1.patch",
"scripts": []
},
{
"name": "gcc-patch",
"fileName": "gcc-11.1.0-upstream_fixes-1.patch",
"description": "",
"url": "https://raw.githubusercontent.com/Linux4Yourself/Linux4Yourself.Book.Packages/develop/patches/gcc-11.1.0-upstream_fixes-1.patch",
"homeUrl": "",
"version": "11.1.0-upstream_fixes-1",
"releasesUrl": "",
"priority": "required",
"md5": "be1a50953a7f22c9f1e88d78bb86c326",
"size": "0.02",
"installedSize": 0,
"sbu": 0,
"sbu2": 0,
"downloadUrl": "https://lx4u.ru/downloads/packages/gcc-11.1.0-upstream_fixes-1.patch",
"scripts": []
},
{
"name": "efivar-patch",
"fileName": "efivar-37-gcc_9-1.patch",
@ -2404,7 +2383,7 @@
"version": "1",
"releasesUrl": "",
"priority": "required",
"md5": "6c3af2c50718168f781bf0c565736928",
"md5": "e795e52eeefc0d2c62c6c4bd748d2d38",
"size": "0.01",
"installedSize": 0,
"sbu": 0,

View File

@ -22,7 +22,7 @@ file-5.40.tar.gz
findutils-4.8.0.tar.xz
flex-2.6.4.tar.gz
gawk-5.1.0.tar.xz
gcc-11.1.0.tar.xz
gcc-11.2.0.tar.xz
gdbm-1.20.tar.gz
gettext-0.21.tar.xz
glibc-2.33.tar.xz
@ -96,5 +96,4 @@ coreutils-8.32-i18n-1.patch
glibc-2.33-fhs-1.patch
kbd-2.4.0-backspace-1.patch
sysvinit-2.99-consolidated-1.patch
gcc-11.1.0-upstream_fixes-1.patch
efivar-37-gcc_9-1.patch

View File

@ -1 +1 @@
systemd-249
systemd-249.1

View File

@ -1 +1 @@
https://lx4u.ru/downloads/packages/systemd-stable-249.tar.gz
https://lx4u.ru/downloads/packages/systemd-stable-249.1.tar.gz

View File

@ -1 +1 @@
249
249.1

View File

@ -1 +1 @@
util-linux-2.37.0
util-linux-2.37.1

View File

@ -1 +1 @@
https://lx4u.ru/downloads/packages/util-linux-2.37.tar.xz
https://lx4u.ru/downloads/packages/util-linux-2.37.1.tar.xz

View File

@ -1 +1 @@
2.37.0
2.37.1

View File

@ -22,7 +22,7 @@ https://lx4u.ru/downloads/packages/file-5.40.tar.gz
https://lx4u.ru/downloads/packages/findutils-4.8.0.tar.xz
https://lx4u.ru/downloads/packages/flex-2.6.4.tar.gz
https://lx4u.ru/downloads/packages/gawk-5.1.0.tar.xz
https://lx4u.ru/downloads/packages/gcc-11.1.0.tar.xz
https://lx4u.ru/downloads/packages/gcc-11.2.0.tar.xz
https://lx4u.ru/downloads/packages/gdbm-1.20.tar.gz
https://lx4u.ru/downloads/packages/gettext-0.21.tar.xz
https://lx4u.ru/downloads/packages/glibc-2.33.tar.xz
@ -96,5 +96,4 @@ https://lx4u.ru/downloads/packages/coreutils-8.32-i18n-1.patch
https://lx4u.ru/downloads/packages/glibc-2.33-fhs-1.patch
https://lx4u.ru/downloads/packages/kbd-2.4.0-backspace-1.patch
https://lx4u.ru/downloads/packages/sysvinit-2.99-consolidated-1.patch
https://lx4u.ru/downloads/packages/gcc-11.1.0-upstream_fixes-1.patch
https://lx4u.ru/downloads/packages/efivar-37-gcc_9-1.patch

View File

@ -22,7 +22,7 @@ https://astron.com/pub/file/file-5.40.tar.gz
https://ftp.gnu.org/gnu/findutils/findutils-4.8.0.tar.xz
https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
https://ftp.gnu.org/gnu/gawk/gawk-5.1.0.tar.xz
https://ftp.gnu.org/gnu/gcc/gcc-11.1.0/gcc-11.1.0.tar.xz
https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz
https://ftp.gnu.org/gnu/gdbm/gdbm-1.20.tar.gz
https://ftp.gnu.org/gnu/gettext/gettext-0.21.tar.xz
https://ftp.gnu.org/gnu/glibc/glibc-2.33.tar.xz
@ -40,7 +40,7 @@ http://isl.gforge.inria.fr/isl-0.24.tar.xz
https://www.kernel.org/pub/linux/utils/kbd/kbd-2.4.0.tar.xz
https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-29.tar.xz
https://www.greenwoodsoftware.com/less/less-590.tar.gz
https://github.com/Linux4Yourself/bootscripts/releases/download/1.0/bootscripts.tar.xz
https://github.com/Linux4Yourself/bootscripts/releases/download/1.1/bootscripts.tar.xz
https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.51.tar.xz
https://github.com/libffi/libffi/releases/download/v3.4.2/libffi-3.4.2.tar.gz
https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.3.tar.gz
@ -96,5 +96,4 @@ https://raw.githubusercontent.com/Linux4Yourself/Linux4Yourself.Book.Packages/de
https://raw.githubusercontent.com/Linux4Yourself/Linux4Yourself.Book.Packages/develop/patches/glibc-2.33-fhs-1.patch
https://raw.githubusercontent.com/Linux4Yourself/Linux4Yourself.Book.Packages/develop/patches/kbd-2.4.0-backspace-1.patch
https://raw.githubusercontent.com/Linux4Yourself/Linux4Yourself.Book.Packages/develop/patches/sysvinit-2.99-consolidated-1.patch
https://raw.githubusercontent.com/Linux4Yourself/Linux4Yourself.Book.Packages/develop/patches/gcc-11.1.0-upstream_fixes-1.patch
https://raw.githubusercontent.com/Linux4Yourself/Linux4Yourself.Book.Packages/develop/patches/efivar-37-gcc_9-1.patch

View File

@ -1 +1 @@
zlib-ng-2.0.3
zlib-ng-2.0.5

View File

@ -1 +1 @@
https://lx4u.ru/downloads/packages/zlib-ng-2.0.3.tar.gz
https://lx4u.ru/downloads/packages/zlib-ng-2.0.5.tar.gz

View File

@ -1 +1 @@
2.0.3
2.0.5

View File

@ -96,5 +96,4 @@ core/coreutils-patch
core/glibc-patch
core/kbd-patch
core/sysvinit-patch
core/gcc-patch
core/efivar-patch

View File

@ -1,495 +0,0 @@
Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
Date: 2021-06-29
Initial Package Version: 11.1.0.
Upstream Status: Applied
Origin: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100102,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100489,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100644
Description: Three regression fixes - two for Internal Compiler
Exceptions, one to allow recent firefox to be compiled. Also a
fix for a change in the kernel headers (the broken cyclades driver
was removed, causing libsanitizer to fail to build and gcc's
bootstrap to fail).
From 5357ab75dedef403b0eebf9277d61d1cbeb5898f Mon Sep 17 00:00:00 2001
From: Patrick Palka <ppalka@redhat.com>
Date: Fri, 4 Jun 2021 13:46:53 -0400
Subject: [PATCH] c++: tsubst_function_decl and excess arg levels [PR100102]
Here, when instantiating the dependent alias template
duration::__is_harmonic with args={{T,U},{int}}, we find ourselves
substituting the function decl _S_gcd. Since we have more arg levels
than _S_gcd has parm levels, an old special case in tsubst_function_decl
causes us to unwantedly reduce args to its innermost level, yielding
args={int}, which leads to a nonsensical substitution into the decl
context and eventually a crash.
The comment for this special case refers to three examples for which we
ought to see more arg levels than parm levels here, but none of the
examples actually demonstrate this. In the first example, when
defining S<int>::f(U) parms_depth is 2 and args_depth is 1, and
later when instantiating say S<int>::f<char> both depths are 2. In the
second example, when substituting the template friend declaration
parms_depth is 2 and args_depth is 1, and later when instantiating f
both depths are 1. Finally, the third example is invalid since we can't
specialize a member template of an unspecialized class template like
that.
Given that this reduction code seems no longer relevant for its
documented purpose and that it causes problems as in the PR, this patch
just removes it. Note that as far as bootstrap/regtest is concerned,
this code is dead; the below two tests would be the first to reach it.
PR c++/100102
gcc/cp/ChangeLog:
* pt.c (tsubst_function_decl): Remove old code for reducing
args when it has excess levels.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/alias-decl-72.C: New test.
* g++.dg/cpp0x/alias-decl-72a.C: New test.
---
gcc/cp/pt.c | 39 ---------------------
gcc/testsuite/g++.dg/cpp0x/alias-decl-72.C | 9 +++++
gcc/testsuite/g++.dg/cpp0x/alias-decl-72a.C | 9 +++++
3 files changed, 18 insertions(+), 39 deletions(-)
create mode 100644 gcc/testsuite/g++.dg/cpp0x/alias-decl-72.C
create mode 100644 gcc/testsuite/g++.dg/cpp0x/alias-decl-72a.C
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 7211bdc5bbc..744461ed8cb 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -13905,45 +13905,6 @@ tsubst_function_decl (tree t, tree args, tsubst_flags_t complain,
if (tree spec = retrieve_specialization (gen_tmpl, argvec, hash))
return spec;
}
-
- /* We can see more levels of arguments than parameters if
- there was a specialization of a member template, like
- this:
-
- template <class T> struct S { template <class U> void f(); }
- template <> template <class U> void S<int>::f(U);
-
- Here, we'll be substituting into the specialization,
- because that's where we can find the code we actually
- want to generate, but we'll have enough arguments for
- the most general template.
-
- We also deal with the peculiar case:
-
- template <class T> struct S {
- template <class U> friend void f();
- };
- template <class U> void f() {}
- template S<int>;
- template void f<double>();
-
- Here, the ARGS for the instantiation of will be {int,
- double}. But, we only need as many ARGS as there are
- levels of template parameters in CODE_PATTERN. We are
- careful not to get fooled into reducing the ARGS in
- situations like:
-
- template <class T> struct S { template <class U> void f(U); }
- template <class T> template <> void S<T>::f(int) {}
-
- which we can spot because the pattern will be a
- specialization in this case. */
- int args_depth = TMPL_ARGS_DEPTH (args);
- int parms_depth =
- TMPL_PARMS_DEPTH (DECL_TEMPLATE_PARMS (DECL_TI_TEMPLATE (t)));
-
- if (args_depth > parms_depth && !DECL_TEMPLATE_SPECIALIZATION (t))
- args = get_innermost_template_args (args, parms_depth);
}
else
{
diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-72.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-72.C
new file mode 100644
index 00000000000..8009756dcba
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-72.C
@@ -0,0 +1,9 @@
+// PR c++/100102
+// { dg-do compile { target c++11 } }
+
+template<int()> struct ratio;
+template<class T, class U> struct duration {
+ static constexpr int _S_gcd();
+ template<class> using __is_harmonic = ratio<_S_gcd>;
+ using type = __is_harmonic<int>;
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-72a.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-72a.C
new file mode 100644
index 00000000000..a4443e18f9d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-72a.C
@@ -0,0 +1,9 @@
+// PR c++/100102
+// { dg-do compile { target c++11 } }
+
+template<int> struct ratio;
+template<class T> struct duration {
+ static constexpr int _S_gcd();
+ template<class> using __is_harmonic = ratio<(duration::_S_gcd)()>;
+ using type = __is_harmonic<int>;
+};
--
2.27.0
From 2bf34b9f4e446bf9be7f04458058dd5319fb396e Mon Sep 17 00:00:00 2001
From: Tamar Christina <tamar.christina@arm.com>
Date: Fri, 21 May 2021 10:30:59 +0100
Subject: [PATCH] libsanitizer: Remove cyclades from libsanitizer
The Linux kernel has removed the interface to cyclades from
the latest kernel headers[1] due to them being orphaned for the
past 13 years.
libsanitizer uses this header when compiling against glibc, but
glibcs itself doesn't seem to have any references to cyclades.
Further more it seems that the driver is broken in the kernel and
the firmware doesn't seem to be available anymore.
As such since this is breaking the build of libsanitizer (and so the
GCC bootstrap[2]) I propose to remove this.
[1] https://lkml.org/lkml/2021/3/2/153
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379
libsanitizer/ChangeLog:
PR sanitizer/100379
* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick
llvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135.
* sanitizer_common/sanitizer_platform_limits_posix.cpp: Likewise.
* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.
(cherry picked from commit 745dae5923aba02982563481d75a21595df22ff8)
---
.../sanitizer_common_interceptors_ioctl.inc | 9 ---------
.../sanitizer_platform_limits_posix.cpp | 11 -----------
.../sanitizer_platform_limits_posix.h | 10 ----------
3 files changed, 30 deletions(-)
diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
index 490a04b2181..42e43a04441 100644
--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
+++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
@@ -366,15 +366,6 @@ static void ioctl_table_fill() {
#if SANITIZER_LINUX && !SANITIZER_ANDROID
// _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE
- _(CYGETDEFTHRESH, WRITE, sizeof(int));
- _(CYGETDEFTIMEOUT, WRITE, sizeof(int));
- _(CYGETMON, WRITE, struct_cyclades_monitor_sz);
- _(CYGETTHRESH, WRITE, sizeof(int));
- _(CYGETTIMEOUT, WRITE, sizeof(int));
- _(CYSETDEFTHRESH, NONE, 0);
- _(CYSETDEFTIMEOUT, NONE, 0);
- _(CYSETTHRESH, NONE, 0);
- _(CYSETTIMEOUT, NONE, 0);
_(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);
_(EQL_ENSLAVE, WRITE, struct_ifreq_sz);
_(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
index 1427cec48c4..025e575b5bc 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
@@ -131,7 +131,6 @@ typedef struct user_fpregs elf_fpregset_t;
# include <sys/procfs.h>
#endif
#include <sys/user.h>
-#include <linux/cyclades.h>
#include <linux/if_eql.h>
#include <linux/if_plip.h>
#include <linux/lp.h>
@@ -449,7 +448,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
#if SANITIZER_LINUX && !SANITIZER_ANDROID
unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);
- unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);
#if EV_VERSION > (0x010000)
unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);
#else
@@ -815,15 +813,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
#endif // SANITIZER_LINUX
#if SANITIZER_LINUX && !SANITIZER_ANDROID
- unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
- unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
- unsigned IOCTL_CYGETMON = CYGETMON;
- unsigned IOCTL_CYGETTHRESH = CYGETTHRESH;
- unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT;
- unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH;
- unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;
- unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;
- unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;
unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;
unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;
unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
index 0812039b038..83861105a50 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -981,7 +981,6 @@ extern unsigned struct_vt_mode_sz;
#if SANITIZER_LINUX && !SANITIZER_ANDROID
extern unsigned struct_ax25_parms_struct_sz;
-extern unsigned struct_cyclades_monitor_sz;
extern unsigned struct_input_keymap_entry_sz;
extern unsigned struct_ipx_config_data_sz;
extern unsigned struct_kbdiacrs_sz;
@@ -1326,15 +1325,6 @@ extern unsigned IOCTL_VT_WAITACTIVE;
#endif // SANITIZER_LINUX
#if SANITIZER_LINUX && !SANITIZER_ANDROID
-extern unsigned IOCTL_CYGETDEFTHRESH;
-extern unsigned IOCTL_CYGETDEFTIMEOUT;
-extern unsigned IOCTL_CYGETMON;
-extern unsigned IOCTL_CYGETTHRESH;
-extern unsigned IOCTL_CYGETTIMEOUT;
-extern unsigned IOCTL_CYSETDEFTHRESH;
-extern unsigned IOCTL_CYSETDEFTIMEOUT;
-extern unsigned IOCTL_CYSETTHRESH;
-extern unsigned IOCTL_CYSETTIMEOUT;
extern unsigned IOCTL_EQL_EMANCIPATE;
extern unsigned IOCTL_EQL_ENSLAVE;
extern unsigned IOCTL_EQL_GETMASTRCFG;
--
2.27.0
From 84fd1b5dff70cd74aee7e8b18f66959d8b8e1ce7 Mon Sep 17 00:00:00 2001
From: Jason Merrill <jason@redhat.com>
Date: Wed, 19 May 2021 21:12:45 -0400
Subject: [PATCH] c++: designated init with anonymous union [PR100489]
My patch for PR98463 added an assert that tripped on this testcase, because
we ended up with a U CONSTRUCTOR with an initializer for a, which is not a
member of U. We need to wrap the a initializer in another CONSTRUCTOR for
the anonymous union.
There was already support for this in process_init_constructor_record, but
not in process_init_constructor_union. But since this is about brace
elision, it really belongs under reshape_init rather than digest_init, so
this patch moves the handling to reshape_init_class, which also handles
unions.
PR c++/100489
gcc/cp/ChangeLog:
* decl.c (reshape_init_class): Handle designator for
member of anonymous aggregate here.
* typeck2.c (process_init_constructor_record): Not here.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/desig18.C: New test.
---
gcc/cp/decl.c | 33 ++++++++++++++++++++++++----
gcc/cp/typeck2.c | 26 ----------------------
gcc/testsuite/g++.dg/cpp2a/desig18.C | 17 ++++++++++++++
3 files changed, 46 insertions(+), 30 deletions(-)
create mode 100644 gcc/testsuite/g++.dg/cpp2a/desig18.C
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 7c32f09cf0e..6107b553cb4 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -6418,10 +6418,9 @@ reshape_init_class (tree type, reshape_iter *d, bool first_initializer_p,
/* We already reshaped this. */
if (field != d->cur->index)
{
- tree id = DECL_NAME (d->cur->index);
- gcc_assert (id);
- gcc_checking_assert (d->cur->index
- == get_class_binding (type, id));
+ if (tree id = DECL_NAME (d->cur->index))
+ gcc_checking_assert (d->cur->index
+ == get_class_binding (type, id));
field = d->cur->index;
}
}
@@ -6442,6 +6441,32 @@ reshape_init_class (tree type, reshape_iter *d, bool first_initializer_p,
d->cur->index);
return error_mark_node;
}
+
+ /* If the element is an anonymous union object and the initializer
+ list is a designated-initializer-list, the anonymous union object
+ is initialized by the designated-initializer-list { D }, where D
+ is the designated-initializer-clause naming a member of the
+ anonymous union object. */
+ tree ictx = DECL_CONTEXT (field);
+ if (!same_type_ignoring_top_level_qualifiers_p (ictx, type))
+ {
+ gcc_assert (ANON_AGGR_TYPE_P (ictx));
+ /* Find the anon aggr that is a direct member of TYPE. */
+ while (true)
+ {
+ tree cctx = TYPE_CONTEXT (ictx);
+ if (same_type_ignoring_top_level_qualifiers_p (cctx, type))
+ break;
+ ictx = cctx;
+ }
+ /* And then the TYPE member with that anon aggr type. */
+ tree aafield = TYPE_FIELDS (type);
+ for (; aafield; aafield = TREE_CHAIN (aafield))
+ if (TREE_TYPE (aafield) == ictx)
+ break;
+ gcc_assert (aafield);
+ field = aafield;
+ }
}
/* If we processed all the member of the class, we are done. */
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index ce3016c780d..5a7219dec65 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -1517,19 +1517,6 @@ process_init_constructor_record (tree type, tree init, int nested, int flags,
|| identifier_p (ce->index));
if (ce->index == field || ce->index == DECL_NAME (field))
next = ce->value;
- else if (ANON_AGGR_TYPE_P (fldtype)
- && search_anon_aggr (fldtype,
- TREE_CODE (ce->index) == FIELD_DECL
- ? DECL_NAME (ce->index)
- : ce->index))
- /* If the element is an anonymous union object and the
- initializer list is a designated-initializer-list, the
- anonymous union object is initialized by the
- designated-initializer-list { D }, where D is the
- designated-initializer-clause naming a member of the
- anonymous union object. */
- next = build_constructor_single (init_list_type_node,
- ce->index, ce->value);
else
{
ce = NULL;
@@ -1675,19 +1662,6 @@ process_init_constructor_record (tree type, tree init, int nested, int flags,
if (ce->index == field || ce->index == DECL_NAME (field))
break;
- if (ANON_AGGR_TYPE_P (TREE_TYPE (field)))
- {
- tree t
- = search_anon_aggr (TREE_TYPE (field),
- TREE_CODE (ce->index) == FIELD_DECL
- ? DECL_NAME (ce->index)
- : ce->index);
- if (t)
- {
- field = t;
- break;
- }
- }
}
}
if (field)
diff --git a/gcc/testsuite/g++.dg/cpp2a/desig18.C b/gcc/testsuite/g++.dg/cpp2a/desig18.C
new file mode 100644
index 00000000000..4851579b7c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/desig18.C
@@ -0,0 +1,17 @@
+// PR c++/100489
+// { dg-options "" }
+
+union U
+{
+ union
+ {
+ unsigned char a;
+ };
+
+ unsigned char b[1];
+};
+
+void f(unsigned char a)
+{
+ union U u = { .a = a };
+}
--
2.27.0
From f71ca97def69b8aeb046d716eaea2367736f505e Mon Sep 17 00:00:00 2001
From: Jason Merrill <jason@redhat.com>
Date: Tue, 18 May 2021 12:06:36 -0400
Subject: [PATCH] c++: "perfect" implicitly deleted move [PR100644]
Here we were ignoring the template constructor because the implicit move
constructor had all perfect conversions. But CWG1402 says that an
implicitly deleted move constructor is ignored by overload resolution; we
implement that instead by preferring any other candidate in joust, to get
better diagnostics, but that means we need to handle that case here as well.
gcc/cp/ChangeLog:
PR c++/100644
* call.c (perfect_candidate_p): An implicitly deleted move
is not perfect.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/implicit-delete1.C: New test.
---
gcc/cp/call.c | 5 +++++
gcc/testsuite/g++.dg/cpp0x/implicit-delete1.C | 20 +++++++++++++++++++
2 files changed, 25 insertions(+)
create mode 100644 gcc/testsuite/g++.dg/cpp0x/implicit-delete1.C
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 1e2d1d43184..4a59b97c110 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -5890,6 +5890,11 @@ perfect_candidate_p (z_candidate *cand)
{
if (cand->viable < 1)
return false;
+ /* CWG1402 makes an implicitly deleted move op worse than other
+ candidates. */
+ if (DECL_DELETED_FN (cand->fn) && DECL_DEFAULTED_FN (cand->fn)
+ && move_fn_p (cand->fn))
+ return false;
int len = cand->num_convs;
for (int i = 0; i < len; ++i)
if (!perfect_conversion_p (cand->convs[i]))
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit-delete1.C b/gcc/testsuite/g++.dg/cpp0x/implicit-delete1.C
new file mode 100644
index 00000000000..6dcced4fb2d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit-delete1.C
@@ -0,0 +1,20 @@
+// PR c++/100644
+// { dg-do compile { target c++11 } }
+
+struct NonMovable {
+ NonMovable(NonMovable&&) = delete;
+};
+
+template <class T>
+struct Maybe {
+ NonMovable mMember;
+
+ template <typename U>
+ Maybe(Maybe<U>&&);
+};
+
+void foo(Maybe<int>);
+
+void unlucky(Maybe<int>&& x) {
+ Maybe<int> var{(Maybe<int>&&)x};
+}
--
2.27.0

View File

@ -4,6 +4,7 @@
## Обновления пакетов
- gcc-11.2.0
- linux-5.13.4
- util-linux-2.37.1
- zlib-ng-2.0.5