Skip to content

Commit e79c2bd

Browse files
authored
[llvm-objdump] Print symbolized labels with increasing index (#139415)
To make it easier to navigate the disassembly listing.
1 parent 8e9da21 commit e79c2bd

File tree

5 files changed

+30
-27
lines changed

5 files changed

+30
-27
lines changed

llvm/test/tools/llvm-objdump/BPF/disassemble-symbolize-operands.s

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ main:
1515
exit
1616

1717
# CHECK: <main>:
18-
# CHECK-NEXT: <L1>:
19-
# CHECK-NEXT: if r1 > 0x2a goto +0x2 <L0>
18+
# CHECK-NEXT: <L0>:
19+
# CHECK-NEXT: if r1 > 0x2a goto +0x2 <L1>
2020
# CHECK-NEXT: r1 -= 0xa
2121
# CHECK-NEXT: goto -0x3 <main>
22-
# CHECK-NEXT: <L0>:
22+
# CHECK-NEXT: <L1>:
2323
# CHECK-NEXT: r0 = 0x0
2424
# CHECK-NEXT: exit

llvm/test/tools/llvm-objdump/ELF/PowerPC/disassemble-symbolize-operands.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@
1010
; CHECK-NEXT: 28: blr
1111

1212
; CHECK-LABEL: <foo>:
13-
; CHECK: 6c: b 0x74 <L0>
14-
; CHECK-NEXT: <L2>:
15-
; CHECK-NEXT: 70: bf 8, 0x94 <L1>
13+
; CHECK: 6c: b 0x74 <L1>
1614
; CHECK-NEXT: <L0>:
15+
; CHECK-NEXT: 70: bf 8, 0x94 <L2>
16+
; CHECK-NEXT: <L1>:
1717
; CHECK-NEXT: 74: clrldi 3, 30, 32
1818
; CHECK-NEXT: 78: bl 0x0 <internal>
1919
; CHECK-NEXT: 7c: mr 30, 3
2020
; CHECK-NEXT: 80: cmplwi 30, 11
21-
; CHECK-NEXT: 84: bt 0, 0x70 <L2>
21+
; CHECK-NEXT: 84: bt 0, 0x70 <L0>
2222
; CHECK-NEXT: 88: bl 0x88 <foo+0x48>
2323
; CHECK-NEXT: 8c: nop
24-
; CHECK-NEXT: 90: b 0x70 <L2>
25-
; CHECK-NEXT: <L1>:
24+
; CHECK-NEXT: 90: b 0x70 <L0>
25+
; CHECK-NEXT: <L2>:
2626
; CHECK-NEXT: 94: ld 30, 32(1)
2727

2828
define internal i32 @internal(i32 %a) {

llvm/test/tools/llvm-objdump/X86/elf-disassemble-symbololize-operands.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@
77
## Expect to find the branch labels and global variable name.
88
# ATT: <_start>:
99
# ATT-NEXT: pushq %rax
10-
# ATT-NEXT: <L1>:
11-
# ATT-NEXT: cmpl , %eax <symbol>
12-
# ATT-NEXT: jge <L0>
13-
# ATT-NEXT: jmp <L1>
1410
# ATT-NEXT: <L0>:
11+
# ATT-NEXT: cmpl , %eax <symbol>
12+
# ATT-NEXT: jge <L1>
13+
# ATT-NEXT: jmp <L0>
14+
# ATT-NEXT: <L1>:
1515
# ATT-NEXT: retq
1616

1717
# INTEL: <_start>:
1818
# INTEL-NEXT: push rax
19-
# INTEL-NEXT: <L1>:
20-
# INTEL-NEXT: cmp eax, dword ptr <symbol>
21-
# INTEL-NEXT: jge <L0>
22-
# INTEL-NEXT: jmp <L1>
2319
# INTEL-NEXT: <L0>:
20+
# INTEL-NEXT: cmp eax, dword ptr <symbol>
21+
# INTEL-NEXT: jge <L1>
22+
# INTEL-NEXT: jmp <L0>
23+
# INTEL-NEXT: <L1>:
2424
# INTEL-NEXT: ret
2525

2626
--- !ELF

llvm/test/tools/llvm-objdump/XCOFF/disassemble-symbolize-operands.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,19 @@
1313
; CHECK-NEXT: 14: blr
1414

1515
; CHECK-LABEL: <.foo>:
16-
; CHECK: 5c: b 0x64 <L0>
17-
; CHECK-NEXT: <L2>:
18-
; CHECK-NEXT: 60: bf 8, 0x84 <L1>
16+
; CHECK: 5c: b 0x64 <L1>
1917
; CHECK-NEXT: <L0>:
18+
; CHECK-NEXT: 60: bf 8, 0x84 <L2>
19+
; CHECK-NEXT: <L1>:
2020
; CHECK-NEXT: 64: bl 0x0 <.internal>
2121
; CHECK-NEXT: 68: cmplwi 3, 11
22-
; CHECK-NEXT: 6c: bt 0, 0x60 <L2>
22+
; CHECK-NEXT: 6c: bt 0, 0x60 <L0>
2323
; CHECK-NEXT: 70: mr 31, 3
2424
; CHECK-NEXT: 74: bl 0x0 <.extern>
2525
; CHECK-NEXT: 78: nop
2626
; CHECK-NEXT: 7c: mr 3, 31
27-
; CHECK-NEXT: 80: b 0x60 <L2>
28-
; CHECK-NEXT: <L1>:
27+
; CHECK-NEXT: 80: b 0x60 <L0>
28+
; CHECK-NEXT: <L2>:
2929
; CHECK-NEXT: 84: lwz 31, 60(1)
3030

3131
define internal i32 @internal(i32 %a) {

llvm/tools/llvm-objdump/llvm-objdump.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1500,8 +1500,7 @@ collectLocalBranchTargets(ArrayRef<uint8_t> Bytes, MCInstrAnalysis *MIA,
15001500
if (MIA)
15011501
MIA->resetState();
15021502

1503-
Labels.clear();
1504-
unsigned LabelCount = 0;
1503+
std::set<uint64_t> Targets;
15051504
Start += SectionAddr;
15061505
End += SectionAddr;
15071506
const bool isXCOFF = STI->getTargetTriple().isOSBinFormatXCOFF();
@@ -1521,20 +1520,24 @@ collectLocalBranchTargets(ArrayRef<uint8_t> Bytes, MCInstrAnalysis *MIA,
15211520
uint64_t Target;
15221521
bool TargetKnown = MIA->evaluateBranch(Inst, Index, Size, Target);
15231522
if (TargetKnown && (Target >= Start && Target < End) &&
1524-
!Labels.count(Target)) {
1523+
!Targets.count(Target)) {
15251524
// On PowerPC and AIX, a function call is encoded as a branch to 0.
15261525
// On other PowerPC platforms (ELF), a function call is encoded as
15271526
// a branch to self. Do not add a label for these cases.
15281527
if (!(isPPC &&
15291528
((Target == 0 && isXCOFF) || (Target == Index && !isXCOFF))))
1530-
Labels[Target] = ("L" + Twine(LabelCount++)).str();
1529+
Targets.insert(Target);
15311530
}
15321531
MIA->updateState(Inst, Index);
15331532
} else
15341533
MIA->resetState();
15351534
}
15361535
Index += Size;
15371536
}
1537+
1538+
Labels.clear();
1539+
for (auto [Idx, Target] : enumerate(Targets))
1540+
Labels[Target] = ("L" + Twine(Idx)).str();
15381541
}
15391542

15401543
// Create an MCSymbolizer for the target and add it to the MCDisassembler.

0 commit comments

Comments
 (0)