-
Notifications
You must be signed in to change notification settings - Fork 13.8k
Commit 304b7f8
Auto merge of #129778 - RalfJung:interp-lossy-typed-copy, r=saethlin
interpret: make typed copies lossy wrt provenance and padding
A "typed copy" in Rust can be a lossy process: when copying at type `usize` (or any other non-pointer type), if the original memory had any provenance, that provenance is lost. When copying at pointer type, if the original memory had partial provenance (i.e., not the same provenance for all bytes), that provenance is lost. When copying any type with padding, the contents of padding are lost.
This PR equips our validity-checking pass with the ability to reset provenance and padding according to those rules. Can be reviewed commit-by-commit. The first three commits are just preparation without any functional change.
Fixes rust-lang/miri#845
Fixes rust-lang/miri#2182 File tree
49 files changed
+1246
-310
lines changed- compiler
- rustc_const_eval/src
- const_eval
- interpret
- util
- rustc_index/src
- rustc_middle/src
- mir/interpret
- ty
- library/core/tests
- src/tools/miri
- src
- concurrency
- intrinsics
- tests
- fail
- provenance
- uninit
- pass
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
49 files changed
+1246
-310
lines changedOriginal file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
94 | 94 |
| |
95 | 95 |
| |
96 | 96 |
| |
97 | - | ||
97 | + | ||
98 | 98 |
| |
99 | 99 |
| |
100 | 100 |
| |
| |||
391 | 391 |
| |
392 | 392 |
| |
393 | 393 |
| |
394 | - | ||
394 | + | ||
395 | 395 |
| |
396 | 396 |
| |
397 | 397 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1 | - | ||
1 | + | ||
2 | 2 |
| |
3 | 3 |
| |
4 | 4 |
| |
5 | 5 |
| |
6 | 6 |
| |
7 | - | ||
7 | + | ||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 | 11 |
| |
12 | 12 |
| |
13 | - | ||
13 | + | ||
14 | 14 |
| |
15 | 15 |
| |
16 | 16 |
| |
| |||
24 | 24 |
| |
25 | 25 |
| |
26 | 26 |
| |
27 | - | ||
28 | - | ||
27 | + | ||
28 | + | ||
29 | 29 |
| |
30 | 30 |
| |
31 | 31 |
| |
| |||
65 | 65 |
| |
66 | 66 |
| |
67 | 67 |
| |
68 | + | ||
69 | + | ||
70 | + | ||
68 | 71 |
| |
69 | 72 |
| |
70 | 73 |
| |
| |||
99 | 102 |
| |
100 | 103 |
| |
101 | 104 |
| |
105 | + | ||
102 | 106 |
| |
103 | 107 |
| |
104 | 108 |
| |
| |||
766 | 770 |
| |
767 | 771 |
| |
768 | 772 |
| |
773 | + | ||
774 | + | ||
775 | + | ||
776 | + | ||
777 | + | ||
778 | + | ||
779 | + | ||
780 | + | ||
781 | + | ||
782 | + | ||
783 | + | ||
784 | + | ||
785 | + | ||
769 | 786 |
| |
770 | 787 |
| |
771 | 788 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 | - | ||
10 | + | ||
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
60 | 60 |
| |
61 | 61 |
| |
62 | 62 |
| |
63 | - | ||
63 | + | ||
64 | 64 |
| |
65 | 65 |
| |
66 | 66 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
10 | 10 |
| |
11 | 11 |
| |
12 | 12 |
| |
13 | + | ||
13 | 14 |
| |
14 | 15 |
| |
15 | 16 |
| |
| |||
19 | 20 |
| |
20 | 21 |
| |
21 | 22 |
| |
22 | - | ||
23 | + | ||
23 | 24 |
| |
24 | 25 |
| |
25 | 26 |
| |
| |||
578 | 579 |
| |
579 | 580 |
| |
580 | 581 |
| |
582 | + | ||
583 | + | ||
584 | + | ||
585 | + | ||
586 | + | ||
587 | + | ||
588 | + | ||
589 | + | ||
590 | + | ||
581 | 591 |
| |
582 | 592 |
| |
583 | 593 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 | - | ||
12 | 11 |
| |
13 | - | ||
12 | + | ||
14 | 13 |
| |
15 | 14 |
| |
16 | 15 |
| |
| |||
118 | 117 |
| |
119 | 118 |
| |
120 | 119 |
| |
121 | - | ||
120 | + | ||
122 | 121 |
| |
123 | 122 |
| |
124 | 123 |
| |
| |||
145 | 144 |
| |
146 | 145 |
| |
147 | 146 |
| |
148 | - | ||
147 | + | ||
149 | 148 |
| |
150 | 149 |
| |
151 | 150 |
| |
| |||
682 | 681 |
| |
683 | 682 |
| |
684 | 683 |
| |
685 | - | ||
684 | + | ||
686 | 685 |
| |
687 | 686 |
| |
688 | 687 |
| |
689 | 688 |
| |
690 | 689 |
| |
691 | 690 |
| |
692 | 691 |
| |
693 | - | ||
692 | + | ||
694 | 693 |
| |
695 | 694 |
| |
696 | 695 |
| |
| |||
766 | 765 |
| |
767 | 766 |
| |
768 | 767 |
| |
768 | + | ||
769 | 769 |
| |
770 | 770 |
| |
771 | 771 |
| |
772 | 772 |
| |
773 | - | ||
773 | + | ||
774 | + | ||
775 | + | ||
774 | 776 |
| |
775 | 777 |
| |
776 | 778 |
| |
| |||
1014 | 1016 |
| |
1015 | 1017 |
| |
1016 | 1018 |
| |
1017 | - | ||
1019 | + | ||
1018 | 1020 |
| |
1019 | 1021 |
| |
1020 | 1022 |
| |
1021 | - | ||
1023 | + | ||
1022 | 1024 |
| |
1023 | 1025 |
| |
1024 | - | ||
1026 | + | ||
1025 | 1027 |
| |
1026 | - | ||
1028 | + | ||
1027 | 1029 |
| |
1028 | 1030 |
| |
1029 | 1031 |
| |
| |||
1115 | 1117 |
| |
1116 | 1118 |
| |
1117 | 1119 |
| |
1120 | + | ||
1121 | + | ||
1122 | + | ||
1123 | + | ||
1118 | 1124 |
| |
1119 | 1125 |
| |
1120 | 1126 |
| |
| |||
1130 | 1136 |
| |
1131 | 1137 |
| |
1132 | 1138 |
| |
1139 | + | ||
1140 | + | ||
1141 | + | ||
1142 | + | ||
1143 | + | ||
1144 | + | ||
1145 | + | ||
1146 | + | ||
1147 | + | ||
1133 | 1148 |
| |
1134 | - | ||
1149 | + | ||
1135 | 1150 |
| |
1136 | 1151 |
| |
1137 | 1152 |
| |
1138 | 1153 |
| |
1139 | 1154 |
| |
1155 | + | ||
1156 | + | ||
1157 | + | ||
1158 | + | ||
1159 | + | ||
1160 | + | ||
1161 | + | ||
1162 | + | ||
1140 | 1163 |
| |
1141 | 1164 |
| |
1142 | 1165 |
| |
| |||
1278 | 1301 |
| |
1279 | 1302 |
| |
1280 | 1303 |
| |
1281 | - | ||
1304 | + | ||
1282 | 1305 |
| |
1283 | 1306 |
| |
1284 | 1307 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
33 | 33 |
| |
34 | 34 |
| |
35 | 35 |
| |
36 | - | ||
36 | + | ||
37 | 37 |
| |
38 | 38 |
| |
39 | 39 |
| |
40 | 40 |
| |
41 | 41 |
| |
42 | - | ||
42 | + | ||
43 | 43 |
|
0 commit comments