Commit f1aa605
committed
MCFragment: Use trailing data for fixed-size part
Reapply after #151724 switched to `char *Data`, fixing a
-fsanitize=pointer-overflow issue in MCAssembler::layout.
---
The fixed-size content of the MCFragment object is now stored as
trailing data, replacing ContentStart/ContentEnd with ContentSize. The
available space for trailing data is tracked using `FragSpace`. If the
available space is insufficient, a new block is allocated within the
bump allocator `MCObjectStreamer::FragStorage`.
FragList::Tail cannot be reused when switching sections or subsections,
as it is not associated with the fragment space tracked by `FragSpace`.
Instead, allocate a new fragment, which becomes less expensive after #150574.
Data can only be appended to the tail fragment of a subsection, not to
fragments in the middle. Post-assembler-layout adjustments (such as
.llvm_addrsig and .llvm.call-graph-profile) have been updated to use the
variable-size part instead.
Pull Request: llvm/llvm-project#1508461 parent 9d7a233 commit f1aa605
File tree
7 files changed
+144
-59
lines changed- llvm
- include/llvm/MC
- lib
- MC
- Target/Mips/MCTargetDesc
- test/MC/ELF
7 files changed
+144
-59
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
55 | 59 | | |
56 | 60 | | |
57 | 61 | | |
| |||
84 | 88 | | |
85 | 89 | | |
86 | 90 | | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
87 | 95 | | |
88 | 96 | | |
89 | 97 | | |
| 98 | + | |
90 | 99 | | |
91 | | - | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
92 | 103 | | |
93 | 104 | | |
94 | 105 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
98 | 98 | | |
99 | 99 | | |
100 | 100 | | |
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
191 | | - | |
192 | | - | |
193 | | - | |
194 | | - | |
195 | | - | |
196 | | - | |
197 | | - | |
198 | | - | |
199 | | - | |
200 | | - | |
201 | | - | |
202 | | - | |
203 | 191 | | |
204 | 192 | | |
205 | 193 | | |
| |||
208 | 196 | | |
209 | 197 | | |
210 | 198 | | |
211 | | - | |
| 199 | + | |
212 | 200 | | |
213 | 201 | | |
214 | | - | |
| 202 | + | |
215 | 203 | | |
216 | 204 | | |
217 | 205 | | |
| |||
626 | 614 | | |
627 | 615 | | |
628 | 616 | | |
629 | | - | |
630 | | - | |
631 | | - | |
632 | | - | |
633 | | - | |
634 | | - | |
635 | | - | |
636 | | - | |
637 | | - | |
638 | | - | |
639 | | - | |
640 | | - | |
641 | | - | |
642 | | - | |
643 | | - | |
644 | 617 | | |
645 | | - | |
646 | | - | |
| 618 | + | |
647 | 619 | | |
648 | 620 | | |
649 | | - | |
650 | | - | |
| 621 | + | |
651 | 622 | | |
652 | 623 | | |
653 | 624 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
49 | 65 | | |
50 | | - | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
51 | 85 | | |
52 | 86 | | |
53 | | - | |
54 | | - | |
| 87 | + | |
| 88 | + | |
55 | 89 | | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
56 | 105 | | |
57 | | - | |
58 | 106 | | |
59 | 107 | | |
60 | 108 | | |
61 | | - | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
62 | 114 | | |
63 | 115 | | |
64 | | - | |
65 | | - | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
66 | 122 | | |
67 | 123 | | |
68 | 124 | | |
69 | | - | |
| 125 | + | |
70 | 126 | | |
71 | 127 | | |
72 | 128 | | |
| |||
115 | 171 | | |
116 | 172 | | |
117 | 173 | | |
| 174 | + | |
| 175 | + | |
118 | 176 | | |
119 | 177 | | |
120 | 178 | | |
| |||
143 | 201 | | |
144 | 202 | | |
145 | 203 | | |
146 | | - | |
147 | 204 | | |
148 | 205 | | |
149 | 206 | | |
| |||
158 | 215 | | |
159 | 216 | | |
160 | 217 | | |
161 | | - | |
162 | | - | |
163 | | - | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
164 | 221 | | |
165 | 222 | | |
166 | 223 | | |
| |||
194 | 251 | | |
195 | 252 | | |
196 | 253 | | |
197 | | - | |
| 254 | + | |
198 | 255 | | |
199 | 256 | | |
200 | 257 | | |
| |||
260 | 317 | | |
261 | 318 | | |
262 | 319 | | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
263 | 335 | | |
264 | 336 | | |
265 | 337 | | |
266 | 338 | | |
267 | 339 | | |
268 | 340 | | |
269 | 341 | | |
270 | | - | |
271 | | - | |
272 | 342 | | |
273 | 343 | | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
274 | 351 | | |
275 | | - | |
276 | | - | |
277 | 352 | | |
278 | 353 | | |
279 | 354 | | |
| |||
344 | 419 | | |
345 | 420 | | |
346 | 421 | | |
347 | | - | |
| 422 | + | |
| 423 | + | |
348 | 424 | | |
349 | | - | |
350 | | - | |
351 | | - | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
352 | 431 | | |
353 | 432 | | |
354 | 433 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
318 | 318 | | |
319 | 319 | | |
320 | 320 | | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
321 | 324 | | |
322 | 325 | | |
323 | 326 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
280 | 280 | | |
281 | 281 | | |
282 | 282 | | |
| 283 | + | |
283 | 284 | | |
284 | 285 | | |
285 | 286 | | |
| |||
293 | 294 | | |
294 | 295 | | |
295 | 296 | | |
| 297 | + | |
296 | 298 | | |
297 | 299 | | |
298 | 300 | | |
| |||
308 | 310 | | |
309 | 311 | | |
310 | 312 | | |
| 313 | + | |
311 | 314 | | |
312 | 315 | | |
313 | 316 | | |
| |||
318 | 321 | | |
319 | 322 | | |
320 | 323 | | |
| 324 | + | |
321 | 325 | | |
322 | 326 | | |
323 | 327 | | |
| |||
328 | 332 | | |
329 | 333 | | |
330 | 334 | | |
| 335 | + | |
331 | 336 | | |
332 | 337 | | |
333 | 338 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1034 | 1034 | | |
1035 | 1035 | | |
1036 | 1036 | | |
| 1037 | + | |
1037 | 1038 | | |
1038 | 1039 | | |
1039 | 1040 | | |
1040 | 1041 | | |
1041 | 1042 | | |
1042 | 1043 | | |
| 1044 | + | |
1043 | 1045 | | |
1044 | 1046 | | |
1045 | 1047 | | |
1046 | 1048 | | |
1047 | 1049 | | |
1048 | 1050 | | |
1049 | 1051 | | |
| 1052 | + | |
1050 | 1053 | | |
1051 | 1054 | | |
1052 | 1055 | | |
1053 | 1056 | | |
1054 | 1057 | | |
1055 | 1058 | | |
| 1059 | + | |
1056 | 1060 | | |
1057 | 1061 | | |
1058 | 1062 | | |
1059 | 1063 | | |
1060 | 1064 | | |
1061 | 1065 | | |
| 1066 | + | |
1062 | 1067 | | |
1063 | 1068 | | |
1064 | 1069 | | |
1065 | 1070 | | |
1066 | 1071 | | |
1067 | 1072 | | |
| 1073 | + | |
1068 | 1074 | | |
1069 | 1075 | | |
1070 | 1076 | | |
| |||
0 commit comments