forked from OSchip/llvm-project
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 llvm-svn: 293662
This commit is contained in:
parent
aec4617dc8
commit
02d3a37857
Binary file not shown.
|
@ -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
|
|
@ -6798,8 +6798,10 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
|||
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 Filename, MachOObjectFile *MachOOF,
|
|||
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();
|
||||
|
|
Loading…
Reference in New Issue