[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