[llvm] 5ee5717 - [llvm-objdump] Decrease instruction indentation for non-x86
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 11 09:11:01 PDT 2020
Author: Fangrui Song
Date: 2020-06-11T09:10:50-07:00
New Revision: 5ee571735ddf1f81db3df5d7328c86432209e3b4
URL: https://github.com/llvm/llvm-project/commit/5ee571735ddf1f81db3df5d7328c86432209e3b4
DIFF: https://github.com/llvm/llvm-project/commit/5ee571735ddf1f81db3df5d7328c86432209e3b4.diff
LOG: [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
Added:
llvm/test/tools/llvm-objdump/ELF/AArch64/disassemble-align.s
Modified:
llvm/tools/llvm-objdump/llvm-objdump.cpp
Removed:
################################################################################
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 000000000000..8ad204200e54
--- /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 70ab0a1643ee..fbc0f01d3b18 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -741,9 +741,11 @@ class PrettyPrinter {
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);
More information about the llvm-commits
mailing list