mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +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:
parent
e4f11175cb
commit
c97fb73e2f
7
test/tools/llvm-objdump/X86/macho-relocations.test
Normal file
7
test/tools/llvm-objdump/X86/macho-relocations.test
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
RUN: llvm-objdump -macho -r %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s
|
||||||
|
|
||||||
|
CHECK: RELOCATION RECORDS FOR [__text]:
|
||||||
|
CHECK: 0000000000000027 X86_64_RELOC_BRANCH _printf
|
||||||
|
CHECK: 000000000000000b X86_64_RELOC_SIGNED L_.str
|
||||||
|
CHECK: RELOCATION RECORDS FOR [__compact_unwind]:
|
||||||
|
CHECK: 0000000000000000 X86_64_RELOC_UNSIGNED __text
|
17
test/tools/llvm-objdump/X86/macho-section-contents.test
Normal file
17
test/tools/llvm-objdump/X86/macho-section-contents.test
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
RUN: llvm-objdump -macho -s %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s
|
||||||
|
|
||||||
|
CHECK: Contents of section __text:
|
||||||
|
CHECK: 0000 554889e5 4883ec20 488d0500 000000c7 UH..H.. H.......
|
||||||
|
CHECK: 0010 45fc0000 0000897d f8488975 f0488955 E......}.H.u.H.U
|
||||||
|
CHECK: 0020 e84889c7 b000e800 000000b9 00000000 .H..............
|
||||||
|
CHECK: 0030 8945e489 c84883c4 205dc3 .E...H.. ].
|
||||||
|
CHECK: Contents of section __cstring:
|
||||||
|
CHECK: 003b 48656c6c 6f20776f 726c640a 00 Hello world..
|
||||||
|
CHECK: Contents of section __compact_unwind:
|
||||||
|
CHECK: 0048 00000000 00000000 3b000000 00000001 ........;.......
|
||||||
|
CHECK: 0058 00000000 00000000 00000000 00000000 ................
|
||||||
|
CHECK: Contents of section __eh_frame:
|
||||||
|
CHECK: 0068 14000000 00000000 017a5200 01781001 .........zR..x..
|
||||||
|
CHECK: 0078 100c0708 90010000 24000000 1c000000 ........$.......
|
||||||
|
CHECK: 0088 78ffffff ffffffff 3b000000 00000000 x.......;.......
|
||||||
|
CHECK: 0098 00410e10 8602430d 06000000 00000000 .A....C.........
|
8
test/tools/llvm-objdump/X86/macho-section-headers.test
Normal file
8
test/tools/llvm-objdump/X86/macho-section-headers.test
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
RUN: llvm-objdump -macho -h %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s
|
||||||
|
|
||||||
|
CHECK: Sections:
|
||||||
|
CHECK: Idx Name Size Address Type
|
||||||
|
CHECK: 0 __text 0000003b 0000000000000000 TEXT
|
||||||
|
CHECK: 1 __cstring 0000000d 000000000000003b DATA
|
||||||
|
CHECK: 2 __compact_unwind 00000020 0000000000000048 DATA
|
||||||
|
CHECK: 3 __eh_frame 00000040 0000000000000068 DATA
|
8
test/tools/llvm-objdump/X86/macho-symbol-table.test
Normal file
8
test/tools/llvm-objdump/X86/macho-symbol-table.test
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
RUN: llvm-objdump -macho -t %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s
|
||||||
|
|
||||||
|
CHECK: SYMBOL TABLE:
|
||||||
|
CHECK: 000000000000003b l F __TEXT,__cstring 0000000d L_.str
|
||||||
|
CHECK: 0000000000000068 l F __TEXT,__eh_frame 00000018 EH_frame0
|
||||||
|
CHECK: 0000000000000000 g F __TEXT,__text 0000003b _main
|
||||||
|
CHECK: 0000000000000080 g F __TEXT,__eh_frame 00000028 _main.eh
|
||||||
|
CHECK: 0000000000000000 *UND* 00000000 _printf
|
7
test/tools/llvm-objdump/X86/macho-unwind-info.test
Normal file
7
test/tools/llvm-objdump/X86/macho-unwind-info.test
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
RUN: llvm-objdump -macho -u %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s
|
||||||
|
|
||||||
|
CHECK: Contents of __compact_unwind section:
|
||||||
|
CHECK: Entry at offset 0x0:
|
||||||
|
CHECK: start: 0x0 _main
|
||||||
|
CHECK: length: 0x3b
|
||||||
|
CHECK: compact encoding: 0x01000000
|
@ -318,20 +318,16 @@ static void ProcessMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
|||||||
|
|
||||||
if (Disassemble)
|
if (Disassemble)
|
||||||
DisassembleMachO(Filename, MachOOF);
|
DisassembleMachO(Filename, MachOOF);
|
||||||
// TODO: These should/could be printed in Darwin's otool(1) or nm(1) style
|
if (Relocations)
|
||||||
// for -macho. Or just used a new option that maps to the otool(1)
|
PrintRelocations(MachOOF);
|
||||||
// option like -r, -l, etc. Or just the normal llvm-objdump option
|
if (SectionHeaders)
|
||||||
// but now for this slice so that the -arch options can be used.
|
PrintSectionHeaders(MachOOF);
|
||||||
// if (Relocations)
|
if (SectionContents)
|
||||||
// PrintRelocations(MachOOF);
|
PrintSectionContents(MachOOF);
|
||||||
// if (SectionHeaders)
|
if (SymbolTable)
|
||||||
// PrintSectionHeaders(MachOOF);
|
PrintSymbolTable(MachOOF);
|
||||||
// if (SectionContents)
|
if (UnwindInfo)
|
||||||
// PrintSectionContents(MachOOF);
|
printMachOUnwindInfo(MachOOF);
|
||||||
// if (SymbolTable)
|
|
||||||
// PrintSymbolTable(MachOOF);
|
|
||||||
// if (UnwindInfo)
|
|
||||||
// PrintUnwindInfo(MachOOF);
|
|
||||||
if (PrivateHeaders)
|
if (PrivateHeaders)
|
||||||
printMachOFileHeader(MachOOF);
|
printMachOFileHeader(MachOOF);
|
||||||
if (ExportsTrie)
|
if (ExportsTrie)
|
||||||
|
@ -68,14 +68,14 @@ static cl::alias
|
|||||||
Disassembled("d", cl::desc("Alias for --disassemble"),
|
Disassembled("d", cl::desc("Alias for --disassemble"),
|
||||||
cl::aliasopt(Disassemble));
|
cl::aliasopt(Disassemble));
|
||||||
|
|
||||||
static cl::opt<bool>
|
cl::opt<bool>
|
||||||
Relocations("r", cl::desc("Display the relocation entries in the file"));
|
llvm::Relocations("r", cl::desc("Display the relocation entries in the file"));
|
||||||
|
|
||||||
static cl::opt<bool>
|
cl::opt<bool>
|
||||||
SectionContents("s", cl::desc("Display the content of each section"));
|
llvm::SectionContents("s", cl::desc("Display the content of each section"));
|
||||||
|
|
||||||
static cl::opt<bool>
|
cl::opt<bool>
|
||||||
SymbolTable("t", cl::desc("Display the symbol table"));
|
llvm::SymbolTable("t", cl::desc("Display the symbol table"));
|
||||||
|
|
||||||
cl::opt<bool>
|
cl::opt<bool>
|
||||||
llvm::ExportsTrie("exports-trie", cl::desc("Display mach-o exported symbols"));
|
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, "
|
llvm::ArchName("arch-name", cl::desc("Target arch to disassemble for, "
|
||||||
"see -version for available targets"));
|
"see -version for available targets"));
|
||||||
|
|
||||||
static cl::opt<bool>
|
cl::opt<bool>
|
||||||
SectionHeaders("section-headers", cl::desc("Display summaries of the headers "
|
llvm::SectionHeaders("section-headers", cl::desc("Display summaries of the "
|
||||||
"for each section."));
|
"headers for each section."));
|
||||||
static cl::alias
|
static cl::alias
|
||||||
SectionHeadersShort("headers", cl::desc("Alias for --section-headers"),
|
SectionHeadersShort("headers", cl::desc("Alias for --section-headers"),
|
||||||
cl::aliasopt(SectionHeaders));
|
cl::aliasopt(SectionHeaders));
|
||||||
@ -132,8 +132,8 @@ llvm::NoShowRawInsn("no-show-raw-insn", cl::desc("When disassembling "
|
|||||||
"instructions, do not print "
|
"instructions, do not print "
|
||||||
"the instruction bytes."));
|
"the instruction bytes."));
|
||||||
|
|
||||||
static cl::opt<bool>
|
cl::opt<bool>
|
||||||
UnwindInfo("unwind-info", cl::desc("Display unwind information"));
|
llvm::UnwindInfo("unwind-info", cl::desc("Display unwind information"));
|
||||||
|
|
||||||
static cl::alias
|
static cl::alias
|
||||||
UnwindInfoShort("u", cl::desc("Alias for --unwind-info"),
|
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 :
|
StringRef Fmt = Obj->getBytesInAddress() > 4 ? "%016" PRIx64 :
|
||||||
"%08" PRIx64;
|
"%08" PRIx64;
|
||||||
// Regular objdump doesn't print relocations in non-relocatable object
|
// 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"
|
outs() << "Sections:\n"
|
||||||
"Idx Name Size Address Type\n";
|
"Idx Name Size Address Type\n";
|
||||||
unsigned i = 0;
|
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;
|
std::error_code EC;
|
||||||
for (const SectionRef &Section : Obj->sections()) {
|
for (const SectionRef &Section : Obj->sections()) {
|
||||||
StringRef Name;
|
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";
|
outs() << "SYMBOL TABLE:\n";
|
||||||
|
|
||||||
if (const COFFObjectFile *coff = dyn_cast<const COFFObjectFile>(o)) {
|
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> WeakBind;
|
||||||
extern cl::opt<bool> UniversalHeaders;
|
extern cl::opt<bool> UniversalHeaders;
|
||||||
extern cl::opt<bool> ArchiveHeaders;
|
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.
|
// Various helper functions.
|
||||||
bool error(std::error_code ec);
|
bool error(std::error_code ec);
|
||||||
@ -57,6 +62,10 @@ void printRebaseTable(const object::ObjectFile *o);
|
|||||||
void printBindTable(const object::ObjectFile *o);
|
void printBindTable(const object::ObjectFile *o);
|
||||||
void printLazyBindTable(const object::ObjectFile *o);
|
void printLazyBindTable(const object::ObjectFile *o);
|
||||||
void printWeakBindTable(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
|
} // end namespace llvm
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user