Skip to content

Commit e915b7d

Browse files
authored
[ELF,test] Add test for R_AARCH64_* implicit addends
to support certain static relocations in the REL format. See #87328 for the armasm need. Note: `R_AARCH64_{ABS64,PREL32,PREL64}` have been implemented by https://reviews.llvm.org/D120535 Pull Request: #87733
1 parent 5772fc8 commit e915b7d

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
## Test certain REL relocation types generated by legacy armasm.
2+
# RUN: yaml2obj %s -o %t.o
3+
# RUN: not ld.lld %t.o -o /dev/null 2>&1 | FileCheck %s
4+
5+
# CHECK-COUNT-17: internal linker error: cannot read addend
6+
7+
---
8+
!ELF
9+
FileHeader:
10+
Class: ELFCLASS64
11+
Data: ELFDATA2LSB
12+
Type: ET_REL
13+
Machine: EM_AARCH64
14+
Sections:
15+
- Name: .abs
16+
Type: SHT_PROGBITS
17+
Flags: [ SHF_ALLOC ]
18+
Content: fffffefffffffdfffffffffffffffcffffffffffffff
19+
- Name: .rel.abs
20+
Type: SHT_REL
21+
Link: .symtab
22+
Info: .abs
23+
Relocations:
24+
- {Offset: 0, Symbol: abs, Type: R_AARCH64_ABS16}
25+
- {Offset: 2, Symbol: abs, Type: R_AARCH64_ABS32}
26+
- {Offset: 6, Symbol: abs, Type: R_AARCH64_ABS64}
27+
- {Offset: 14, Symbol: abs, Type: R_AARCH64_ADD_ABS_LO12_NC}
28+
29+
- Name: .uabs
30+
Type: SHT_PROGBITS
31+
Flags: [ SHF_ALLOC ]
32+
AddressAlign: 4
33+
Content: 00ffffff00ffffff00ffffff00ffffff00ffffff00ffffff
34+
- Name: .rel.uabs
35+
Type: SHT_REL
36+
Link: .symtab
37+
Info: .uabs
38+
Relocations:
39+
- {Offset: 0, Symbol: abs, Type: R_AARCH64_MOVW_UABS_G0}
40+
- {Offset: 4, Symbol: abs, Type: R_AARCH64_MOVW_UABS_G0_NC}
41+
- {Offset: 8, Symbol: abs, Type: R_AARCH64_MOVW_UABS_G1}
42+
- {Offset: 12, Symbol: abs, Type: R_AARCH64_MOVW_UABS_G1_NC}
43+
- {Offset: 16, Symbol: abs, Type: R_AARCH64_MOVW_UABS_G2}
44+
- {Offset: 20, Symbol: abs, Type: R_AARCH64_MOVW_UABS_G2_NC}
45+
46+
- Name: .prel
47+
Type: SHT_PROGBITS
48+
Flags: [ SHF_ALLOC ]
49+
AddressAlign: 4
50+
Content: 00ffffff00ffffff00ffffff00ffffff00ffffff00ffffff
51+
- Name: .rel.prel
52+
Type: SHT_REL
53+
Link: .symtab
54+
Info: .prel
55+
Relocations:
56+
- {Offset: 0, Symbol: .prel, Type: R_AARCH64_PREL64}
57+
- {Offset: 4, Symbol: .prel, Type: R_AARCH64_PREL32}
58+
- {Offset: 8, Symbol: .prel, Type: R_AARCH64_PREL16}
59+
- {Offset: 12, Symbol: .prel, Type: R_AARCH64_LD_PREL_LO19}
60+
- {Offset: 16, Symbol: .prel, Type: R_AARCH64_ADR_PREL_PG_HI21}
61+
- {Offset: 20, Symbol: .prel, Type: R_AARCH64_ADR_PREL_PG_HI21_NC}
62+
63+
- Name: .branch
64+
Type: SHT_PROGBITS
65+
Flags: [ SHF_ALLOC ]
66+
AddressAlign: 4
67+
Content: f0fffffff0fffffff0fffffff0ffffff
68+
- Name: .rel.branch
69+
Type: SHT_REL
70+
Link: .symtab
71+
Info: .branch
72+
Relocations:
73+
- {Offset: 0, Symbol: .branch, Type: R_AARCH64_TSTBR14}
74+
- {Offset: 4, Symbol: .branch, Type: R_AARCH64_CONDBR19}
75+
- {Offset: 8, Symbol: .branch, Type: R_AARCH64_CALL26}
76+
- {Offset: 12, Symbol: .branch, Type: R_AARCH64_JUMP26}
77+
78+
Symbols:
79+
- Name: .branch
80+
Section: .branch
81+
- Name: .prel
82+
Section: .prel
83+
- Name: abs
84+
Index: SHN_ABS
85+
Value: 42
86+
Binding: STB_GLOBAL

0 commit comments

Comments
 (0)