[llvm] r293662 - Fix a bug in llvm-obdump(1) with the -macho flag disassembling an object

Kevin Enderby via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 31 10:09:11 PST 2017


Author: enderby
Date: Tue Jan 31 12:09:10 2017
New Revision: 293662

URL: http://llvm.org/viewvc/llvm-project?rev=293662&view=rev
Log:
Fix a bug in llvm-obdump(1) with the -macho flag disassembling an object
without symbols that makes calls through a symbol stub which were not
correctly being annotated with “## symbol stub for: _foo”.

Just adds the same parameters for getting the annotations from
DisAsm->getInstruction() and passing them to IP->printInst() from the
code above when boolean variable symbolTableWorked was true.

rdar://29791952

Added:
    llvm/trunk/test/tools/llvm-objdump/X86/Inputs/stub-nosyms.macho-x86_64   (with props)
    llvm/trunk/test/tools/llvm-objdump/X86/macho-stub-nosyms-disassembly.test
Modified:
    llvm/trunk/tools/llvm-objdump/MachODump.cpp

Added: llvm/trunk/test/tools/llvm-objdump/X86/Inputs/stub-nosyms.macho-x86_64
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/X86/Inputs/stub-nosyms.macho-x86_64?rev=293662&view=auto
==============================================================================
Binary file - no diff available.

Propchange: llvm/trunk/test/tools/llvm-objdump/X86/Inputs/stub-nosyms.macho-x86_64
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: llvm/trunk/test/tools/llvm-objdump/X86/macho-stub-nosyms-disassembly.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/X86/macho-stub-nosyms-disassembly.test?rev=293662&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/X86/macho-stub-nosyms-disassembly.test (added)
+++ llvm/trunk/test/tools/llvm-objdump/X86/macho-stub-nosyms-disassembly.test Tue Jan 31 12:09:10 2017
@@ -0,0 +1,3 @@
+// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/stub-nosyms.macho-x86_64 | FileCheck %s
+
+CHECK: 0000000000000001	callq	0x7 ## symbol stub for: _foo

Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=293662&r1=293661&r2=293662&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Tue Jan 31 12:09:10 2017
@@ -6798,8 +6798,10 @@ static void DisassembleMachO(StringRef F
         MCInst Inst;
 
         uint64_t PC = SectAddress + Index;
+        SmallVector<char, 64> AnnotationsBytes;
+        raw_svector_ostream Annotations(AnnotationsBytes);
         if (DisAsm->getInstruction(Inst, InstSize, Bytes.slice(Index), PC,
-                                   DebugOut, nulls())) {
+                                   DebugOut, Annotations)) {
           if (!NoLeadingAddr) {
             if (FullLeadingAddr) {
               if (MachOOF->is64Bit())
@@ -6814,7 +6816,8 @@ static void DisassembleMachO(StringRef F
             outs() << "\t";
             dumpBytes(makeArrayRef(Bytes.data() + Index, InstSize), outs());
           }
-          IP->printInst(&Inst, outs(), "", *STI);
+          StringRef AnnotationsStr = Annotations.str();
+          IP->printInst(&Inst, outs(), AnnotationsStr, *STI);
           outs() << "\n";
         } else {
           unsigned int Arch = MachOOF->getArch();




More information about the llvm-commits mailing list