From: Fangrui Song Date: Thu, 11 Jun 2020 16:05:59 +0000 (-0700) Subject: [llvm-objdump] Decrease instruction indentation for non-x86 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5ee571735ddf1f81db3df5d7328c86432209e3b4;p=platform%2Fupstream%2Fllvm.git [llvm-objdump] Decrease instruction indentation for non-x86 Place the instruction at the 24th column (0-based indexing), matching GNU objdump ARM/AArch64/powerpc/etc when the address is low. This is beneficial for non-x86 targets which have short instruction lengths. ``` // GNU objdump AArch64 0: 91001062 add x2, x3, #0x4 400078: 91001062 add x2, x3, #0x4 // llvm-objdump, with this patch 0: 62 10 00 91 add x2, x3, #4 400078: 62 10 00 91 add x2, x3, #4 // llvm-objdump, if we change to print a word instead of bytes in the future 0: 91001062 add x2, x3, #4 400078: 91001062 add x2, x3, #4 // GNU objdump Thumb 0: bf00 nop // GNU objdump Power ISA 3.1 64-bit instruction // 0: 00 00 10 04 plwa r3,0 // 4: 00 00 60 a4 ``` Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D81590 --- diff --git a/llvm/test/tools/llvm-objdump/ELF/AArch64/disassemble-align.s b/llvm/test/tools/llvm-objdump/ELF/AArch64/disassemble-align.s new file mode 100644 index 0000000..8ad2042 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/ELF/AArch64/disassemble-align.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t +# RUN: llvm-objdump -d %t | tr '\t' '|' | FileCheck --match-full-lines --strict-whitespace %s + +## Use '|' to show where the tabs line up. +# CHECK:0000000000000000 <$x.0>: +# CHECK-NEXT: 0: 62 10 00 91 |add|x2, x3, #4 +# CHECK-EMPTY: +# CHECK-NEXT:0000000000000004 <$d.1>: +# CHECK-NEXT: 4:|ff ff 00 00|.word|0x0000ffff + + add x2, x3, #4 + .word 0xffff diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 70ab0a1..fbc0f01 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -741,9 +741,11 @@ public: dumpBytes(Bytes, OS); } - // The output of printInst starts with a tab. Print some spaces so that - // the tab has 1 column and advances to the target tab stop. - unsigned TabStop = NoShowRawInsn ? 16 : 40; + // The output of printInst starts with a tab. Print some spaces so that the + // tab has 1 column and advances to the target tab stop. Give more columns + // to x86 which may encode an instruction with many bytes. + unsigned TabStop = + NoShowRawInsn ? 16 : STI.getTargetTriple().isX86() ? 40 : 24; unsigned Column = OS.tell() - Start; OS.indent(Column < TabStop - 1 ? TabStop - 1 - Column : 7 - Column % 8);