[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
06/09: gnu: Add llvm-for-extempore.
From: |
Ricardo Wurmus |
Subject: |
06/09: gnu: Add llvm-for-extempore. |
Date: |
Fri, 16 Sep 2016 15:32:04 +0000 (UTC) |
rekado pushed a commit to branch master
in repository guix.
commit 921cb13a96abd6c69d11fbdeaf0c3c370b173c1e
Author: Ricardo Wurmus <address@hidden>
Date: Wed Sep 14 11:25:29 2016 +0200
gnu: Add llvm-for-extempore.
* gnu/packages/llvm.scm (llvm-for-extempore): New variable.
* gnu/packages/patches/llvm-for-extempore.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
gnu/local.mk | 1 +
gnu/packages/llvm.scm | 8 ++
gnu/packages/patches/llvm-for-extempore.patch | 118 +++++++++++++++++++++++++
3 files changed, 127 insertions(+)
diff --git a/gnu/local.mk b/gnu/local.mk
index a7006cb..e2cf40d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -658,6 +658,7 @@ dist_patch_DATA =
\
%D%/packages/patches/libwmf-CVE-2015-4696.patch \
%D%/packages/patches/libxslt-generated-ids.patch \
%D%/packages/patches/lirc-localstatedir.patch \
+ %D%/packages/patches/llvm-for-extempore.patch \
%D%/packages/patches/lm-sensors-hwmon-attrs.patch \
%D%/packages/patches/lua-CVE-2014-5461.patch \
%D%/packages/patches/lua-pkgconfig.patch \
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index a9eba79..b55a200 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2015 Mark H Weaver <address@hidden>
;;; Copyright © 2015 Ludovic Courtès <address@hidden>
;;; Copyright © 2016 Dennis Mungai <address@hidden>
+;;; Copyright © 2016 Ricardo Wurmus <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -267,3 +268,10 @@ code analysis tools.")
(define-public clang-3.5
(clang-from-llvm llvm-3.5 clang-runtime-3.5
"0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg"))
+
+(define-public llvm-for-extempore
+ (package (inherit llvm-3.7)
+ (source
+ (origin
+ (inherit (package-source llvm-3.7))
+ (patches (list (search-patch "llvm-for-extempore.patch")))))))
diff --git a/gnu/packages/patches/llvm-for-extempore.patch
b/gnu/packages/patches/llvm-for-extempore.patch
new file mode 100644
index 0000000..614682c
--- /dev/null
+++ b/gnu/packages/patches/llvm-for-extempore.patch
@@ -0,0 +1,118 @@
+This patch to LLVM is required by the developers of the Extempore language.
+The following explanation was posted to the address@hidden
+mailing list:
+
+"There is an assumption in the parser that all definitions occur within the
+same compilation unit - i.e. the parser has local state about what has been
+parsed in this unit of work. Extempore obviously does lots of little units
+rather than one big unit and this causes problems for named types that were
+defined in another unit - which they always are. The patch simply checks the
+current module to see if the type has been previously defined, and intervenes
+appropriately if it has."
+
+Message-ID: <address@hidden>
+
+--- llvm-3.7.1.src/include/llvm/MC/MCSectionCOFF.h 2015-04-11
12:11:45.000000000 +1000
++++ llvm-3.7.1.src/include/llvm/MC/MCSectionCOFF.h 2015-09-14
09:22:56.000000000 +1000
+@@ -16,7 +16,6 @@
+
+ #include "llvm/ADT/StringRef.h"
+ #include "llvm/MC/MCSection.h"
+-#include "llvm/Support/COFF.h"
+
+ namespace llvm {
+ class MCSymbol;
+
+--- llvm-3.7.1.src/lib/AsmParser/LLParser.cpp 2015-07-11 20:30:36.000000000
+1000
++++ llvm-3.7.1.src/lib/AsmParser/LLParser.cpp 2015-09-14 09:20:57.000000000
+1000
+@@ -1754,8 +1754,14 @@
+ // If the type hasn't been defined yet, create a forward definition and
+ // remember where that forward def'n was seen (in case it never is
defined).
+ if (!Entry.first) {
+- Entry.first = StructType::create(Context, Lex.getStrVal());
+- Entry.second = Lex.getLoc();
++ // this here for extempore
++ if (M->getTypeByName(Lex.getStrVal())) {
++ Entry.first = M->getTypeByName(Lex.getStrVal());
++ Entry.second = SMLoc();
++ } else {
++ Entry.first = StructType::create(Context, Lex.getStrVal());
++ Entry.second = Lex.getLoc();
++ }
+ }
+ Result = Entry.first;
+ Lex.Lex();
+
+--- llvm-3.7.1.src/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
2015-07-01 05:10:31.000000000 +1000
++++ llvm-3.7.1.src/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
2015-09-14 09:23:40.000000000 +1000
+@@ -32,6 +32,7 @@
+ #include "llvm/MC/MCStreamer.h"
+ #include "llvm/MC/MCSymbolELF.h"
+ #include "llvm/MC/MCValue.h"
++#include "llvm/Support/COFF.h"
+ #include "llvm/Support/Dwarf.h"
+ #include "llvm/Support/ELF.h"
+ #include "llvm/Support/ErrorHandling.h"
+
+--- llvm-3.7.1.src/lib/ExecutionEngine/MCJIT/MCJIT.cpp 2015-07-31
02:31:16.000000000 +1000
++++ llvm-3.7.1.src/lib/ExecutionEngine/MCJIT/MCJIT.cpp 2015-09-14
09:21:28.000000000 +1000
+@@ -524,6 +524,17 @@
+ rv.IntVal = APInt(32, PF(ArgValues[0].IntVal.getZExtValue()));
+ return rv;
+ }
++ if (FTy->getNumParams() == 1 &&
++ RetTy->isVoidTy() &&
++ FTy->getParamType(0)->isPointerTy()) {
++ GenericValue rv;
++ //void (*PF)(char *) = (void(*)(char *))(intptr_t)FPtr;
++ //printf("are symbols available: %d\n",isSymbolSearchingDisabled());
++ void (*PF)(char *) = (void(*)(char *))FPtr;
++ char* mzone = (char*) GVTOP(ArgValues[0]);
++ PF(mzone);
++ return rv;
++ }
+ break;
+ }
+ }
+
+--- llvm-3.7.1.src/lib/MC/MCContext.cpp 2015-06-23 21:31:32.000000000
+1000
++++ llvm-3.7.1.src/lib/MC/MCContext.cpp 2015-09-14 09:24:01.000000000
+1000
+@@ -23,6 +23,7 @@
+ #include "llvm/MC/MCSymbolCOFF.h"
+ #include "llvm/MC/MCSymbolELF.h"
+ #include "llvm/MC/MCSymbolMachO.h"
++#include "llvm/Support/COFF.h"
+ #include "llvm/Support/ELF.h"
+ #include "llvm/Support/ErrorHandling.h"
+ #include "llvm/Support/FileSystem.h"
+
+--- llvm-3.7.1.src/lib/MC/MCObjectFileInfo.cpp 2015-06-25 10:28:42.000000000
+1000
++++ llvm-3.7.1.src/lib/MC/MCObjectFileInfo.cpp 2015-09-14 09:24:17.000000000
+1000
+@@ -16,6 +16,7 @@
+ #include "llvm/MC/MCSectionCOFF.h"
+ #include "llvm/MC/MCSectionELF.h"
+ #include "llvm/MC/MCSectionMachO.h"
++#include "llvm/Support/COFF.h"
+ using namespace llvm;
+
+ static bool useCompactUnwind(const Triple &T) {
+
+--- llvm-3.7.1.src/lib/MC/MCSectionCOFF.cpp 2015-06-09 10:31:39.000000000
+1000
++++ llvm-3.7.1.src/lib/MC/MCSectionCOFF.cpp 2015-09-14 09:24:25.000000000
+1000
+@@ -11,6 +11,7 @@
+ #include "llvm/MC/MCAsmInfo.h"
+ #include "llvm/MC/MCContext.h"
+ #include "llvm/MC/MCSymbol.h"
++#include "llvm/Support/COFF.h"
+ #include "llvm/Support/raw_ostream.h"
+ using namespace llvm;
+
+--- llvm-3.7.1.src/lib/Target/X86/X86TargetObjectFile.cpp 2015-06-27
04:55:48.000000000 +1000
++++ llvm-3.7.1.src/lib/Target/X86/X86TargetObjectFile.cpp 2015-09-14
09:25:03.000000000 +1000
+@@ -16,6 +16,7 @@
+ #include "llvm/MC/MCSectionCOFF.h"
+ #include "llvm/MC/MCSectionELF.h"
+ #include "llvm/MC/MCValue.h"
++#include "llvm/Support/COFF.h"
+ #include "llvm/Support/Dwarf.h"
+ #include "llvm/Target/TargetLowering.h"
- branch master updated (f687539 -> 9159562), Ricardo Wurmus, 2016/09/16
- 05/09: gnu: Add stb-image-for-extempore., Ricardo Wurmus, 2016/09/16
- 08/09: gnu: Add portmidi-for-extempore., Ricardo Wurmus, 2016/09/16
- 04/09: gnu: Add assimp., Ricardo Wurmus, 2016/09/16
- 01/09: gnu: Add r-rtsne., Ricardo Wurmus, 2016/09/16
- 03/09: gnu: Add nanovg-for-extempore., Ricardo Wurmus, 2016/09/16
- 09/09: gnu: Add Extempore., Ricardo Wurmus, 2016/09/16
- 02/09: gnu: Add r-e1071., Ricardo Wurmus, 2016/09/16
- 07/09: gnu: Add kiss-fft-for-extempore., Ricardo Wurmus, 2016/09/16
- 06/09: gnu: Add llvm-for-extempore.,
Ricardo Wurmus <=