From 70622e24effd147a1d3e6206607f73ccdba33e8f Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 22 May 2015 13:43:22 +0000 Subject: Revert "main/llvm: update patchset, switch to cmake, perform two-stage build with a minimal bootstrap compile of clang, add clang extras, update package list to split out clang documentation" This reverts commit 81d1b43c5af39e14cb91232c4afcb7839b96f5a1. --- main/llvm/llvm-3.5-gcc-4.9.patch | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 main/llvm/llvm-3.5-gcc-4.9.patch (limited to 'main/llvm/llvm-3.5-gcc-4.9.patch') diff --git a/main/llvm/llvm-3.5-gcc-4.9.patch b/main/llvm/llvm-3.5-gcc-4.9.patch new file mode 100644 index 0000000000..f60c4df723 --- /dev/null +++ b/main/llvm/llvm-3.5-gcc-4.9.patch @@ -0,0 +1,43 @@ +commit 080fb498017d17af2e4d7563608c7d8a848f20da +Author: Sanjoy Das +Date: Thu Jun 19 15:38:02 2014 -0700 + + Fix the --enable-shared build. + + Currently a build configured with ./configure --enable-shared breaks + with an undefined "llvm::cl::parser::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 into + Pass.o. + +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); ++ + ///===----------------------------------------------------------------------===// + /// 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); ++ + //===----------------------------------------------------------------------===// + // AnalysisUsage Class Implementation + // -- cgit v1.2.3