[gn] port afa8aeeeec (RISCVGenExegesis.inc)
[llvm-project.git] / lld / test / ELF / invalid / broken-relaxation-x64.test
blobdaa0b38ec3971e73ae0524a3fe099d161e2f9fae
1 # REQUIRES: x86
3 # RUN: yaml2obj --docnum=1 %s -o %t1.o
4 # RUN: not ld.lld %t1.o -o /dev/null 2>&1 | FileCheck --check-prefix=ERR %s
5 # ERR: error: {{.*}}: R_X86_64_GOTTPOFF must be used in MOVQ or ADDQ instructions only
6 # ERR: error: {{.*}}: R_X86_64_GOTTPOFF must be used in MOVQ or ADDQ instructions only
8 ## YAML below contains 2 relocations of type R_X86_64_GOTTPOFF, and a .text
9 ## with fake content filled by 0xFF. That means instructions for relaxation are
10 ## "broken", so they does not match any known valid relaxations. We also generate
11 ## .tls section because we need it for correct processing of STT_TLS symbol.
12 --- !ELF
13 FileHeader:
14   Class:           ELFCLASS64
15   Data:            ELFDATA2LSB
16   OSABI:           ELFOSABI_FREEBSD
17   Type:            ET_REL
18   Machine:         EM_X86_64
19 Sections:
20   - Type:            SHT_PROGBITS
21     Name:            .text
22     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
23     AddressAlign:    0x04
24     Content:         "FFFFFFFFFFFFFFFF"
25   - Type:            SHT_PROGBITS
26     Name:            .tls
27     Flags:           [ SHF_ALLOC, SHF_TLS ]
28   - Type:            SHT_REL
29     Name:            .rel.text
30     Link:            .symtab
31     Info:            .text
32     AddressAlign:    0x04
33     Relocations:
34       - Offset:          4
35         Symbol:          foo
36         Type:            R_X86_64_GOTTPOFF
37       - Offset:          4
38         Symbol:          foo
39         Type:            R_X86_64_GOTTPOFF
40 Symbols:
41   - Name:     foo
42     Type:     STT_TLS
43     Section:  .text
44     Value:    0x12345
45     Size:     4
46     Binding:  STB_GLOBAL
49 # RUN: yaml2obj --docnum=2 %s -o %t2.o
50 # RUN: not ld.lld %t2.o -o /dev/null 2>&1 | FileCheck --check-prefix=ERR2 %s
51 # ERR2: error: {{.*}}: invalid prefix with R_X86_64_CODE_4_GOTTPOFF!
52 # ERR2: error: {{.*}}: invalid prefix with R_X86_64_CODE_6_GOTTPOFF!
54 ## YAML below contains 2 relocations of
55 ## R_X86_64_CODE_4_GOTTPOFF/R_X86_64_CODE_6_GOTTPOFF type, and a .text with
56 ## fake content filled by 0xFF. It's expected to get "invalid prefix" error
57 ##  message as above.
58 --- !ELF
59 FileHeader:
60   Class:           ELFCLASS64
61   Data:            ELFDATA2LSB
62   OSABI:           ELFOSABI_FREEBSD
63   Type:            ET_REL
64   Machine:         EM_X86_64
65 Sections:
66   - Type:            SHT_PROGBITS
67     Name:            .text
68     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
69     AddressAlign:    0x04
70     Content:         "FFFFFFFFFFFFFFFFFFFF"
71   - Type:            SHT_PROGBITS
72     Name:            .tls
73     Flags:           [ SHF_ALLOC, SHF_TLS ]
74   - Type:            SHT_REL
75     Name:            .rel.text
76     Link:            .symtab
77     Info:            .text
78     AddressAlign:    0x04
79     Relocations:
80       - Offset:          4
81         Symbol:          foo
82         Type:            R_X86_64_CODE_4_GOTTPOFF
83       - Offset:          6
84         Symbol:          foo
85         Type:            R_X86_64_CODE_6_GOTTPOFF
86 Symbols:
87   - Name:     foo
88     Type:     STT_TLS
89     Section:  .text
90     Value:    0x12345
91     Size:     4
92     Binding:  STB_GLOBAL
95 # RUN: yaml2obj --docnum=3 %s -o %t3.o
96 # RUN: not ld.lld %t3.o -o /dev/null 2>&1 | FileCheck --check-prefix=ERR3 %s
97 # ERR3: error: {{.*}}: R_X86_64_CODE_4_GOTTPOFF must be used in MOVQ or ADDQ instructions only
99 ## YAML below contains R_X86_64_CODE_4_GOTTPOFF relocation type, and a .text
100 ## with fake content filled by 0xd5, 0xFF, ... and 0xFF. It's expected to get
101 ## the error message as above.
102 --- !ELF
103 FileHeader:
104   Class:           ELFCLASS64
105   Data:            ELFDATA2LSB
106   OSABI:           ELFOSABI_FREEBSD
107   Type:            ET_REL
108   Machine:         EM_X86_64
109 Sections:
110   - Type:            SHT_PROGBITS
111     Name:            .text
112     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
113     AddressAlign:    0x04
114     Content:         "d5FFFFFFFFFFFFFFFFFF"
115   - Type:            SHT_PROGBITS
116     Name:            .tls
117     Flags:           [ SHF_ALLOC, SHF_TLS ]
118   - Type:            SHT_REL
119     Name:            .rel.text
120     Link:            .symtab
121     Info:            .text
122     AddressAlign:    0x04
123     Relocations:
124       - Offset:          4
125         Symbol:          foo
126         Type:            R_X86_64_CODE_4_GOTTPOFF
127 Symbols:
128   - Name:     foo
129     Type:     STT_TLS
130     Section:  .text
131     Value:    0x12345
132     Size:     4
133     Binding:  STB_GLOBAL
136 # RUN: yaml2obj --docnum=4 %s -o %t4.o
137 # RUN: not ld.lld %t4.o -o /dev/null 2>&1 | FileCheck --check-prefix=ERR4 %s
138 # ERR4: error: {{.*}}: R_X86_64_CODE_6_GOTTPOFF must be used in ADDQ instructions with NDD/NF/NDD+NF only
140 ## YAML below contains R_X86_64_CODE_6_GOTTPOFF relocation type, and a .text
141 ## with fake content filled by 0x62, 0xFF, ... and 0xFF. It's expected to get
142 ## the error message as above.
143 --- !ELF
144 FileHeader:
145   Class:           ELFCLASS64
146   Data:            ELFDATA2LSB
147   OSABI:           ELFOSABI_FREEBSD
148   Type:            ET_REL
149   Machine:         EM_X86_64
150 Sections:
151   - Type:            SHT_PROGBITS
152     Name:            .text
153     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
154     AddressAlign:    0x04
155     Content:         "62FFFFFFFFFFFFFFFFFF"
156   - Type:            SHT_PROGBITS
157     Name:            .tls
158     Flags:           [ SHF_ALLOC, SHF_TLS ]
159   - Type:            SHT_REL
160     Name:            .rel.text
161     Link:            .symtab
162     Info:            .text
163     AddressAlign:    0x04
164     Relocations:
165       - Offset:          6
166         Symbol:          foo
167         Type:            R_X86_64_CODE_6_GOTTPOFF
168 Symbols:
169   - Name:     foo
170     Type:     STT_TLS
171     Section:  .text
172     Value:    0x12345
173     Size:     4
174     Binding:  STB_GLOBAL