that builds the following additional llvm/clang tools: - bugpoint - llc - lli - llvm-ar - llvm-as - llvm-bcanalyzer - llvm-diff - llvm-dis - llvm-extract - llvm-ld - llvm-link - llvm-mc - llvm-nm - llvm-objdump - llvm-prof - llvm-ranlib - llvm-rtdyld - llvm-stub - macho-dump - opt These tools are mainly useful for people that want to manipulate llvm bitcode (.bc) and llvm assembly language (.ll) files, or want to tinker with llvm and clang themselves. MFC after: 2 weeks
47 lines
1.1 KiB
C++
47 lines
1.1 KiB
C++
//===-- llvm-objdump.h ----------------------------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_OBJDUMP_H
|
|
#define LLVM_OBJDUMP_H
|
|
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/Support/CommandLine.h"
|
|
#include "llvm/Support/DataTypes.h"
|
|
#include "llvm/Support/MemoryObject.h"
|
|
|
|
namespace llvm {
|
|
|
|
extern cl::opt<std::string> TripleName;
|
|
extern cl::opt<std::string> ArchName;
|
|
|
|
// Various helper functions.
|
|
void DumpBytes(StringRef bytes);
|
|
void DisassembleInputMachO(StringRef Filename);
|
|
|
|
class StringRefMemoryObject : public MemoryObject {
|
|
private:
|
|
StringRef Bytes;
|
|
public:
|
|
StringRefMemoryObject(StringRef bytes) : Bytes(bytes) {}
|
|
|
|
uint64_t getBase() const { return 0; }
|
|
uint64_t getExtent() const { return Bytes.size(); }
|
|
|
|
int readByte(uint64_t Addr, uint8_t *Byte) const {
|
|
if (Addr >= getExtent())
|
|
return -1;
|
|
*Byte = Bytes[Addr];
|
|
return 0;
|
|
}
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|