aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShih-wei Liao <sliao@google.com>2010-04-29 00:24:07 -0700
committerShih-wei Liao <sliao@google.com>2010-04-29 00:24:07 -0700
commita59a85f8dd03d52907019f1a4caaf7653b01b7d3 (patch)
treebf887e96b412f30a0f610ba86088f048be87a19c
parent7abe37e4aee38cc79d91dd069a37d7e91d5bef53 (diff)
downloadexternal_llvm-a59a85f8dd03d52907019f1a4caaf7653b01b7d3.zip
external_llvm-a59a85f8dd03d52907019f1a4caaf7653b01b7d3.tar.gz
external_llvm-a59a85f8dd03d52907019f1a4caaf7653b01b7d3.tar.bz2
For disassembler
Change-Id: I14e64ec4640cbeb57ac87473775e8ba8a7320b3f
-rw-r--r--Android.mk5
-rw-r--r--device/include/llvm/Config/Disassemblers.def2
-rw-r--r--lib/CodeGen/AsmPrinter/Android.mk21
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp18
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp4
-rw-r--r--lib/MC/MCParser/Android.mk30
-rw-r--r--lib/MC/MCParser/AsmLexer.cpp1
-rw-r--r--lib/Target/ARM/AsmParser/Android.mk27
-rw-r--r--lib/Target/ARM/AsmPrinter/Android.mk28
-rw-r--r--lib/Target/ARM/Disassembler/ARMDisassembler.cpp4
-rw-r--r--lib/Target/ARM/Disassembler/Android.mk29
-rw-r--r--lib/Target/X86/AsmParser/Android.mk27
-rw-r--r--lib/Target/X86/AsmPrinter/Android.mk30
-rw-r--r--lib/Target/X86/Disassembler/Android.mk27
-rw-r--r--tblgen-rules.mk5
15 files changed, 247 insertions, 11 deletions
diff --git a/Android.mk b/Android.mk
index 3b35cf7..1d7e18f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -24,11 +24,16 @@ subdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \
lib/CodeGen/AsmPrinter \
lib/Target \
lib/Target/ARM \
+ lib/Target/ARM/AsmPrinter \
+ lib/Target/ARM/Disassembler \
lib/Target/ARM/TargetInfo \
lib/Target/X86 \
+ lib/Target/X86/AsmPrinter \
+ lib/Target/X86/Disassembler \
lib/Target/X86/TargetInfo \
lib/ExecutionEngine/JIT \
lib/MC \
+ lib/MC/MCParser \
))
TBLGEN := $(HOST_OUT_EXECUTABLES)/tblgen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/device/include/llvm/Config/Disassemblers.def b/device/include/llvm/Config/Disassemblers.def
index 7221c15..d663c61 100644
--- a/device/include/llvm/Config/Disassemblers.def
+++ b/device/include/llvm/Config/Disassemblers.def
@@ -24,4 +24,6 @@
# error Please define the macro LLVM_DISASSEMBLER(TargetName)
#endif
+LLVM_DISASSEMBLER(ARM)
+
#undef LLVM_DISASSEMBLER
diff --git a/lib/CodeGen/AsmPrinter/Android.mk b/lib/CodeGen/AsmPrinter/Android.mk
index dcad0a9..0063f43 100644
--- a/lib/CodeGen/AsmPrinter/Android.mk
+++ b/lib/CodeGen/AsmPrinter/Android.mk
@@ -1,17 +1,21 @@
LOCAL_PATH := $(call my-dir)
codegen_asmprinter_SRC_FILES := \
- AsmPrinter.cpp \
- DIE.cpp \
- DwarfDebug.cpp \
- DwarfException.cpp \
- OcamlGCPrinter.cpp
+ AsmPrinter.cpp
# For the host
# =====================================================
include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(codegen_asmprinter_SRC_FILES)
+LOCAL_SRC_FILES := \
+ AsmPrinter.cpp \
+ AsmPrinterDwarf.cpp \
+ AsmPrinterInlineAsm.cpp \
+ DIE.cpp \
+ DwarfDebug.cpp \
+ DwarfException.cpp \
+ OcamlGCPrinter.cpp
+
LOCAL_MODULE:= libLLVMAsmPrinter
include $(LLVM_HOST_BUILD_MK)
@@ -21,7 +25,10 @@ include $(BUILD_HOST_STATIC_LIBRARY)
# =====================================================
include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(codegen_asmprinter_SRC_FILES)
+LOCAL_SRC_FILES := \
+ AsmPrinter.cpp \
+ AsmPrinterInlineAsm.cpp
+
LOCAL_MODULE:= libLLVMAsmPrinter
include $(LLVM_DEVICE_BUILD_MK)
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index e907f07..f7c9d84 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -13,8 +13,10 @@
#define DEBUG_TYPE "asm-printer"
#include "llvm/CodeGen/AsmPrinter.h"
-#include "DwarfDebug.h"
-#include "DwarfException.h"
+#ifndef ANDROID_TARGET_BUILD
+# include "DwarfDebug.h"
+# include "DwarfException.h"
+#endif // ANDROID_TARGET_BUILD
#include "llvm/Module.h"
#include "llvm/CodeGen/GCMetadataPrinter.h"
#include "llvm/CodeGen/MachineConstantPool.h"
@@ -155,11 +157,13 @@ bool AsmPrinter::doInitialization(Module &M) {
OutStreamer.AddBlankLine();
}
+#ifndef ANDROID_TARGET_BUILD
if (MAI->doesSupportDebugInformation())
DD = new DwarfDebug(this, &M);
if (MAI->doesSupportExceptionHandling())
DE = new DwarfException(this);
+#endif // ANDROID_TARGET_BUILD
return false;
}
@@ -361,6 +365,7 @@ void AsmPrinter::EmitFunctionHeader() {
}
// Emit pre-function debug and/or EH information.
+#ifndef ANDROID_TARGET_BUILD
if (DE) {
if (TimePassesIsEnabled) {
NamedRegionTimer T(EHTimerName, DWARFGroupName);
@@ -377,6 +382,7 @@ void AsmPrinter::EmitFunctionHeader() {
DD->beginFunction(MF);
}
}
+#endif // ANDROID_TARGET_BUILD
}
/// EmitFunctionEntryLabel - Emit the label that is the entrypoint for the
@@ -535,6 +541,7 @@ void AsmPrinter::EmitFunctionBody() {
++EmittedInsts;
+#ifndef ANDROID_TARGET_BUILD
if (ShouldPrintDebugScopes) {
if (TimePassesIsEnabled) {
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
@@ -543,6 +550,7 @@ void AsmPrinter::EmitFunctionBody() {
DD->beginScope(II);
}
}
+#endif // ANDROID_TARGET_BUILD
if (isVerbose())
EmitComments(*II, OutStreamer.GetCommentOS());
@@ -573,6 +581,7 @@ void AsmPrinter::EmitFunctionBody() {
break;
}
+#ifndef ANDROID_TARGET_BUILD
if (ShouldPrintDebugScopes) {
if (TimePassesIsEnabled) {
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
@@ -581,6 +590,7 @@ void AsmPrinter::EmitFunctionBody() {
DD->endScope(II);
}
}
+#endif // ANDROID_TARGET_BUILD
}
}
@@ -616,6 +626,7 @@ void AsmPrinter::EmitFunctionBody() {
}
// Emit post-function debug information.
+#ifndef ANDROID_TARGET_BUILD
if (DD) {
if (TimePassesIsEnabled) {
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
@@ -632,6 +643,7 @@ void AsmPrinter::EmitFunctionBody() {
DE->EndFunction();
}
}
+#endif // ANDROID_TARGET_BUILD
MMI->EndFunction();
// Print out jump tables referenced by the function.
@@ -648,6 +660,7 @@ bool AsmPrinter::doFinalization(Module &M) {
EmitGlobalVariable(I);
// Finalize debug and EH information.
+#ifndef ANDROID_TARGET_BUILD
if (DE) {
if (TimePassesIsEnabled) {
NamedRegionTimer T(EHTimerName, DWARFGroupName);
@@ -666,6 +679,7 @@ bool AsmPrinter::doFinalization(Module &M) {
}
delete DD; DD = 0;
}
+#endif // ANDROID_TARGET_BUILD
// If the target wants to know about weak references, print them all.
if (MAI->getWeakRefDirective()) {
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp b/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
index 37d10e5..35e4d1b 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
@@ -37,6 +37,7 @@ using namespace llvm;
/// EmitInlineAsm - Emit a blob of inline asm to the output streamer.
void AsmPrinter::EmitInlineAsm(StringRef Str, unsigned LocCookie) const {
+#ifndef ANDROID_TARGET_BUILD
assert(!Str.empty() && "Can't emit empty inline asm block");
// Remember if the buffer is nul terminated or not so we can avoid a copy.
@@ -84,12 +85,14 @@ void AsmPrinter::EmitInlineAsm(StringRef Str, unsigned LocCookie) const {
/*NoFinalize*/ true);
if (Res && !HasDiagHandler)
report_fatal_error("Error parsing inline asm\n");
+#endif // ANDROID_TARGET_BUILD
}
/// EmitInlineAsm - This method formats and emits the specified machine
/// instruction that is an inline asm.
void AsmPrinter::EmitInlineAsm(const MachineInstr *MI) const {
+#ifndef ANDROID_TARGET_BUILD
assert(MI->isInlineAsm() && "printInlineAsm only works on inline asms");
unsigned NumOperands = MI->getNumOperands();
@@ -316,6 +319,7 @@ void AsmPrinter::EmitInlineAsm(const MachineInstr *MI) const {
if (OutStreamer.hasRawTextSupport())
OutStreamer.EmitRawText(Twine("\t")+MAI->getCommentString()+
MAI->getInlineAsmEnd());
+#endif // ANDROID_TARGET_BUILD
}
diff --git a/lib/MC/MCParser/Android.mk b/lib/MC/MCParser/Android.mk
new file mode 100644
index 0000000..1335362
--- /dev/null
+++ b/lib/MC/MCParser/Android.mk
@@ -0,0 +1,30 @@
+LOCAL_PATH:= $(call my-dir)
+
+mc_parser_SRC_FILES := \
+ AsmLexer.cpp \
+ AsmParser.cpp \
+ MCAsmLexer.cpp \
+ MCAsmParser.cpp \
+ TargetAsmParser.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(mc_parser_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMMCParser
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(mc_parser_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMMCParser
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_STATIC_LIBRARY)
diff --git a/lib/MC/MCParser/AsmLexer.cpp b/lib/MC/MCParser/AsmLexer.cpp
index 1183312..7f9fe8a 100644
--- a/lib/MC/MCParser/AsmLexer.cpp
+++ b/lib/MC/MCParser/AsmLexer.cpp
@@ -15,6 +15,7 @@
#include "llvm/Support/SMLoc.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/MC/MCAsmInfo.h"
+#include <ctype.h>
#include <cerrno>
#include <cstdio>
#include <cstdlib>
diff --git a/lib/Target/ARM/AsmParser/Android.mk b/lib/Target/ARM/AsmParser/Android.mk
new file mode 100644
index 0000000..6303fd0
--- /dev/null
+++ b/lib/Target/ARM/AsmParser/Android.mk
@@ -0,0 +1,27 @@
+LOCAL_PATH := $(call my-dir)
+
+# For the device only
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := \
+ ARMGenInstrNames.inc \
+ ARMGenRegisterNames.inc \
+ ARMGenRegisterInfo.h.inc
+
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := \
+ ARMAsmLexer.cpp \
+ ARMAsmParser.cpp
+
+LOCAL_C_INCLUDES += \
+ $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARMAsmParser
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
diff --git a/lib/Target/ARM/AsmPrinter/Android.mk b/lib/Target/ARM/AsmPrinter/Android.mk
new file mode 100644
index 0000000..b906904
--- /dev/null
+++ b/lib/Target/ARM/AsmPrinter/Android.mk
@@ -0,0 +1,28 @@
+LOCAL_PATH := $(call my-dir)
+
+# For the device only
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := \
+ ARMGenAsmWriter.inc \
+ ARMGenInstrNames.inc \
+ ARMGenRegisterNames.inc \
+ ARMGenRegisterInfo.h.inc
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := \
+ ARMAsmPrinter.cpp \
+ ARMInstPrinter.cpp \
+ ARMMCInstLower.cpp
+
+LOCAL_C_INCLUDES += \
+ $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARMAsmPrinter
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
diff --git a/lib/Target/ARM/Disassembler/ARMDisassembler.cpp b/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
index 4de697e..aeb999d 100644
--- a/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
+++ b/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
@@ -37,9 +37,9 @@
/// o static uint16_t decodeThumbInstruction(field_t insn) - the decoding
/// function for a Thumb instruction.
///
-#include "../ARMGenDecoderTables.inc"
+#include "ARMGenDecoderTables.inc"
-#include "../ARMGenEDInfo.inc"
+#include "ARMGenEDInfo.inc"
using namespace llvm;
diff --git a/lib/Target/ARM/Disassembler/Android.mk b/lib/Target/ARM/Disassembler/Android.mk
new file mode 100644
index 0000000..6aead82
--- /dev/null
+++ b/lib/Target/ARM/Disassembler/Android.mk
@@ -0,0 +1,29 @@
+LOCAL_PATH := $(call my-dir)
+
+# For the device only
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := \
+ ARMGenDecoderTables.inc \
+ ARMGenEDInfo.inc \
+ ARMGenInstrNames.inc \
+ ARMGenInstrInfo.inc \
+ ARMGenRegisterNames.inc \
+ ARMGenRegisterInfo.h.inc
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := \
+ ARMDisassembler.cpp \
+ ARMDisassemblerCore.cpp
+
+LOCAL_C_INCLUDES += \
+ $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARMDisassembler
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
diff --git a/lib/Target/X86/AsmParser/Android.mk b/lib/Target/X86/AsmParser/Android.mk
new file mode 100644
index 0000000..c94af7f
--- /dev/null
+++ b/lib/Target/X86/AsmParser/Android.mk
@@ -0,0 +1,27 @@
+LOCAL_PATH := $(call my-dir)
+
+# For the device only
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := \
+ X86GenAsmMatcher.inc \
+ X86GenInstrNames.inc \
+ X86GenRegisterNames.inc
+
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := \
+ X86AsmLexer.cpp \
+ X86AsmParser.cpp
+
+LOCAL_C_INCLUDES += \
+ $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMX86AsmParser
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Target/X86/AsmPrinter/Android.mk b/lib/Target/X86/AsmPrinter/Android.mk
new file mode 100644
index 0000000..9e4c5e2
--- /dev/null
+++ b/lib/Target/X86/AsmPrinter/Android.mk
@@ -0,0 +1,30 @@
+LOCAL_PATH := $(call my-dir)
+
+# For the device only
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := \
+ X86GenAsmWriter.inc \
+ X86GenAsmWriter1.inc \
+ X86GenInstrNames.inc \
+ X86GenRegisterNames.inc \
+ X86GenRegisterInfo.h.inc
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := \
+ X86ATTInstPrinter.cpp \
+ X86AsmPrinter.cpp \
+ X86IntelInstPrinter.cpp \
+ X86MCInstLower.cpp
+
+LOCAL_C_INCLUDES += \
+ $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMX86AsmPrinter
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Target/X86/Disassembler/Android.mk b/lib/Target/X86/Disassembler/Android.mk
new file mode 100644
index 0000000..548360b
--- /dev/null
+++ b/lib/Target/X86/Disassembler/Android.mk
@@ -0,0 +1,27 @@
+LOCAL_PATH := $(call my-dir)
+
+# For the device only
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := \
+ X86GenDisassemblerTables.inc \
+ X86GenEDInfo.inc \
+ X86GenRegisterNames.inc
+
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := \
+ X86Disassembler.cpp \
+ X86DisassemblerDecoder.c
+
+LOCAL_C_INCLUDES += \
+ $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMX86Disassembler
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/tblgen-rules.mk b/tblgen-rules.mk
index 435bc42..6e7bcf1 100644
--- a/tblgen-rules.mk
+++ b/tblgen-rules.mk
@@ -105,4 +105,9 @@ $(intermediates)/%GenIntrinsics.inc: $(tblgen_source_dir)/%.td $(TBLGEN)
$(call transform-td-to-out,tgt_intrinsics)
endif
+ifneq ($(findstring ARMGenDecoderTables.inc,$(tblgen_gen_tables)),)
+$(intermediates)/ARMGenDecoderTables.inc: $(tblgen_source_dir)/ARM.td $(TBLGEN)
+ $(call transform-td-to-out,arm-decoder)
+endif
+
endif