Commit 8f7613b
committed
Allow section override when using patchable-function-entries
Sometimes it is necessary to group patchable function entrypoint
records in distinct linker sections. This is the case for some bpf
functions within the linux kernel which shouldn't be visible to
ftrace.
Extend `-Zpatchable-function-entry` to accept an argument of the form
`prefix_nops,total_nops,record_section`, which places all entry
record into a user specified section.
Likewise, extend the `patchable_function_entry` attribute to accept an
optional `section="name"` option to place a function into a specific
section.
This is made possible by llvm attribute `patchable-function-entry-section`
added in llvm 21.1 parent b3f7e32 commit 8f7613b
17 files changed
Lines changed: 201 additions & 53 deletions
File tree
- compiler
- rustc_attr_parsing/src/attributes
- rustc_codegen_llvm/src
- rustc_codegen_ssa/src
- rustc_hir/src/attrs
- rustc_interface/src
- rustc_middle/src/middle
- rustc_session/src
- rustc_span/src
- src/doc/unstable-book/src/compiler-flags
- tests
- codegen-llvm/patchable-function-entry
- ui
- attributes
- patchable-function-entry
Lines changed: 20 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
729 | 729 | | |
730 | 730 | | |
731 | 731 | | |
732 | | - | |
| 732 | + | |
| 733 | + | |
733 | 734 | | |
734 | 735 | | |
735 | 736 | | |
736 | 737 | | |
737 | 738 | | |
738 | 739 | | |
739 | 740 | | |
| 741 | + | |
740 | 742 | | |
741 | 743 | | |
742 | 744 | | |
| |||
769 | 771 | | |
770 | 772 | | |
771 | 773 | | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
772 | 790 | | |
773 | 791 | | |
774 | 792 | | |
| |||
801 | 819 | | |
802 | 820 | | |
803 | 821 | | |
804 | | - | |
805 | | - | |
806 | | - | |
807 | | - | |
| 822 | + | |
808 | 823 | | |
809 | 824 | | |
810 | 825 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
91 | 105 | | |
92 | 106 | | |
93 | 107 | | |
| |||
102 | 116 | | |
103 | 117 | | |
104 | 118 | | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
105 | 126 | | |
106 | 127 | | |
107 | 128 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
18 | 17 | | |
19 | 18 | | |
20 | 19 | | |
| |||
335 | 334 | | |
336 | 335 | | |
337 | 336 | | |
338 | | - | |
339 | | - | |
340 | | - | |
| 337 | + | |
| 338 | + | |
341 | 339 | | |
342 | 340 | | |
343 | 341 | | |
344 | 342 | | |
345 | | - | |
| 343 | + | |
346 | 344 | | |
347 | 345 | | |
348 | 346 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
289 | 289 | | |
290 | 290 | | |
291 | 291 | | |
292 | | - | |
| 292 | + | |
293 | 293 | | |
294 | | - | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
295 | 297 | | |
296 | 298 | | |
297 | 299 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1199 | 1199 | | |
1200 | 1200 | | |
1201 | 1201 | | |
1202 | | - | |
1203 | | - | |
| 1202 | + | |
| 1203 | + | |
| 1204 | + | |
1204 | 1205 | | |
1205 | 1206 | | |
1206 | 1207 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
839 | 839 | | |
840 | 840 | | |
841 | 841 | | |
842 | | - | |
| 842 | + | |
843 | 843 | | |
844 | 844 | | |
845 | 845 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
106 | | - | |
| 106 | + | |
107 | 107 | | |
108 | 108 | | |
109 | 109 | | |
| |||
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
136 | | - | |
| 136 | + | |
137 | 137 | | |
138 | | - | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
139 | 141 | | |
140 | 142 | | |
141 | 143 | | |
142 | | - | |
143 | | - | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
144 | 150 | | |
145 | 151 | | |
146 | | - | |
| 152 | + | |
147 | 153 | | |
148 | | - | |
| 154 | + | |
149 | 155 | | |
150 | 156 | | |
151 | | - | |
| 157 | + | |
152 | 158 | | |
153 | 159 | | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
154 | 163 | | |
155 | 164 | | |
156 | 165 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3300 | 3300 | | |
3301 | 3301 | | |
3302 | 3302 | | |
3303 | | - | |
| 3303 | + | |
3304 | 3304 | | |
3305 | 3305 | | |
3306 | 3306 | | |
3307 | 3307 | | |
3308 | 3308 | | |
| 3309 | + | |
| 3310 | + | |
3309 | 3311 | | |
3310 | 3312 | | |
3311 | 3313 | | |
3312 | | - | |
| 3314 | + | |
3313 | 3315 | | |
3314 | 3316 | | |
| 3317 | + | |
3315 | 3318 | | |
3316 | 3319 | | |
3317 | 3320 | | |
3318 | 3321 | | |
3319 | | - | |
| 3322 | + | |
3320 | 3323 | | |
3321 | 3324 | | |
3322 | 3325 | | |
| |||
3325 | 3328 | | |
3326 | 3329 | | |
3327 | 3330 | | |
| 3331 | + | |
| 3332 | + | |
| 3333 | + | |
3328 | 3334 | | |
3329 | 3335 | | |
3330 | 3336 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
765 | 765 | | |
766 | 766 | | |
767 | 767 | | |
768 | | - | |
| 768 | + | |
769 | 769 | | |
770 | 770 | | |
771 | 771 | | |
| |||
1184 | 1184 | | |
1185 | 1185 | | |
1186 | 1186 | | |
| 1187 | + | |
1187 | 1188 | | |
1188 | 1189 | | |
1189 | | - | |
1190 | | - | |
| 1190 | + | |
| 1191 | + | |
1191 | 1192 | | |
1192 | 1193 | | |
1193 | | - | |
| 1194 | + | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
| 1198 | + | |
1194 | 1199 | | |
1195 | 1200 | | |
| 1201 | + | |
1196 | 1202 | | |
1197 | 1203 | | |
1198 | | - | |
1199 | | - | |
1200 | | - | |
| 1204 | + | |
1201 | 1205 | | |
1202 | 1206 | | |
1203 | 1207 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1832 | 1832 | | |
1833 | 1833 | | |
1834 | 1834 | | |
| 1835 | + | |
1835 | 1836 | | |
1836 | 1837 | | |
1837 | 1838 | | |
| |||
0 commit comments