mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-24 13:18:17 +00:00
For llvm-objdump, hook up existing options to work when using -macho (the Mach-O parser).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226612 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -318,20 +318,16 @@ static void ProcessMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
||||
|
||||
if (Disassemble)
|
||||
DisassembleMachO(Filename, MachOOF);
|
||||
// TODO: These should/could be printed in Darwin's otool(1) or nm(1) style
|
||||
// for -macho. Or just used a new option that maps to the otool(1)
|
||||
// option like -r, -l, etc. Or just the normal llvm-objdump option
|
||||
// but now for this slice so that the -arch options can be used.
|
||||
// if (Relocations)
|
||||
// PrintRelocations(MachOOF);
|
||||
// if (SectionHeaders)
|
||||
// PrintSectionHeaders(MachOOF);
|
||||
// if (SectionContents)
|
||||
// PrintSectionContents(MachOOF);
|
||||
// if (SymbolTable)
|
||||
// PrintSymbolTable(MachOOF);
|
||||
// if (UnwindInfo)
|
||||
// PrintUnwindInfo(MachOOF);
|
||||
if (Relocations)
|
||||
PrintRelocations(MachOOF);
|
||||
if (SectionHeaders)
|
||||
PrintSectionHeaders(MachOOF);
|
||||
if (SectionContents)
|
||||
PrintSectionContents(MachOOF);
|
||||
if (SymbolTable)
|
||||
PrintSymbolTable(MachOOF);
|
||||
if (UnwindInfo)
|
||||
printMachOUnwindInfo(MachOOF);
|
||||
if (PrivateHeaders)
|
||||
printMachOFileHeader(MachOOF);
|
||||
if (ExportsTrie)
|
||||
|
||||
@@ -68,14 +68,14 @@ static cl::alias
|
||||
Disassembled("d", cl::desc("Alias for --disassemble"),
|
||||
cl::aliasopt(Disassemble));
|
||||
|
||||
static cl::opt<bool>
|
||||
Relocations("r", cl::desc("Display the relocation entries in the file"));
|
||||
cl::opt<bool>
|
||||
llvm::Relocations("r", cl::desc("Display the relocation entries in the file"));
|
||||
|
||||
static cl::opt<bool>
|
||||
SectionContents("s", cl::desc("Display the content of each section"));
|
||||
cl::opt<bool>
|
||||
llvm::SectionContents("s", cl::desc("Display the content of each section"));
|
||||
|
||||
static cl::opt<bool>
|
||||
SymbolTable("t", cl::desc("Display the symbol table"));
|
||||
cl::opt<bool>
|
||||
llvm::SymbolTable("t", cl::desc("Display the symbol table"));
|
||||
|
||||
cl::opt<bool>
|
||||
llvm::ExportsTrie("exports-trie", cl::desc("Display mach-o exported symbols"));
|
||||
@@ -111,9 +111,9 @@ cl::opt<std::string>
|
||||
llvm::ArchName("arch-name", cl::desc("Target arch to disassemble for, "
|
||||
"see -version for available targets"));
|
||||
|
||||
static cl::opt<bool>
|
||||
SectionHeaders("section-headers", cl::desc("Display summaries of the headers "
|
||||
"for each section."));
|
||||
cl::opt<bool>
|
||||
llvm::SectionHeaders("section-headers", cl::desc("Display summaries of the "
|
||||
"headers for each section."));
|
||||
static cl::alias
|
||||
SectionHeadersShort("headers", cl::desc("Alias for --section-headers"),
|
||||
cl::aliasopt(SectionHeaders));
|
||||
@@ -132,8 +132,8 @@ llvm::NoShowRawInsn("no-show-raw-insn", cl::desc("When disassembling "
|
||||
"instructions, do not print "
|
||||
"the instruction bytes."));
|
||||
|
||||
static cl::opt<bool>
|
||||
UnwindInfo("unwind-info", cl::desc("Display unwind information"));
|
||||
cl::opt<bool>
|
||||
llvm::UnwindInfo("unwind-info", cl::desc("Display unwind information"));
|
||||
|
||||
static cl::alias
|
||||
UnwindInfoShort("u", cl::desc("Alias for --unwind-info"),
|
||||
@@ -453,7 +453,7 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintRelocations(const ObjectFile *Obj) {
|
||||
void llvm::PrintRelocations(const ObjectFile *Obj) {
|
||||
StringRef Fmt = Obj->getBytesInAddress() > 4 ? "%016" PRIx64 :
|
||||
"%08" PRIx64;
|
||||
// Regular objdump doesn't print relocations in non-relocatable object
|
||||
@@ -490,7 +490,7 @@ static void PrintRelocations(const ObjectFile *Obj) {
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintSectionHeaders(const ObjectFile *Obj) {
|
||||
void llvm::PrintSectionHeaders(const ObjectFile *Obj) {
|
||||
outs() << "Sections:\n"
|
||||
"Idx Name Size Address Type\n";
|
||||
unsigned i = 0;
|
||||
@@ -511,7 +511,7 @@ static void PrintSectionHeaders(const ObjectFile *Obj) {
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintSectionContents(const ObjectFile *Obj) {
|
||||
void llvm::PrintSectionContents(const ObjectFile *Obj) {
|
||||
std::error_code EC;
|
||||
for (const SectionRef &Section : Obj->sections()) {
|
||||
StringRef Name;
|
||||
@@ -614,7 +614,7 @@ static void PrintCOFFSymbolTable(const COFFObjectFile *coff) {
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintSymbolTable(const ObjectFile *o) {
|
||||
void llvm::PrintSymbolTable(const ObjectFile *o) {
|
||||
outs() << "SYMBOL TABLE:\n";
|
||||
|
||||
if (const COFFObjectFile *coff = dyn_cast<const COFFObjectFile>(o)) {
|
||||
|
||||
@@ -36,6 +36,11 @@ extern cl::opt<bool> LazyBind;
|
||||
extern cl::opt<bool> WeakBind;
|
||||
extern cl::opt<bool> UniversalHeaders;
|
||||
extern cl::opt<bool> ArchiveHeaders;
|
||||
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;
|
||||
|
||||
// Various helper functions.
|
||||
bool error(std::error_code ec);
|
||||
@@ -57,6 +62,10 @@ 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 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user