[llvm] r232547 - Add the option, -no-leading-addr llvm-objdump used with -macho and
Kevin Enderby
enderby at apple.com
Tue Mar 17 14:07:39 PDT 2015
Author: enderby
Date: Tue Mar 17 16:07:39 2015
New Revision: 232547
URL: http://llvm.org/viewvc/llvm-project?rev=232547&view=rev
Log:
Add the option, -no-leading-addr llvm-objdump used with -macho and
-disassemble or -section to not print the leading addresses on each line.
Added:
llvm/trunk/test/tools/llvm-objdump/X86/macho-dis-no-leading-addr.test
Modified:
llvm/trunk/test/tools/llvm-objdump/X86/macho-cstring-dump.test
llvm/trunk/tools/llvm-objdump/MachODump.cpp
Modified: llvm/trunk/test/tools/llvm-objdump/X86/macho-cstring-dump.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/X86/macho-cstring-dump.test?rev=232547&r1=232546&r2=232547&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/X86/macho-cstring-dump.test (original)
+++ llvm/trunk/test/tools/llvm-objdump/X86/macho-cstring-dump.test Tue Mar 17 16:07:39 2015
@@ -1,8 +1,13 @@
RUN: llvm-objdump -m -section __TEXT,__cstring %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s
+RUN: llvm-objdump -m -section __TEXT,__cstring -no-leading-addr %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s -check-prefix=NO_ADDR
RUN: llvm-objdump -m -section __TEXT,__cstring -non-verbose %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s -check-prefix=NON_VERBOSE
CHECK: Contents of (__TEXT,__cstring) section
CHECK: 000000000000003b Hello world\n
+NO_ADDR: Contents of (__TEXT,__cstring) section
+NO_ADDR: Hello world\n
+NO_ADDR-NOT: 000000000000003b
+
NON_VERBOSE: Contents of (__TEXT,__cstring) section
NON_VERBOSE: 000000000000003b 48 65 6c 6c 6f 20 77 6f 72 6c 64 0a 00
Added: llvm/trunk/test/tools/llvm-objdump/X86/macho-dis-no-leading-addr.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/X86/macho-dis-no-leading-addr.test?rev=232547&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/X86/macho-dis-no-leading-addr.test (added)
+++ llvm/trunk/test/tools/llvm-objdump/X86/macho-dis-no-leading-addr.test Tue Mar 17 16:07:39 2015
@@ -0,0 +1,24 @@
+# RUN: llvm-objdump -m -d %p/Inputs/hello.obj.macho-x86_64 -no-show-raw-insn -print-imm-hex -no-leading-addr | FileCheck %s
+
+# CHECK: (__TEXT,__text) section
+# CHECK: _main:
+# CHECK: pushq %rbp
+# CHECK: movq %rsp, %rbp
+# CHECK: subq $0x20, %rsp
+# CHECK: leaq L_.str(%rip), %rax ## literal pool for: "Hello world\n"
+# CHECK: movl $_main, -0x4(%rbp)
+# CHECK: movl %edi, -0x8(%rbp)
+# CHECK: movq %rsi, -0x10(%rbp)
+# CHECK: movq %rdx, -0x18(%rbp)
+# CHECK: movq %rax, %rdi
+# CHECK: movb $0x0, %al
+# CHECK: callq _printf
+# CHECK: movl $_main, %ecx
+# CHECK: movl %eax, -0x1c(%rbp)
+# CHECK: movl %ecx, %eax
+# CHECK: addq $0x20, %rsp
+# CHECK: popq %rbp
+# CHECK: retq
+
+# CHECK-NOT: 0:
+# CHECK-NOT: 0000000000000000
Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=232547&r1=232546&r2=232547&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Tue Mar 17 16:07:39 2015
@@ -63,6 +63,10 @@ static cl::opt<std::string> DSYMFile("ds
static cl::opt<bool> FullLeadingAddr("full-leading-addr",
cl::desc("Print full leading address"));
+static cl::opt<bool> NoLeadingAddr("no-leading-addr",
+ cl::desc("Print no leading address"));
+
+
static cl::opt<bool>
PrintImmHex("print-imm-hex",
cl::desc("Use hex format for immediate values"));
@@ -1072,20 +1076,20 @@ static void DumpSectionContents(StringRe
outs() << "zerofill section and has no contents in the file\n";
break;
case MachO::S_CSTRING_LITERALS:
- DumpCstringSection(O, sect, sect_size, sect_addr, verbose);
+ DumpCstringSection(O, sect, sect_size, sect_addr, !NoLeadingAddr);
break;
case MachO::S_4BYTE_LITERALS:
- DumpLiteral4Section(O, sect, sect_size, sect_addr, verbose);
+ DumpLiteral4Section(O, sect, sect_size, sect_addr, !NoLeadingAddr);
break;
case MachO::S_8BYTE_LITERALS:
- DumpLiteral8Section(O, sect, sect_size, sect_addr, verbose);
+ DumpLiteral8Section(O, sect, sect_size, sect_addr, !NoLeadingAddr);
break;
case MachO::S_16BYTE_LITERALS:
- DumpLiteral16Section(O, sect, sect_size, sect_addr, verbose);
- break;
+ DumpLiteral16Section(O, sect, sect_size, sect_addr, !NoLeadingAddr);
+ break;
case MachO::S_LITERAL_POINTERS:
DumpLiteralPointerSection(O, Section, sect, sect_size, sect_addr,
- verbose);
+ !NoLeadingAddr);
break;
case MachO::S_MOD_INIT_FUNC_POINTERS:
case MachO::S_MOD_TERM_FUNC_POINTERS:
@@ -3290,13 +3294,15 @@ static void DisassembleMachO(StringRef F
MCInst Inst;
uint64_t PC = SectAddress + Index;
- if (FullLeadingAddr) {
- if (MachOOF->is64Bit())
- outs() << format("%016" PRIx64, PC);
- else
- outs() << format("%08" PRIx64, PC);
- } else {
- outs() << format("%8" PRIx64 ":", PC);
+ if (!NoLeadingAddr) {
+ if (FullLeadingAddr) {
+ if (MachOOF->is64Bit())
+ outs() << format("%016" PRIx64, PC);
+ else
+ outs() << format("%08" PRIx64, PC);
+ } else {
+ outs() << format("%8" PRIx64 ":", PC);
+ }
}
if (!NoShowRawInsn)
outs() << "\t";
@@ -3388,13 +3394,15 @@ static void DisassembleMachO(StringRef F
uint64_t PC = SectAddress + Index;
if (DisAsm->getInstruction(Inst, InstSize, Bytes.slice(Index), PC,
DebugOut, nulls())) {
- if (FullLeadingAddr) {
- if (MachOOF->is64Bit())
- outs() << format("%016" PRIx64, PC);
- else
- outs() << format("%08" PRIx64, PC);
- } else {
- outs() << format("%8" PRIx64 ":", PC);
+ if (!NoLeadingAddr) {
+ if (FullLeadingAddr) {
+ if (MachOOF->is64Bit())
+ outs() << format("%016" PRIx64, PC);
+ else
+ outs() << format("%08" PRIx64, PC);
+ } else {
+ outs() << format("%8" PRIx64 ":", PC);
+ }
}
if (!NoShowRawInsn) {
outs() << "\t";
More information about the llvm-commits
mailing list