blob: 80a83d90405c0ca8d95b5cf999732cab1a62c2d7 [file] [log] [blame]
Chris Lattnerf9f065e2009-06-18 23:04:45 +00001//===-- llvm-dis.cpp - The low-level LLVM disassembler --------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This utility may be invoked in the following manner:
11// llvm-dis [options] - Read LLVM bitcode from stdin, write asm to stdout
12// llvm-dis [options] x.bc - Read LLVM bitcode from the x.bc file, write asm
13// to the x.ll file.
14// Options:
15// --help - Output information about command line switches
16//
17//===----------------------------------------------------------------------===//
18
19#include "llvm/Support/CommandLine.h"
20#include "llvm/Support/ManagedStatic.h"
21#include "llvm/Support/MemoryBuffer.h"
22#include "llvm/Support/PrettyStackTrace.h"
23#include "llvm/Support/raw_ostream.h"
24#include "llvm/System/Signals.h"
25using namespace llvm;
26
27static cl::opt<std::string>
28InputFilename(cl::Positional, cl::desc("<input file>"), cl::init("-"));
29
30static cl::opt<std::string>
31OutputFilename("o", cl::desc("Output filename"),
32 cl::value_desc("filename"));
33
34int main(int argc, char **argv) {
35 // Print a stack trace if we signal out.
36 sys::PrintStackTraceOnErrorSignal();
37 PrettyStackTraceProgram X(argc, argv);
38
39 llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
40
41 cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n");
42
43 std::string ErrorMessage;
44
45 MemoryBuffer *Buffer
46 = MemoryBuffer::getFileOrSTDIN(InputFilename, &ErrorMessage);
47
48 if (Buffer == 0) {
49 errs() << argv[0] << ": ";
50 if (ErrorMessage.size())
51 errs() << ErrorMessage << "\n";
52 else
53 errs() << "input file didn't read correctly.\n";
54 return 1;
55 }
56
57
58
59 return 0;
60}
61