[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