mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-03-19 00:21:40 +00:00
extra/llvm to 3.4.1-2
This commit is contained in:
parent
34993cb4d4
commit
594a6ef46e
2 changed files with 192 additions and 9 deletions
|
@ -14,42 +14,54 @@
|
|||
|
||||
pkgname=('llvm' 'llvm-libs' 'llvm-ocaml' 'clang' 'clang-analyzer'
|
||||
'clang-tools-extra')
|
||||
pkgver=3.4
|
||||
pkgver=3.4.1
|
||||
_base_ver=3.4
|
||||
pkgrel=2
|
||||
arch=('i686' 'x86_64')
|
||||
url="http://llvm.org/"
|
||||
license=('custom:University of Illinois/NCSA Open Source License')
|
||||
makedepends=('libffi' 'python2' 'ocaml' 'python-sphinx')
|
||||
options=('staticlibs')
|
||||
source=(http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.gz
|
||||
http://llvm.org/releases/$pkgver/clang-$pkgver.src.tar.gz
|
||||
http://llvm.org/releases/$pkgver/clang-tools-extra-$pkgver.src.tar.gz
|
||||
http://llvm.org/releases/$pkgver/compiler-rt-$pkgver.src.tar.gz
|
||||
source=(http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.gz{,.sig}
|
||||
http://llvm.org/releases/$pkgver/cfe-$pkgver.src.tar.gz{,.sig}
|
||||
http://llvm.org/releases/$_base_ver/clang-tools-extra-$_base_ver.src.tar.gz{,.sig}
|
||||
http://llvm.org/releases/$_base_ver/compiler-rt-$_base_ver.src.tar.gz{,.sig}
|
||||
clang-3.3-use-gold-linker.patch
|
||||
clang-3.4-max_align_t.patch
|
||||
clang-3.4-fstack-protector-strong.patch
|
||||
llvm-3.4-provide-cmake-modules.patch
|
||||
llvm-Config-config.h
|
||||
llvm-Config-llvm-config.h)
|
||||
sha256sums=('25a5612d692c48481b9b397e2b55f4870e447966d66c96d655241702d44a2628'
|
||||
'22a9780db3b85a7f2eb9ea1f7f6e00da0249e3d12851e8dea0f62f1783242b1b'
|
||||
sha256sums=('7d28bb6eca243a2bb6d65a05743ab915b57958a7770277364e93534b63eef93a'
|
||||
'SKIP'
|
||||
'ab83f30951b34d75729026e0e73c180a728a140f2a02cbb8915805051a9d6bb7'
|
||||
'SKIP'
|
||||
'ba85187551ae97fe1c8ab569903beae5ff0900e21233e5eb5389f6ceab1028b4'
|
||||
'SKIP'
|
||||
'f37c89b1383ce462d47537a0245ac798600887a9be9f63073e16b79ed536ab5c'
|
||||
'SKIP'
|
||||
'8240adda155d7961eeb5d07ed50ead10cb7125f70283dff7f1c9fee9df3cea09'
|
||||
'0f0cbff69af54e83383385abbdeb1fee23e6e69427f8530060c492c0b07c2bbe'
|
||||
'7a2a1ddc94f67e643c1ab74601ec07deb6d5d344d4b19ed17c900afb2f6f2863'
|
||||
'b6bb154d5ec998328e818bb09acfc6229e41367ba45cea7cc5b2dd2a7c835cf5'
|
||||
'312574e655f9a87784ca416949c505c452b819fad3061f2cde8aced6540a19a3'
|
||||
'597dc5968c695bbdbb0eac9e8eb5117fcd2773bc91edf5ec103ecffffab8bc48')
|
||||
|
||||
prepare() {
|
||||
# Change directory names to release names so we don't need to change the
|
||||
# whole PKGBUILD
|
||||
mv llvm-$pkgver{.src,}
|
||||
mv cfe-$pkgver.src clang-$pkgver
|
||||
|
||||
cd "$srcdir/llvm-$pkgver"
|
||||
|
||||
# At the present, clang must reside inside the LLVM source code tree to build
|
||||
# See http://llvm.org/bugs/show_bug.cgi?id=4840
|
||||
mv "$srcdir/clang-$pkgver" tools/clang
|
||||
|
||||
mv "$srcdir/clang-tools-extra-$pkgver" tools/clang/tools/extra
|
||||
mv "$srcdir/clang-tools-extra-$_base_ver" tools/clang/tools/extra
|
||||
|
||||
mv "$srcdir/compiler-rt-$pkgver" projects/compiler-rt
|
||||
mv "$srcdir/compiler-rt-$_base_ver" projects/compiler-rt
|
||||
|
||||
# Fix docs installation directory
|
||||
sed -i 's:\$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm:' \
|
||||
|
@ -62,6 +74,10 @@ prepare() {
|
|||
# http://reviews.llvm.org/rL201729
|
||||
patch -d tools/clang -Np0 -i "$srcdir/clang-3.4-max_align_t.patch"
|
||||
|
||||
# Add command line option -fstack-protector-strong
|
||||
# http://reviews.llvm.org/rL201120
|
||||
#patch -d tools/clang -Np0 -i "$srcdir/clang-3.4-fstack-protector-strong.patch"
|
||||
|
||||
# Provide CMake modules (FS#38705)
|
||||
# http://reviews.llvm.org/rL201047
|
||||
# http://reviews.llvm.org/rL201048
|
||||
|
@ -119,6 +135,7 @@ package_llvm() {
|
|||
|
||||
# The runtime library goes into llvm-libs
|
||||
mv "$pkgdir/usr/lib/libLLVM-$pkgver.so" "$srcdir"
|
||||
rm "$pkgdir/usr/lib/libLLVM-$_base_ver.so"
|
||||
|
||||
# OCaml bindings go to a separate package
|
||||
rm -rf "$srcdir"/{ocaml,ocamldoc}
|
||||
|
@ -164,6 +181,7 @@ package_llvm-libs() {
|
|||
depends=('gcc-libs' 'zlib' 'libffi' 'ncurses')
|
||||
|
||||
install -D "$srcdir/libLLVM-$pkgver.so" "$pkgdir/usr/lib/libLLVM-$pkgver.so"
|
||||
ln -s libLLVM-$pkgver.so "$pkgdir/usr/lib/libLLVM-$_base_ver.so"
|
||||
|
||||
install -Dm644 "$srcdir/llvm-$pkgver/LICENSE.TXT" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
|
|
165
extra/llvm/clang-3.4-fstack-protector-strong.patch
Normal file
165
extra/llvm/clang-3.4-fstack-protector-strong.patch
Normal file
|
@ -0,0 +1,165 @@
|
|||
Index: test/Driver/stack-protector.c
|
||||
===================================================================
|
||||
--- test/Driver/stack-protector.c (revision 201119)
|
||||
+++ test/Driver/stack-protector.c (revision 201120)
|
||||
@@ -15,3 +15,11 @@
|
||||
|
||||
// RUN: %clang -target i386-pc-openbsd -fno-stack-protector -### %s 2>&1 | FileCheck %s -check-prefix=OPENBSD_OFF
|
||||
// OPENBSD_OFF-NOT: "-stack-protector"
|
||||
+
|
||||
+// RUN: %clang -fstack-protector-strong -### %s 2>&1 | FileCheck %s -check-prefix=SSP-STRONG
|
||||
+// SSP-STRONG: "-stack-protector" "2"
|
||||
+// SSP-STRONG-NOT: "-stack-protector-buffer-size"
|
||||
+
|
||||
+// RUN: %clang -fstack-protector-all -### %s 2>&1 | FileCheck %s -check-prefix=SSP-ALL
|
||||
+// SSP-ALL: "-stack-protector" "3"
|
||||
+// SSP-ALL-NOT: "-stack-protector-buffer-size"
|
||||
Index: test/CodeGen/stack-protector.c
|
||||
===================================================================
|
||||
--- test/CodeGen/stack-protector.c (revision 201119)
|
||||
+++ test/CodeGen/stack-protector.c (revision 201120)
|
||||
@@ -2,7 +2,9 @@
|
||||
// NOSSP: define void @test1(i8* %msg) #0 {
|
||||
// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 1 | FileCheck -check-prefix=WITHSSP %s
|
||||
// WITHSSP: define void @test1(i8* %msg) #0 {
|
||||
-// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 2 | FileCheck -check-prefix=SSPREQ %s
|
||||
+// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 2 | FileCheck -check-prefix=SSPSTRONG %s
|
||||
+// SSPSTRONG: define void @test1(i8* %msg) #0 {
|
||||
+// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 3 | FileCheck -check-prefix=SSPREQ %s
|
||||
// SSPREQ: define void @test1(i8* %msg) #0 {
|
||||
|
||||
typedef __SIZE_TYPE__ size_t;
|
||||
@@ -21,4 +23,6 @@
|
||||
|
||||
// WITHSSP: attributes #{{.*}} = { nounwind ssp{{.*}} }
|
||||
|
||||
+// SSPSTRONG: attributes #{{.*}} = { nounwind sspstrong{{.*}} }
|
||||
+
|
||||
// SSPREQ: attributes #{{.*}} = { nounwind sspreq{{.*}} }
|
||||
Index: include/clang/Basic/LangOptions.h
|
||||
===================================================================
|
||||
--- include/clang/Basic/LangOptions.h (revision 201119)
|
||||
+++ include/clang/Basic/LangOptions.h (revision 201120)
|
||||
@@ -58,7 +58,7 @@
|
||||
typedef clang::Visibility Visibility;
|
||||
|
||||
enum GCMode { NonGC, GCOnly, HybridGC };
|
||||
- enum StackProtectorMode { SSPOff, SSPOn, SSPReq };
|
||||
+ enum StackProtectorMode { SSPOff, SSPOn, SSPStrong, SSPReq };
|
||||
|
||||
enum SignedOverflowBehaviorTy {
|
||||
SOB_Undefined, // Default C standard behavior.
|
||||
Index: include/clang/Driver/ToolChain.h
|
||||
===================================================================
|
||||
--- include/clang/Driver/ToolChain.h (revision 201119)
|
||||
+++ include/clang/Driver/ToolChain.h (revision 201120)
|
||||
@@ -196,7 +196,7 @@
|
||||
virtual bool UseObjCMixedDispatch() const { return false; }
|
||||
|
||||
/// GetDefaultStackProtectorLevel - Get the default stack protector level for
|
||||
- /// this tool chain (0=off, 1=on, 2=all).
|
||||
+ /// this tool chain (0=off, 1=on, 2=strong, 3=all).
|
||||
virtual unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const {
|
||||
return 0;
|
||||
}
|
||||
Index: include/clang/Driver/Options.td
|
||||
===================================================================
|
||||
--- include/clang/Driver/Options.td (revision 201119)
|
||||
+++ include/clang/Driver/Options.td (revision 201120)
|
||||
@@ -675,7 +675,8 @@
|
||||
Flags<[CC1Option]>, HelpText<"Do not include source location information with diagnostics">;
|
||||
def fno_spell_checking : Flag<["-"], "fno-spell-checking">, Group<f_Group>,
|
||||
Flags<[CC1Option]>, HelpText<"Disable spell-checking">;
|
||||
-def fno_stack_protector : Flag<["-"], "fno-stack-protector">, Group<f_Group>;
|
||||
+def fno_stack_protector : Flag<["-"], "fno-stack-protector">, Group<f_Group>,
|
||||
+ HelpText<"Disable the use of stack protectors">;
|
||||
def fno_strict_aliasing : Flag<["-"], "fno-strict-aliasing">, Group<f_Group>;
|
||||
def fstruct_path_tbaa : Flag<["-"], "fstruct-path-tbaa">, Group<f_Group>;
|
||||
def fno_struct_path_tbaa : Flag<["-"], "fno-struct-path-tbaa">, Group<f_Group>;
|
||||
@@ -773,8 +774,12 @@
|
||||
def fno_signed_char : Flag<["-"], "fno-signed-char">, Flags<[CC1Option]>,
|
||||
Group<clang_ignored_f_Group>, HelpText<"Char is unsigned">;
|
||||
def fsplit_stack : Flag<["-"], "fsplit-stack">, Group<f_Group>;
|
||||
-def fstack_protector_all : Flag<["-"], "fstack-protector-all">, Group<f_Group>;
|
||||
-def fstack_protector : Flag<["-"], "fstack-protector">, Group<f_Group>;
|
||||
+def fstack_protector_all : Flag<["-"], "fstack-protector-all">, Group<f_Group>,
|
||||
+ HelpText<"Force the usage of stack protectors for all functions">;
|
||||
+def fstack_protector_strong : Flag<["-"], "fstack-protector-strong">, Group<f_Group>,
|
||||
+ HelpText<"Use a strong heuristic to apply stack protectors to functions">;
|
||||
+def fstack_protector : Flag<["-"], "fstack-protector">, Group<f_Group>,
|
||||
+ HelpText<"Enable stack protectors for functions potentially vulnerable to stack smashing">;
|
||||
def fstrict_aliasing : Flag<["-"], "fstrict-aliasing">, Group<f_Group>;
|
||||
def fstrict_enums : Flag<["-"], "fstrict-enums">, Group<f_Group>, Flags<[CC1Option]>,
|
||||
HelpText<"Enable optimizations based on the strict definition of an enum's "
|
||||
Index: lib/Frontend/CompilerInvocation.cpp
|
||||
===================================================================
|
||||
--- lib/Frontend/CompilerInvocation.cpp (revision 201119)
|
||||
+++ lib/Frontend/CompilerInvocation.cpp (revision 201120)
|
||||
@@ -1435,7 +1435,8 @@
|
||||
break;
|
||||
case 0: Opts.setStackProtector(LangOptions::SSPOff); break;
|
||||
case 1: Opts.setStackProtector(LangOptions::SSPOn); break;
|
||||
- case 2: Opts.setStackProtector(LangOptions::SSPReq); break;
|
||||
+ case 2: Opts.setStackProtector(LangOptions::SSPStrong); break;
|
||||
+ case 3: Opts.setStackProtector(LangOptions::SSPReq); break;
|
||||
}
|
||||
|
||||
// Parse -fsanitize= arguments.
|
||||
Index: lib/Frontend/InitPreprocessor.cpp
|
||||
===================================================================
|
||||
--- lib/Frontend/InitPreprocessor.cpp (revision 201119)
|
||||
+++ lib/Frontend/InitPreprocessor.cpp (revision 201120)
|
||||
@@ -695,8 +695,10 @@
|
||||
|
||||
if (LangOpts.getStackProtector() == LangOptions::SSPOn)
|
||||
Builder.defineMacro("__SSP__");
|
||||
+ else if (LangOpts.getStackProtector() == LangOptions::SSPStrong)
|
||||
+ Builder.defineMacro("__SSP_STRONG__", "2");
|
||||
else if (LangOpts.getStackProtector() == LangOptions::SSPReq)
|
||||
- Builder.defineMacro("__SSP_ALL__", "2");
|
||||
+ Builder.defineMacro("__SSP_ALL__", "3");
|
||||
|
||||
if (FEOpts.ProgramAction == frontend::RewriteObjC)
|
||||
Builder.defineMacro("__weak", "__attribute__((objc_gc(weak)))");
|
||||
Index: lib/Driver/Tools.cpp
|
||||
===================================================================
|
||||
--- lib/Driver/Tools.cpp (revision 201119)
|
||||
+++ lib/Driver/Tools.cpp (revision 201120)
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "Tools.h"
|
||||
#include "InputInfo.h"
|
||||
#include "ToolChains.h"
|
||||
+#include "clang/Basic/LangOptions.h"
|
||||
#include "clang/Basic/ObjCRuntime.h"
|
||||
#include "clang/Basic/Version.h"
|
||||
#include "clang/Driver/Action.h"
|
||||
@@ -3114,11 +3115,14 @@
|
||||
unsigned StackProtectorLevel = 0;
|
||||
if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector,
|
||||
options::OPT_fstack_protector_all,
|
||||
+ options::OPT_fstack_protector_strong,
|
||||
options::OPT_fstack_protector)) {
|
||||
if (A->getOption().matches(options::OPT_fstack_protector))
|
||||
- StackProtectorLevel = 1;
|
||||
+ StackProtectorLevel = LangOptions::SSPOn;
|
||||
+ else if (A->getOption().matches(options::OPT_fstack_protector_strong))
|
||||
+ StackProtectorLevel = LangOptions::SSPStrong;
|
||||
else if (A->getOption().matches(options::OPT_fstack_protector_all))
|
||||
- StackProtectorLevel = 2;
|
||||
+ StackProtectorLevel = LangOptions::SSPReq;
|
||||
} else {
|
||||
StackProtectorLevel =
|
||||
getToolChain().GetDefaultStackProtectorLevel(KernelOrKext);
|
||||
Index: lib/CodeGen/CodeGenModule.cpp
|
||||
===================================================================
|
||||
--- lib/CodeGen/CodeGenModule.cpp (revision 201119)
|
||||
+++ lib/CodeGen/CodeGenModule.cpp (revision 201120)
|
||||
@@ -651,6 +651,8 @@
|
||||
|
||||
if (LangOpts.getStackProtector() == LangOptions::SSPOn)
|
||||
B.addAttribute(llvm::Attribute::StackProtect);
|
||||
+ else if (LangOpts.getStackProtector() == LangOptions::SSPStrong)
|
||||
+ B.addAttribute(llvm::Attribute::StackProtectStrong);
|
||||
else if (LangOpts.getStackProtector() == LangOptions::SSPReq)
|
||||
B.addAttribute(llvm::Attribute::StackProtectReq);
|
||||
|
Loading…
Reference in a new issue