summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-mc/llvm-mc.cpp
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2010-04-12 19:43:00 +0000
committerSean Callanan <scallanan@apple.com>2010-04-12 19:43:00 +0000
commit2d03d3a8a7de5ee2cce70b32024f68fad38fff0e (patch)
tree82d6719ad45fc0b8eae360f8dd966ce26e54b551 /llvm/tools/llvm-mc/llvm-mc.cpp
parentde24a940a706255142a1dbcc798834c5b6dc5cd2 (diff)
downloadbcm5719-llvm-2d03d3a8a7de5ee2cce70b32024f68fad38fff0e.tar.gz
bcm5719-llvm-2d03d3a8a7de5ee2cce70b32024f68fad38fff0e.zip
Second try at integrating the edis tester. This
time I use the LIBS variable, which is not subject to a %.a -> -l% transformation, to link llvm-mc against libEnhancedDisassembly. llvm-mc -edis works the same as llvm-mc -disassemble, but outputs tokens and operands. llvm-svn: 101058
Diffstat (limited to 'llvm/tools/llvm-mc/llvm-mc.cpp')
-rw-r--r--llvm/tools/llvm-mc/llvm-mc.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/llvm/tools/llvm-mc/llvm-mc.cpp b/llvm/tools/llvm-mc/llvm-mc.cpp
index c6657f5d3e7..47f67c5e1bb 100644
--- a/llvm/tools/llvm-mc/llvm-mc.cpp
+++ b/llvm/tools/llvm-mc/llvm-mc.cpp
@@ -97,7 +97,8 @@ NoInitialTextSection("n", cl::desc(
enum ActionType {
AC_AsLex,
AC_Assemble,
- AC_Disassemble
+ AC_Disassemble,
+ AC_EDisassemble
};
static cl::opt<ActionType>
@@ -109,6 +110,8 @@ Action(cl::desc("Action to perform:"),
"Assemble a .s file (default)"),
clEnumValN(AC_Disassemble, "disassemble",
"Disassemble strings of hex bytes"),
+ clEnumValN(AC_EDisassemble, "edis",
+ "Enhanced disassembly of strings of hex bytes"),
clEnumValEnd));
static const Target *GetTarget(const char *ProgName) {
@@ -325,7 +328,7 @@ static int AssembleInput(const char *ProgName) {
return Res;
}
-static int DisassembleInput(const char *ProgName) {
+static int DisassembleInput(const char *ProgName, bool Enhanced) {
const Target *TheTarget = GetTarget(ProgName);
if (!TheTarget)
return 0;
@@ -344,7 +347,10 @@ static int DisassembleInput(const char *ProgName) {
return 1;
}
- return Disassembler::disassemble(*TheTarget, TripleName, *Buffer);
+ if (Enhanced)
+ return Disassembler::disassembleEnhanced(TripleName, *Buffer);
+ else
+ return Disassembler::disassemble(*TheTarget, TripleName, *Buffer);
}
@@ -371,7 +377,9 @@ int main(int argc, char **argv) {
case AC_Assemble:
return AssembleInput(argv[0]);
case AC_Disassemble:
- return DisassembleInput(argv[0]);
+ return DisassembleInput(argv[0], false);
+ case AC_EDisassemble:
+ return DisassembleInput(argv[0], true);
}
return 0;
OpenPOWER on IntegriCloud