87de9a0786
``` // llvm-objdump -d output (before) 400000: e8 0b 00 00 00 callq 11 400005: e8 0b 00 00 00 callq 11 // llvm-objdump -d output (after) 400000: e8 0b 00 00 00 callq 0x400010 400005: e8 0b 00 00 00 callq 0x400015 // GNU objdump -d. The lack of 0x is not ideal because the result cannot be re-assembled 400000: e8 0b 00 00 00 callq 400010 400005: e8 0b 00 00 00 callq 400015 ``` In llvm-objdump, we pass the address of the next MCInst. Ideally we should just thread the address of the current address, unfortunately we cannot call X86MCCodeEmitter::encodeInstruction (X86MCCodeEmitter requires MCInstrInfo and MCContext) to get the length of the MCInst. MCInstPrinter::printInst has other callers (e.g llvm-mc -filetype=asm, llvm-mca) which set Address to 0. They leave MCInstPrinter::PrintBranchImmAsAddress as false and this change is a no-op for them. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D76580
32 lines
683 B
ArmAsm
32 lines
683 B
ArmAsm
# RUN: llvm-mc -filetype=obj -triple=i386-unknown-unknown %s -o %t
|
|
# RUN: llvm-objdump -r -D --section .text.bar --triple=i386-unknown-unknown-code16 %t | FileCheck --check-prefix=CHECK16 %s
|
|
# RUN: llvm-objdump -r -D --section .text.baz --triple=i386-unknown-unknown %t | FileCheck --check-prefix=CHECK32 %s
|
|
.text
|
|
.section .text.foo,"",@progbits
|
|
|
|
.code16
|
|
.globl foo
|
|
foo:
|
|
nop
|
|
|
|
.section .text.bar,"",@progbits
|
|
.globl bar16
|
|
bar16:
|
|
jmp foo
|
|
|
|
.section .text.baz,"",@progbits
|
|
.code32
|
|
.globl baz32
|
|
baz32:
|
|
jmp foo
|
|
|
|
|
|
|
|
|
|
// CHECK16-LABEL: bar16
|
|
// CHECK16-NEXT: e9 fe ff jmp 0x1 <bar16+0x1>
|
|
// CHECK32-LABEL: baz32
|
|
// CHECK32-NEXT: e9 fc ff ff ff jmp 0x1 <baz32+0x1>
|
|
|
|
|