[llvm] fa24875 - llvm-objdump --adjust-vma: Don't adjust VMA in inline reloc addresses

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat May 10 14:39:58 PDT 2025


Author: Fangrui Song
Date: 2025-05-10T14:39:53-07:00
New Revision: fa248750c06d3b21427cc0f5c1a699cf6b108b47

URL: https://github.com/llvm/llvm-project/commit/fa248750c06d3b21427cc0f5c1a699cf6b108b47
DIFF: https://github.com/llvm/llvm-project/commit/fa248750c06d3b21427cc0f5c1a699cf6b108b47.diff

LOG: llvm-objdump --adjust-vma: Don't adjust VMA in inline reloc addresses

--adjust-vma adjusts the current section address. The address printed
for inline relocs is relative to the current section address instead of
the section that the referenced symbol resides in.

Fix https://github.com/llvm/llvm-project/issues/75444

Added: 
    

Modified: 
    llvm/test/tools/llvm-objdump/BPF/core-relo-formatting.s
    llvm/test/tools/llvm-objdump/X86/adjust-vma.test
    llvm/tools/llvm-objdump/llvm-objdump.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/test/tools/llvm-objdump/BPF/core-relo-formatting.s b/llvm/test/tools/llvm-objdump/BPF/core-relo-formatting.s
index 98cd31f6406a4..6a52a79edb943 100644
--- a/llvm/test/tools/llvm-objdump/BPF/core-relo-formatting.s
+++ b/llvm/test/tools/llvm-objdump/BPF/core-relo-formatting.s
@@ -78,15 +78,15 @@
 # VMA:            3:	r1 = 0x1
 # VMA-NEXT:		0000000000000018:  CO-RE <type_exists> [3] struct foo
 # VMA-NEXT:       4:	call -0x1
-# VMA-NEXT:		0000000000000010:  R_BPF_64_32	consume
+# VMA-NEXT:		0000000000000020:  R_BPF_64_32	consume
 # VMA-NEXT:       5:	r1 = 0x0
 # VMA-NEXT:		0000000000000028:  CO-RE <byte_off> [3] struct foo::a (0:0)
 # VMA-NEXT:       6:	call -0x1
-# VMA-NEXT:		0000000000000020:  R_BPF_64_32	consume
+# VMA-NEXT:		0000000000000030:  R_BPF_64_32	consume
 # VMA-NEXT:       7:	r1 = 0x1 ll
 # VMA-NEXT:		0000000000000038:  CO-RE <enumval_exists> [8] enum bar::U = 0
 # VMA-NEXT:       9:	call -0x1
-# VMA-NEXT:		0000000000000038:  R_BPF_64_32	consume
+# VMA-NEXT:		0000000000000048:  R_BPF_64_32	consume
 # VMA-NEXT:      10:	exit
 
 	.text

diff  --git a/llvm/test/tools/llvm-objdump/X86/adjust-vma.test b/llvm/test/tools/llvm-objdump/X86/adjust-vma.test
index e033731ec7ab0..e2a91b14cfbf5 100644
--- a/llvm/test/tools/llvm-objdump/X86/adjust-vma.test
+++ b/llvm/test/tools/llvm-objdump/X86/adjust-vma.test
@@ -58,7 +58,7 @@
 
 # ADJUST:        0000000000000000 <debug_str_sym>:
 # ADJUST-NEXT:     0: {{.*}}  %al, (%rax)
-# ADJUST-NEXT:        0000000000123001:  R_X86_64_32  .text
+# ADJUST-NEXT:        0000000000000001:  R_X86_64_32  .text
 # ADJUST-NEXT:     2: {{.*}}  addb    %al, (%rax)
 
 # COMMON:        0000000000000000    <.rela.debug_str>:

diff  --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 5c84fd5380c4d..15845478be70e 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -2533,16 +2533,8 @@ disassembleObject(ObjectFile &Obj, const ObjectFile &DbgObj,
         if (InlineRelocs && Obj.getArch() != Triple::hexagon) {
           while (findRel()) {
             // When --adjust-vma is used, update the address printed.
-            if (RelCur->getSymbol() != Obj.symbol_end()) {
-              Expected<section_iterator> SymSI =
-                  RelCur->getSymbol()->getSection();
-              if (SymSI && *SymSI != Obj.section_end() &&
-                  shouldAdjustVA(**SymSI))
-                RelOffset += AdjustVMA;
-            }
-
             printRelocation(FOS, Obj.getFileName(), *RelCur,
-                            SectionAddr + RelOffset, Is64Bits);
+                            SectionAddr + RelOffset + VMAAdjustment, Is64Bits);
             LVP.printAfterOtherLine(FOS, true);
             ++RelCur;
           }


        


More information about the llvm-commits mailing list