From 93d8c9c77d5fc2eb6e8904b4f3290eeac4338876 Mon Sep 17 00:00:00 2001 From: Fangrui Song 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 : +# CHECK-NEXT: 1200104: br %r14 +# CHECK-EMPTY: +# CHECK-NEXT: 0000000001200106 : +# 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 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)