mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-26 14:25:18 +00:00
281c1b093e
Previously we kept going on partly corrupted input, which might result in garbage being printed, or even worse, random crashes. Rafael mentioned that this is the GNU behavior as well, but after some discussion we both agreed it's probably better to emit a reasonable error message and exit. As a side-effect of this commit, now we don't rely on global state for error codes anymore. objdump was the last tool in the toolchain which needed to be converted. Hopefully the old behavior won't sneak into the tree again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244019 91177308-0d34-0410-b5e6-96231b3b80d8
85 lines
3.0 KiB
C++
85 lines
3.0 KiB
C++
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H
|
|
#define LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H
|
|
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/Support/CommandLine.h"
|
|
#include "llvm/Support/DataTypes.h"
|
|
|
|
namespace llvm {
|
|
namespace object {
|
|
class COFFObjectFile;
|
|
class MachOObjectFile;
|
|
class ObjectFile;
|
|
class RelocationRef;
|
|
}
|
|
|
|
extern cl::opt<std::string> TripleName;
|
|
extern cl::opt<std::string> ArchName;
|
|
extern cl::opt<std::string> MCPU;
|
|
extern cl::list<std::string> MAttrs;
|
|
extern cl::list<std::string> FilterSections;
|
|
extern cl::opt<bool> Disassemble;
|
|
extern cl::opt<bool> DisassembleAll;
|
|
extern cl::opt<bool> NoShowRawInsn;
|
|
extern cl::opt<bool> PrivateHeaders;
|
|
extern cl::opt<bool> ExportsTrie;
|
|
extern cl::opt<bool> Rebase;
|
|
extern cl::opt<bool> Bind;
|
|
extern cl::opt<bool> LazyBind;
|
|
extern cl::opt<bool> WeakBind;
|
|
extern cl::opt<bool> RawClangAST;
|
|
extern cl::opt<bool> UniversalHeaders;
|
|
extern cl::opt<bool> ArchiveHeaders;
|
|
extern cl::opt<bool> IndirectSymbols;
|
|
extern cl::opt<bool> DataInCode;
|
|
extern cl::opt<bool> LinkOptHints;
|
|
extern cl::opt<bool> InfoPlist;
|
|
extern cl::opt<bool> DylibsUsed;
|
|
extern cl::opt<bool> DylibId;
|
|
extern cl::opt<bool> ObjcMetaData;
|
|
extern cl::opt<std::string> DisSymName;
|
|
extern cl::opt<bool> NonVerbose;
|
|
extern cl::opt<bool> Relocations;
|
|
extern cl::opt<bool> SectionHeaders;
|
|
extern cl::opt<bool> SectionContents;
|
|
extern cl::opt<bool> SymbolTable;
|
|
extern cl::opt<bool> UnwindInfo;
|
|
extern cl::opt<bool> PrintImmHex;
|
|
|
|
// Various helper functions.
|
|
void error(std::error_code ec);
|
|
bool RelocAddressLess(object::RelocationRef a, object::RelocationRef b);
|
|
void ParseInputMachO(StringRef Filename);
|
|
void printCOFFUnwindInfo(const object::COFFObjectFile* o);
|
|
void printMachOUnwindInfo(const object::MachOObjectFile* o);
|
|
void printMachOExportsTrie(const object::MachOObjectFile* o);
|
|
void printMachORebaseTable(const object::MachOObjectFile* o);
|
|
void printMachOBindTable(const object::MachOObjectFile* o);
|
|
void printMachOLazyBindTable(const object::MachOObjectFile* o);
|
|
void printMachOWeakBindTable(const object::MachOObjectFile* o);
|
|
void printELFFileHeader(const object::ObjectFile *o);
|
|
void printCOFFFileHeader(const object::ObjectFile *o);
|
|
void printMachOFileHeader(const object::ObjectFile *o);
|
|
void printExportsTrie(const object::ObjectFile *o);
|
|
void printRebaseTable(const object::ObjectFile *o);
|
|
void printBindTable(const object::ObjectFile *o);
|
|
void printLazyBindTable(const object::ObjectFile *o);
|
|
void printWeakBindTable(const object::ObjectFile *o);
|
|
void printRawClangAST(const object::ObjectFile *o);
|
|
void PrintRelocations(const object::ObjectFile *o);
|
|
void PrintSectionHeaders(const object::ObjectFile *o);
|
|
void PrintSectionContents(const object::ObjectFile *o);
|
|
void PrintSymbolTable(const object::ObjectFile *o);
|
|
|
|
} // end namespace llvm
|
|
|
|
#endif
|