[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