capstone

Форк
0
/
0002-capstone-generate-GenSubtargetInfo.inc.patch 
85 строк · 2.3 Кб
1
From 46ca491e1bbbc9ace2a91fe6a7b112c83b9b88cc Mon Sep 17 00:00:00 2001
2
From: mephi42 <mephi42@gmail.com>
3
Date: Tue, 7 Aug 2018 17:42:59 +0200
4
Subject: [PATCH 2/7] capstone: generate *GenSubtargetInfo.inc
5

6
---
7
 utils/TableGen/SubtargetEmitter.cpp | 28 +++++++++++++++++++++++++++-
8
 1 file changed, 27 insertions(+), 1 deletion(-)
9

10
diff --git a/utils/TableGen/SubtargetEmitter.cpp b/utils/TableGen/SubtargetEmitter.cpp
11
index c5da8d8142f..98ab3240472 100644
12
--- a/utils/TableGen/SubtargetEmitter.cpp
13
+++ b/utils/TableGen/SubtargetEmitter.cpp
14
@@ -147,7 +147,9 @@ void SubtargetEmitter::Enumeration(raw_ostream &OS) {
15
   if (N > MAX_SUBTARGET_FEATURES)
16
     PrintFatalError("Too many subtarget features! Bump MAX_SUBTARGET_FEATURES.");
17
 
18
+#ifndef CAPSTONE
19
   OS << "namespace " << Target << " {\n";
20
+#endif
21
 
22
   // Open enumeration.
23
   OS << "enum {\n";
24
@@ -158,12 +160,22 @@ void SubtargetEmitter::Enumeration(raw_ostream &OS) {
25
     Record *Def = DefList[i];
26
 
27
     // Get and emit name
28
-    OS << "  " << Def->getName() << " = " << i << ",\n";
29
+    OS << "  "
30
+#ifdef CAPSTONE
31
+       << Target << "_"
32
+#endif
33
+       << Def->getName() << " = "
34
+#ifdef CAPSTONE
35
+       << "1ULL << "
36
+#endif
37
+       << i << ",\n";
38
   }
39
 
40
   // Close enumeration and namespace
41
   OS << "};\n";
42
+#ifndef CAPSTONE
43
   OS << "} // end namespace " << Target << "\n";
44
+#endif
45
 }
46
 
47
 //
48
@@ -1709,14 +1721,27 @@ void SubtargetEmitter::emitGenMCSubtargetInfo(raw_ostream &OS) {
49
 void SubtargetEmitter::run(raw_ostream &OS) {
50
   emitSourceFileHeader("Subtarget Enumeration Source Fragment", OS);
51
 
52
+#ifdef CAPSTONE
53
+  OS << "/* Capstone Disassembly Engine, http://www.capstone-engine.org */\n"
54
+        "/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */\n"
55
+        "\n";
56
+#endif
57
+
58
   OS << "\n#ifdef GET_SUBTARGETINFO_ENUM\n";
59
   OS << "#undef GET_SUBTARGETINFO_ENUM\n\n";
60
 
61
+#ifndef CAPSTONE
62
   OS << "namespace llvm {\n";
63
+#endif
64
   Enumeration(OS);
65
+#ifdef CAPSTONE
66
+  OS << "\n";
67
+#else
68
   OS << "} // end namespace llvm\n\n";
69
+#endif
70
   OS << "#endif // GET_SUBTARGETINFO_ENUM\n\n";
71
 
72
+#ifndef CAPSTONE
73
   OS << "\n#ifdef GET_SUBTARGETINFO_MC_DESC\n";
74
   OS << "#undef GET_SUBTARGETINFO_MC_DESC\n\n";
75
 
76
@@ -1857,6 +1882,7 @@ void SubtargetEmitter::run(raw_ostream &OS) {
77
   OS << "} // end namespace llvm\n\n";
78
 
79
   OS << "#endif // GET_SUBTARGETINFO_CTOR\n\n";
80
+#endif
81
 }
82
 
83
 namespace llvm {
84
-- 
85
2.19.1
86

87

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.