[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