[llvm] [llvm-objdump] --adjust-vma: Call getInstruction with adjusted address (PR #140471)
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Mon May 19 09:40:38 PDT 2025
https://github.com/MaskRay updated https://github.com/llvm/llvm-project/pull/140471
>From 93d8c9c77d5fc2eb6e8904b4f3290eeac4338876 Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Sun, 18 May 2025 12:11:07 -0700
Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?=
=?UTF-8?q?l=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.5-bogner
---
.../llvm-objdump/ELF/SystemZ/adjust-vma.test | 96 +++++++++++++++++++
llvm/tools/llvm-objdump/llvm-objdump.cpp | 2 +-
2 files changed, 97 insertions(+), 1 deletion(-)
create mode 100644 llvm/test/tools/llvm-objdump/ELF/SystemZ/adjust-vma.test
diff --git a/llvm/test/tools/llvm-objdump/ELF/SystemZ/adjust-vma.test b/llvm/test/tools/llvm-objdump/ELF/SystemZ/adjust-vma.test
new file mode 100644
index 0000000000000..9cc93fb1af8d8
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/ELF/SystemZ/adjust-vma.test
@@ -0,0 +1,96 @@
+# RUN: rm -rf %t && split-file %s %t && cd %t
+# RUN: yaml2obj a.yaml -o out
+# RUN: llvm-objdump -td --adjust-vma=0x200000 --no-show-raw-insn out | FileCheck %s --match-full-lines
+
+# CHECK: SYMBOL TABLE:
+# CHECK-NEXT: 0000000001200104 l .text 0000000000000000 f1
+# CHECK-NEXT: 0000000001200106 l .text 0000000000000000 f2
+# CHECK-NEXT: 0000000000000800 l *ABS* 0000000000000000 abs
+
+# CHECK: 00000000012000f8 <_start>:
+# CHECK-NEXT: 12000f8: brasl %r14, 0x1200104
+# CHECK-NEXT: 12000fe: brasl %r14, 0x1200106
+# CHECK-EMPTY:
+# CHECK-NEXT: 0000000001200104 <f1>:
+# CHECK-NEXT: 1200104: br %r14
+# CHECK-EMPTY:
+# CHECK-NEXT: 0000000001200106 <f2>:
+# CHECK-NEXT: 1200106: br %r14
+
+#--- a.s
+.globl _start
+_start:
+ brasl %r14, f1
+ brasl %r14, f2
+
+f1:
+ br %r14
+f2:
+ br %r14
+
+abs = 0x800
+#--- gen
+LLD_IN_TEST=1 clang --target=s390x-linux -no-pie -nostdlib -Wl,--no-rosegment,-zseparate-code,-znorelro,-znognustack -fuse-ld=lld a.s -o a
+obj2yaml a
+#--- a.yaml
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2MSB
+ Type: ET_EXEC
+ Machine: EM_S390
+ Entry: 0x10000F8
+ProgramHeaders:
+ - Type: PT_PHDR
+ Flags: [ PF_R ]
+ VAddr: 0x1000040
+ Align: 0x8
+ Offset: 0x40
+ - Type: PT_INTERP
+ Flags: [ PF_R ]
+ FirstSec: .interp
+ LastSec: .interp
+ VAddr: 0x10000E8
+ Offset: 0xE8
+ - Type: PT_LOAD
+ Flags: [ PF_X, PF_R ]
+ FirstSec: .interp
+ LastSec: .text
+ VAddr: 0x1000000
+ Align: 0x1000
+ Offset: 0x0
+Sections:
+ - Name: .interp
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC ]
+ Address: 0x10000E8
+ AddressAlign: 0x1
+ Content: 2F6C69622F6C6436342E736F2E3100
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ Address: 0x10000F8
+ AddressAlign: 0x4
+ Content: C0E500000006C0E50000000407FE07FE
+ - Name: .comment
+ Type: SHT_PROGBITS
+ Flags: [ SHF_MERGE, SHF_STRINGS ]
+ AddressAlign: 0x1
+ EntSize: 0x1
+ Offset: 0x1000
+ Content: 4C696E6B65723A204C4C442032312E302E3000
+Symbols:
+ - Name: f1
+ Section: .text
+ Value: 0x1000104
+ - Name: f2
+ Section: .text
+ Value: 0x1000106
+ - Name: abs
+ Index: SHN_ABS
+ Value: 0x800
+ - Name: _start
+ Section: .text
+ Binding: STB_GLOBAL
+ Value: 0x10000F8
+...
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 7a778da2d3a49..99bb41f5b95a7 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -2323,7 +2323,7 @@ disassembleObject(ObjectFile &Obj, const ObjectFile &DbgObj,
// provided
MCInst Inst;
ArrayRef<uint8_t> ThisBytes = Bytes.slice(Index);
- uint64_t ThisAddr = SectionAddr + Index;
+ uint64_t ThisAddr = SectionAddr + Index + VMAAdjustment;
bool Disassembled = DT->DisAsm->getInstruction(
Inst, Size, ThisBytes, ThisAddr, CommentStream);
if (Size == 0)
More information about the llvm-commits
mailing list