[llvm] e79c2bd - [llvm-objdump] Print symbolized labels with increasing index (#139415)
via llvm-commits
llvm-commits at lists.llvm.org
Sat May 10 17:37:11 PDT 2025
Author: Sergei Barannikov
Date: 2025-05-11T03:37:08+03:00
New Revision: e79c2bd7331ab742f1f535a333870c57798b2c7b
URL: https://github.com/llvm/llvm-project/commit/e79c2bd7331ab742f1f535a333870c57798b2c7b
DIFF: https://github.com/llvm/llvm-project/commit/e79c2bd7331ab742f1f535a333870c57798b2c7b.diff
LOG: [llvm-objdump] Print symbolized labels with increasing index (#139415)
To make it easier to navigate the disassembly listing.
Added:
Modified:
llvm/test/tools/llvm-objdump/BPF/disassemble-symbolize-operands.s
llvm/test/tools/llvm-objdump/ELF/PowerPC/disassemble-symbolize-operands.ll
llvm/test/tools/llvm-objdump/X86/elf-disassemble-symbololize-operands.yaml
llvm/test/tools/llvm-objdump/XCOFF/disassemble-symbolize-operands.ll
llvm/tools/llvm-objdump/llvm-objdump.cpp
Removed:
################################################################################
diff --git a/llvm/test/tools/llvm-objdump/BPF/disassemble-symbolize-operands.s b/llvm/test/tools/llvm-objdump/BPF/disassemble-symbolize-operands.s
index a52ed56d680e3..38c10de67c447 100644
--- a/llvm/test/tools/llvm-objdump/BPF/disassemble-symbolize-operands.s
+++ b/llvm/test/tools/llvm-objdump/BPF/disassemble-symbolize-operands.s
@@ -15,10 +15,10 @@ main:
exit
# CHECK: <main>:
-# CHECK-NEXT: <L1>:
-# CHECK-NEXT: if r1 > 0x2a goto +0x2 <L0>
+# CHECK-NEXT: <L0>:
+# CHECK-NEXT: if r1 > 0x2a goto +0x2 <L1>
# CHECK-NEXT: r1 -= 0xa
# CHECK-NEXT: goto -0x3 <main>
-# CHECK-NEXT: <L0>:
+# CHECK-NEXT: <L1>:
# CHECK-NEXT: r0 = 0x0
# CHECK-NEXT: exit
diff --git a/llvm/test/tools/llvm-objdump/ELF/PowerPC/disassemble-symbolize-operands.ll b/llvm/test/tools/llvm-objdump/ELF/PowerPC/disassemble-symbolize-operands.ll
index 4d75a874d616d..61c7f74e513bf 100644
--- a/llvm/test/tools/llvm-objdump/ELF/PowerPC/disassemble-symbolize-operands.ll
+++ b/llvm/test/tools/llvm-objdump/ELF/PowerPC/disassemble-symbolize-operands.ll
@@ -10,19 +10,19 @@
; CHECK-NEXT: 28: blr
; CHECK-LABEL: <foo>:
-; CHECK: 6c: b 0x74 <L0>
-; CHECK-NEXT: <L2>:
-; CHECK-NEXT: 70: bf 8, 0x94 <L1>
+; CHECK: 6c: b 0x74 <L1>
; CHECK-NEXT: <L0>:
+; CHECK-NEXT: 70: bf 8, 0x94 <L2>
+; CHECK-NEXT: <L1>:
; CHECK-NEXT: 74: clrldi 3, 30, 32
; CHECK-NEXT: 78: bl 0x0 <internal>
; CHECK-NEXT: 7c: mr 30, 3
; CHECK-NEXT: 80: cmplwi 30, 11
-; CHECK-NEXT: 84: bt 0, 0x70 <L2>
+; CHECK-NEXT: 84: bt 0, 0x70 <L0>
; CHECK-NEXT: 88: bl 0x88 <foo+0x48>
; CHECK-NEXT: 8c: nop
-; CHECK-NEXT: 90: b 0x70 <L2>
-; CHECK-NEXT: <L1>:
+; CHECK-NEXT: 90: b 0x70 <L0>
+; CHECK-NEXT: <L2>:
; CHECK-NEXT: 94: ld 30, 32(1)
define internal i32 @internal(i32 %a) {
diff --git a/llvm/test/tools/llvm-objdump/X86/elf-disassemble-symbololize-operands.yaml b/llvm/test/tools/llvm-objdump/X86/elf-disassemble-symbololize-operands.yaml
index 959b6d8681f8b..c3dcc2dfd2e1e 100644
--- a/llvm/test/tools/llvm-objdump/X86/elf-disassemble-symbololize-operands.yaml
+++ b/llvm/test/tools/llvm-objdump/X86/elf-disassemble-symbololize-operands.yaml
@@ -7,20 +7,20 @@
## Expect to find the branch labels and global variable name.
# ATT: <_start>:
# ATT-NEXT: pushq %rax
-# ATT-NEXT: <L1>:
-# ATT-NEXT: cmpl , %eax <symbol>
-# ATT-NEXT: jge <L0>
-# ATT-NEXT: jmp <L1>
# ATT-NEXT: <L0>:
+# ATT-NEXT: cmpl , %eax <symbol>
+# ATT-NEXT: jge <L1>
+# ATT-NEXT: jmp <L0>
+# ATT-NEXT: <L1>:
# ATT-NEXT: retq
# INTEL: <_start>:
# INTEL-NEXT: push rax
-# INTEL-NEXT: <L1>:
-# INTEL-NEXT: cmp eax, dword ptr <symbol>
-# INTEL-NEXT: jge <L0>
-# INTEL-NEXT: jmp <L1>
# INTEL-NEXT: <L0>:
+# INTEL-NEXT: cmp eax, dword ptr <symbol>
+# INTEL-NEXT: jge <L1>
+# INTEL-NEXT: jmp <L0>
+# INTEL-NEXT: <L1>:
# INTEL-NEXT: ret
--- !ELF
diff --git a/llvm/test/tools/llvm-objdump/XCOFF/disassemble-symbolize-operands.ll b/llvm/test/tools/llvm-objdump/XCOFF/disassemble-symbolize-operands.ll
index 2cad8fa4b6df8..7a14f62e47297 100644
--- a/llvm/test/tools/llvm-objdump/XCOFF/disassemble-symbolize-operands.ll
+++ b/llvm/test/tools/llvm-objdump/XCOFF/disassemble-symbolize-operands.ll
@@ -13,19 +13,19 @@
; CHECK-NEXT: 14: blr
; CHECK-LABEL: <.foo>:
-; CHECK: 5c: b 0x64 <L0>
-; CHECK-NEXT: <L2>:
-; CHECK-NEXT: 60: bf 8, 0x84 <L1>
+; CHECK: 5c: b 0x64 <L1>
; CHECK-NEXT: <L0>:
+; CHECK-NEXT: 60: bf 8, 0x84 <L2>
+; CHECK-NEXT: <L1>:
; CHECK-NEXT: 64: bl 0x0 <.internal>
; CHECK-NEXT: 68: cmplwi 3, 11
-; CHECK-NEXT: 6c: bt 0, 0x60 <L2>
+; CHECK-NEXT: 6c: bt 0, 0x60 <L0>
; CHECK-NEXT: 70: mr 31, 3
; CHECK-NEXT: 74: bl 0x0 <.extern>
; CHECK-NEXT: 78: nop
; CHECK-NEXT: 7c: mr 3, 31
-; CHECK-NEXT: 80: b 0x60 <L2>
-; CHECK-NEXT: <L1>:
+; CHECK-NEXT: 80: b 0x60 <L0>
+; CHECK-NEXT: <L2>:
; CHECK-NEXT: 84: lwz 31, 60(1)
define internal i32 @internal(i32 %a) {
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 15845478be70e..2f839199712eb 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -1500,8 +1500,7 @@ collectLocalBranchTargets(ArrayRef<uint8_t> Bytes, MCInstrAnalysis *MIA,
if (MIA)
MIA->resetState();
- Labels.clear();
- unsigned LabelCount = 0;
+ std::set<uint64_t> Targets;
Start += SectionAddr;
End += SectionAddr;
const bool isXCOFF = STI->getTargetTriple().isOSBinFormatXCOFF();
@@ -1521,13 +1520,13 @@ collectLocalBranchTargets(ArrayRef<uint8_t> Bytes, MCInstrAnalysis *MIA,
uint64_t Target;
bool TargetKnown = MIA->evaluateBranch(Inst, Index, Size, Target);
if (TargetKnown && (Target >= Start && Target < End) &&
- !Labels.count(Target)) {
+ !Targets.count(Target)) {
// On PowerPC and AIX, a function call is encoded as a branch to 0.
// On other PowerPC platforms (ELF), a function call is encoded as
// a branch to self. Do not add a label for these cases.
if (!(isPPC &&
((Target == 0 && isXCOFF) || (Target == Index && !isXCOFF))))
- Labels[Target] = ("L" + Twine(LabelCount++)).str();
+ Targets.insert(Target);
}
MIA->updateState(Inst, Index);
} else
@@ -1535,6 +1534,10 @@ collectLocalBranchTargets(ArrayRef<uint8_t> Bytes, MCInstrAnalysis *MIA,
}
Index += Size;
}
+
+ Labels.clear();
+ for (auto [Idx, Target] : enumerate(Targets))
+ Labels[Target] = ("L" + Twine(Idx)).str();
}
// Create an MCSymbolizer for the target and add it to the MCDisassembler.
More information about the llvm-commits
mailing list