From acf8d280036809b82e5524727382482ce6933255 Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Sun, 5 Nov 2017 15:09:16 +0100 Subject: main/clang: backport patch D33852 - enable __declspec(selectany) --- main/clang/APKBUILD | 4 +- ...3852-enable-__declspec-selectany-on-linux.patch | 64 ++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 main/clang/D33852-enable-__declspec-selectany-on-linux.patch 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 { ++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 `_ ++), allowing the linker to select any definition. ++ ++For more information see ++`gcc documentation `_ ++or `msvc documentation `_. ++}]; ++} +--- 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}} -- cgit v1.2.3