mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-19 04:26:05 +00:00
[llvm-objdump] Add -D and --disassemble-all flags that attempt disassembly on all sections instead of just text sections.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243041 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
6
test/tools/llvm-objdump/disassemble-data.test
Normal file
6
test/tools/llvm-objdump/disassemble-data.test
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
// This test checks that -D disassembles from a data section
|
||||||
|
// RUN: llvm-mc -filetype=obj -o - %s | llvm-objdump -D - | FileCheck %s
|
||||||
|
|
||||||
|
// CHECK: Disassembly of section .data:
|
||||||
|
.data
|
||||||
|
.word 0x0
|
@@ -70,7 +70,14 @@ llvm::Disassemble("disassemble",
|
|||||||
cl::desc("Display assembler mnemonics for the machine instructions"));
|
cl::desc("Display assembler mnemonics for the machine instructions"));
|
||||||
static cl::alias
|
static cl::alias
|
||||||
Disassembled("d", cl::desc("Alias for --disassemble"),
|
Disassembled("d", cl::desc("Alias for --disassemble"),
|
||||||
cl::aliasopt(Disassemble));
|
cl::aliasopt(Disassemble));
|
||||||
|
|
||||||
|
cl::opt<bool>
|
||||||
|
llvm::DisassembleAll("disassemble-all",
|
||||||
|
cl::desc("Display assembler mnemonics for the machine instructions"));
|
||||||
|
static cl::alias
|
||||||
|
DisassembleAlld("D", cl::desc("Alias for --disassemble-all"),
|
||||||
|
cl::aliasopt(DisassembleAll));
|
||||||
|
|
||||||
cl::opt<bool>
|
cl::opt<bool>
|
||||||
llvm::Relocations("r", cl::desc("Display the relocation entries in the file"));
|
llvm::Relocations("r", cl::desc("Display the relocation entries in the file"));
|
||||||
@@ -837,7 +844,7 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (const SectionRef &Section : Obj->sections()) {
|
for (const SectionRef &Section : Obj->sections()) {
|
||||||
if (!Section.isText() || Section.isVirtual())
|
if (!DisassembleAll && (!Section.isText() || Section.isVirtual()))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
uint64_t SectionAddr = Section.getAddress();
|
uint64_t SectionAddr = Section.getAddress();
|
||||||
@@ -1514,6 +1521,8 @@ int main(int argc, char **argv) {
|
|||||||
if (InputFilenames.size() == 0)
|
if (InputFilenames.size() == 0)
|
||||||
InputFilenames.push_back("a.out");
|
InputFilenames.push_back("a.out");
|
||||||
|
|
||||||
|
if (DisassembleAll)
|
||||||
|
Disassemble = true;
|
||||||
if (!Disassemble
|
if (!Disassemble
|
||||||
&& !Relocations
|
&& !Relocations
|
||||||
&& !SectionHeaders
|
&& !SectionHeaders
|
||||||
|
@@ -26,7 +26,8 @@ extern cl::opt<std::string> ArchName;
|
|||||||
extern cl::opt<std::string> MCPU;
|
extern cl::opt<std::string> MCPU;
|
||||||
extern cl::list<std::string> MAttrs;
|
extern cl::list<std::string> MAttrs;
|
||||||
extern cl::list<std::string> DumpSections;
|
extern cl::list<std::string> DumpSections;
|
||||||
extern cl::opt<bool> Disassemble;
|
extern cl::opt<bool> Disassemble;
|
||||||
|
extern cl::opt<bool> DisassembleAll;
|
||||||
extern cl::opt<bool> NoShowRawInsn;
|
extern cl::opt<bool> NoShowRawInsn;
|
||||||
extern cl::opt<bool> PrivateHeaders;
|
extern cl::opt<bool> PrivateHeaders;
|
||||||
extern cl::opt<bool> ExportsTrie;
|
extern cl::opt<bool> ExportsTrie;
|
||||||
|
Reference in New Issue
Block a user