aboutsummaryrefslogtreecommitdiffstats
path: root/main/clang
diff options
context:
space:
mode:
authorJakub Jirutka <jakub@jirutka.cz>2017-11-05 15:09:16 +0100
committerJakub Jirutka <jakub@jirutka.cz>2017-11-14 18:44:42 +0100
commitacf8d280036809b82e5524727382482ce6933255 (patch)
tree81022ae71964459c53d17ea9ebd77726fd16d6b5 /main/clang
parentc5400f0769aa54629a427497676d3d40715694dd (diff)
downloadaports-acf8d280036809b82e5524727382482ce6933255.tar.bz2
aports-acf8d280036809b82e5524727382482ce6933255.tar.xz
main/clang: backport patch D33852 - enable __declspec(selectany)
Diffstat (limited to 'main/clang')
-rw-r--r--main/clang/APKBUILD4
-rw-r--r--main/clang/D33852-enable-__declspec-selectany-on-linux.patch64
2 files changed, 67 insertions, 1 deletions
diff --git a/main/clang/APKBUILD b/main/clang/APKBUILD
index f56e6e3b9e..acccf4707a 100644
--- a/main/clang/APKBUILD
+++ b/main/clang/APKBUILD
@@ -31,6 +31,7 @@ source="https://llvm.org/releases/$pkgver/cfe-$pkgver.src.tar.xz
0005-Enable-PIE-by-default-for-Alpine-Linux.patch
0006-Link-with-z-now-by-default-for-Alpine-Linux.patch
0007-Enable-stack-protector-by-default-for-Alpine-Linux.patch
+ D33852-enable-__declspec-selectany-on-linux.patch
"
builddir="$srcdir/cfe-$pkgver.src"
@@ -107,4 +108,5 @@ ca551fb4e8a844424c63e381c4e1e1239ee95548c7561d46d4e8ae01c65b5e46ece7c51021f152ad
0ba4e6cb6d6854ef627f7f6d60f9f6843490e6c8f91dba7e238742574aecf3c07b1f5928850ce755fca9eac07ef3ce814728da58aa1ed9afb03a397ce4c30562 0004-Add-musl-targets.patch
08486325536871346b190b4af3a7b80b58a0066028e6268b06714eb00b29925b3b414ea62fa5ec4ff908763aeec4257536e04275b40c3d55e0a6c5b433625b5c 0005-Enable-PIE-by-default-for-Alpine-Linux.patch
fe5927b7851a97a5223d5b698c5dd01a47ef2fa23d9556cfee976aa7bda639af922785cbe34169e121aab79b38bbb1704aebaf11b1f4f41bcd448947f6e9562b 0006-Link-with-z-now-by-default-for-Alpine-Linux.patch
-609ebc1c6cbccd43f8b08e6b653e6da996a09cdcf008744a56af7d8846f1e7a9fc6945d3cc68fba0d06071b6f8de796747606a34d1d5008e0dc620dc0812e3e0 0007-Enable-stack-protector-by-default-for-Alpine-Linux.patch"
+609ebc1c6cbccd43f8b08e6b653e6da996a09cdcf008744a56af7d8846f1e7a9fc6945d3cc68fba0d06071b6f8de796747606a34d1d5008e0dc620dc0812e3e0 0007-Enable-stack-protector-by-default-for-Alpine-Linux.patch
+6bd82b3336c141b3f69d0e79c92dd4663c3b29e67a8bae0a32fa029d9f44291275cf8cbcf5db3ef14f70e5a9a15851a9e082bb59a862c11580515ba47d985247 D33852-enable-__declspec-selectany-on-linux.patch"
diff --git a/main/clang/D33852-enable-__declspec-selectany-on-linux.patch b/main/clang/D33852-enable-__declspec-selectany-on-linux.patch
new file mode 100644
index 0000000000..1bba8377f8
--- /dev/null
+++ b/main/clang/D33852-enable-__declspec-selectany-on-linux.patch
@@ -0,0 +1,64 @@
+Enable __declspec(selectany) on linux
+
+This feature was disabled probably by mistake in rL300562
+This fixes bug https://bugs.llvm.org/show_bug.cgi?id=33285
+
+Patch-Source: https://reviews.llvm.org/D33852
+See-Also: https://reviews.llvm.org/rL313278
+See-Also: https://github.com/alpinelinux/aports/pull/2342#issuecomment-341971965
+
+--- a/include/clang/Basic/Attr.td
++++ b/include/clang/Basic/Attr.td
+@@ -2472,9 +2472,9 @@
+ let Documentation = [DLLImportDocs];
+ }
+
+-def SelectAny : InheritableAttr, TargetSpecificAttr<TargetWindows> {
++def SelectAny : InheritableAttr {
+ let Spellings = [Declspec<"selectany">, GCC<"selectany">];
+- let Documentation = [Undocumented];
++ let Documentation = [SelectAnyDocs];
+ }
+
+ def Thread : Attr {
+--- a/include/clang/Basic/AttrDocs.td
++++ b/include/clang/Basic/AttrDocs.td
+@@ -3192,3 +3192,18 @@
+ ensure that this class cannot be subclassed.
+ }];
+ }
++
++
++def SelectAnyDocs : Documentation {
++ let Category = DocCatType;
++ let Content = [{
++This attribute appertains to a global symbol, causing it to have a weak
++definition (
++`linkonce <https://llvm.org/docs/LangRef.html#linkage-types>`_
++), allowing the linker to select any definition.
++
++For more information see
++`gcc documentation <https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/Microsoft-Windows-Variable-Attributes.html>`_
++or `msvc documentation <https://docs.microsoft.com/pl-pl/cpp/cpp/selectany>`_.
++}];
++}
+--- a/test/Sema/attr-selectany.c
++++ b/test/Sema/attr-selectany.c
+@@ -1,5 +1,7 @@
+ // RUN: %clang_cc1 -triple x86_64-win32 -fdeclspec -verify %s
+ // RUN: %clang_cc1 -triple x86_64-mingw32 -verify %s
++// RUN: %clang_cc1 -triple x86_64-unknown-linux -verify -fdeclspec %s
++// RUN: %clang_cc1 -triple x86_64-win32-macho -verify -fdeclspec %s
+
+ extern __declspec(selectany) const int x1 = 1; // no warning, const means we need extern in C++
+
+--- a/test/SemaCXX/attr-selectany.cpp
++++ b/test/SemaCXX/attr-selectany.cpp
+@@ -1,4 +1,7 @@
+ // RUN: %clang_cc1 -triple x86_64-win32 -fms-compatibility -fms-extensions -fsyntax-only -verify -std=c++11 %s
++// RUN: %clang_cc1 -triple x86_64-unknown-linux -fms-compatibility -fms-extensions -fsyntax-only -verify -std=c++11 %s
++// RUN: %clang_cc1 -triple x86_64-win32-macho -fms-compatibility -fms-extensions -fsyntax-only -verify -std=c++11 %s
++
+ // MSVC produces similar diagnostics.
+
+ __declspec(selectany) void foo() { } // expected-error{{'selectany' can only be applied to data items with external linkage}}