aboutsummaryrefslogtreecommitdiffstats
path: root/main/llvm/llvm-0001-fix-shared-build.patch
diff options
context:
space:
mode:
authorTravis Tilley <ttilley@gmail.com>2015-05-27 12:39:40 -0400
committerNatanael Copa <ncopa@alpinelinux.org>2015-05-29 13:38:55 +0000
commit08fdc9700ce1b4e47bebc9c9d08959f5e50bc0c1 (patch)
treea2be5477ecf414d7932779f755518cb4b74a6c75 /main/llvm/llvm-0001-fix-shared-build.patch
parent2e13d49d9449cb2fab62471594f3980307bf4cef (diff)
downloadaports-08fdc9700ce1b4e47bebc9c9d08959f5e50bc0c1.tar.bz2
aports-08fdc9700ce1b4e47bebc9c9d08959f5e50bc0c1.tar.xz
main/llvm: update to 3.6.1
clean up and update patchset switch to cmake perform a two-stage build with a minimal bootstrap compile of clang add clang extras update package list to split out clang documentation enable pulling from the svn release tags fix making use of abuild CFLAGS/CXXFLAGS during build don't run check-llvm, as the tests fail when running under PaX
Diffstat (limited to 'main/llvm/llvm-0001-fix-shared-build.patch')
-rw-r--r--main/llvm/llvm-0001-fix-shared-build.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/main/llvm/llvm-0001-fix-shared-build.patch b/main/llvm/llvm-0001-fix-shared-build.patch
new file mode 100644
index 0000000000..492c4399ac
--- /dev/null
+++ b/main/llvm/llvm-0001-fix-shared-build.patch
@@ -0,0 +1,48 @@
+From 0d03d2ea17b66d8cb0f6ca5f2181237228535845 Mon Sep 17 00:00:00 2001
+From: Sanjoy Das <sanjoy at azulsystems.com>
+Date: Thu Jun 19 15:38:02 2014 -0700
+Subject: Fix the --enable-shared build.
+
+Currently a build configured with ./configure --enable-shared breaks
+with an undefined "llvm::cl::parser<llvm::PassInfo
+const*>::getOption(unsigned int) const" symbol when linking opt. This
+body for this symbol gets emitted into Pass.o (along with the destructor
+for PassNameParser), but gets linked into libLLVM-3.5svn.so with local
+visibility, causing the link error.
+
+This fix uses the existing EXTERN_TEMPLATE machinery to force a globally
+visible definition for the functions in parser<const PassInfo *> into
+Pass.o.
+---
+ include/llvm/IR/LegacyPassNameParser.h | 2 ++
+ lib/IR/Pass.cpp | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/include/llvm/IR/LegacyPassNameParser.h b/include/llvm/IR/LegacyPassNameParser.h
+index e2e4912..a07e3fd 100644
+--- a/include/llvm/IR/LegacyPassNameParser.h
++++ b/include/llvm/IR/LegacyPassNameParser.h
+@@ -95,6 +95,8 @@ private:
+ }
+ };
+
++EXTERN_TEMPLATE_INSTANTIATION(class cl::parser<const PassInfo *>);
++
+ ///===----------------------------------------------------------------------===//
+ /// FilteredPassNameParser class - Make use of the pass registration
+ /// mechanism to automatically add a command line argument to opt for
+diff --git a/lib/IR/Pass.cpp b/lib/IR/Pass.cpp
+index 91d86ae..00ce223 100644
+--- a/lib/IR/Pass.cpp
++++ b/lib/IR/Pass.cpp
+@@ -234,6 +234,8 @@ PassNameParser::~PassNameParser() {
+ // attempting to remove the registration listener is an error.
+ }
+
++TEMPLATE_INSTANTIATION(class cl::parser<const PassInfo *>);
++
+ //===----------------------------------------------------------------------===//
+ // AnalysisUsage Class Implementation
+ //
+--
+2.1.4