Skip to content

Commit 6ac62bb

Browse files
author
git apple-llvm automerger
committed
Merge commit '95e4db8fa7d4' from llvm.org/main into next
2 parents c5f6ef1 + 95e4db8 commit 6ac62bb

File tree

3 files changed

+102
-1
lines changed

3 files changed

+102
-1
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
## SystemZDisassembler sets the branch target information during getInstruction instead of printInst.
2+
## Test we display the branch targets correctly in the presence of --adjust-vma.
3+
# RUN: rm -rf %t && split-file %s %t && cd %t
4+
# RUN: yaml2obj a.yaml -o out
5+
# RUN: llvm-objdump -td --adjust-vma=0x200000 --no-show-raw-insn out | FileCheck %s --match-full-lines
6+
7+
# CHECK: SYMBOL TABLE:
8+
# CHECK-NEXT: 0000000001200104 l .text 0000000000000000 f1
9+
# CHECK-NEXT: 0000000001200106 l .text 0000000000000000 f2
10+
# CHECK-NEXT: 0000000000000800 l *ABS* 0000000000000000 abs
11+
12+
# CHECK: 00000000012000f8 <_start>:
13+
# CHECK-NEXT: 12000f8: brasl %r14, 0x1200104
14+
# CHECK-NEXT: 12000fe: brasl %r14, 0x1200106
15+
# CHECK-EMPTY:
16+
# CHECK-NEXT: 0000000001200104 <f1>:
17+
# CHECK-NEXT: 1200104: br %r14
18+
# CHECK-EMPTY:
19+
# CHECK-NEXT: 0000000001200106 <f2>:
20+
# CHECK-NEXT: 1200106: br %r14
21+
22+
#--- a.s
23+
.globl _start
24+
_start:
25+
brasl %r14, f1
26+
brasl %r14, f2
27+
28+
f1:
29+
br %r14
30+
f2:
31+
br %r14
32+
33+
abs = 0x800
34+
#--- gen
35+
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
36+
obj2yaml a
37+
#--- a.yaml
38+
--- !ELF
39+
FileHeader:
40+
Class: ELFCLASS64
41+
Data: ELFDATA2MSB
42+
Type: ET_EXEC
43+
Machine: EM_S390
44+
Entry: 0x10000F8
45+
ProgramHeaders:
46+
- Type: PT_PHDR
47+
Flags: [ PF_R ]
48+
VAddr: 0x1000040
49+
Align: 0x8
50+
Offset: 0x40
51+
- Type: PT_INTERP
52+
Flags: [ PF_R ]
53+
FirstSec: .interp
54+
LastSec: .interp
55+
VAddr: 0x10000E8
56+
Offset: 0xE8
57+
- Type: PT_LOAD
58+
Flags: [ PF_X, PF_R ]
59+
FirstSec: .interp
60+
LastSec: .text
61+
VAddr: 0x1000000
62+
Align: 0x1000
63+
Offset: 0x0
64+
Sections:
65+
- Name: .interp
66+
Type: SHT_PROGBITS
67+
Flags: [ SHF_ALLOC ]
68+
Address: 0x10000E8
69+
AddressAlign: 0x1
70+
Content: 2F6C69622F6C6436342E736F2E3100
71+
- Name: .text
72+
Type: SHT_PROGBITS
73+
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
74+
Address: 0x10000F8
75+
AddressAlign: 0x4
76+
Content: C0E500000006C0E50000000407FE07FE
77+
- Name: .comment
78+
Type: SHT_PROGBITS
79+
Flags: [ SHF_MERGE, SHF_STRINGS ]
80+
AddressAlign: 0x1
81+
EntSize: 0x1
82+
Offset: 0x1000
83+
Content: 4C696E6B65723A204C4C442032312E302E3000
84+
Symbols:
85+
- Name: f1
86+
Section: .text
87+
Value: 0x1000104
88+
- Name: f2
89+
Section: .text
90+
Value: 0x1000106
91+
- Name: abs
92+
Index: SHN_ABS
93+
Value: 0x800
94+
- Name: _start
95+
Section: .text
96+
Binding: STB_GLOBAL
97+
Value: 0x10000F8
98+
...

llvm/test/tools/llvm-objdump/X86/elf-disassemble-symbololize-operands.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
# RUN: llvm-objdump %t -d --symbolize-operands -M att --no-show-raw-insn --no-leading-addr | \
55
# RUN: FileCheck %s --match-full-lines --check-prefix=ATT
66

7+
# RUN: llvm-objdump %t -d --symbolize-operands -M intel --no-show-raw-insn --no-leading-addr --adjust-vma=0x2000 | \
8+
# RUN: FileCheck %s --match-full-lines --check-prefix=INTEL
9+
710
## Expect to find the branch labels and global variable name.
811
# ATT: <_start>:
912
# ATT-NEXT: pushq %rax

llvm/tools/llvm-objdump/llvm-objdump.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2323,7 +2323,7 @@ disassembleObject(ObjectFile &Obj, const ObjectFile &DbgObj,
23232323
// provided
23242324
MCInst Inst;
23252325
ArrayRef<uint8_t> ThisBytes = Bytes.slice(Index);
2326-
uint64_t ThisAddr = SectionAddr + Index;
2326+
uint64_t ThisAddr = SectionAddr + Index + VMAAdjustment;
23272327
bool Disassembled = DT->DisAsm->getInstruction(
23282328
Inst, Size, ThisBytes, ThisAddr, CommentStream);
23292329
if (Size == 0)

0 commit comments

Comments
 (0)