mirror of
https://github.com/rust-lang/rust.git
synced 2026-07-20 06:37:23 -04:00
c340e8a2ba
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.
125 lines
5.0 KiB
Plaintext
125 lines
5.0 KiB
Plaintext
error[E0539]: malformed `patchable_function_entry` attribute input
|
|
--> $DIR/patchable-function-entry-attribute.rs:4:1
|
|
|
|
|
LL | #[patchable_function_entry(prefix_nops = 256, entry_nops = 0)]
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---^^^^^^^^^^^^^^^^^^
|
|
| |
|
|
| expected an integer literal in the range of 0..=255
|
|
|
|
|
help: must be of the form
|
|
|
|
|
LL - #[patchable_function_entry(prefix_nops = 256, entry_nops = 0)]
|
|
LL + #[patchable_function_entry(prefix_nops = m, entry_nops = n, section = "section")]
|
|
|
|
|
|
|
error[E0539]: malformed `patchable_function_entry` attribute input
|
|
--> $DIR/patchable-function-entry-attribute.rs:8:1
|
|
|
|
|
LL | #[patchable_function_entry(prefix_nops = "stringvalue", entry_nops = 0)]
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-------------^^^^^^^^^^^^^^^^^^
|
|
| |
|
|
| expected an integer literal here
|
|
|
|
|
help: must be of the form
|
|
|
|
|
LL - #[patchable_function_entry(prefix_nops = "stringvalue", entry_nops = 0)]
|
|
LL + #[patchable_function_entry(prefix_nops = m, entry_nops = n, section = "section")]
|
|
|
|
|
|
|
error[E0539]: malformed `patchable_function_entry` attribute input
|
|
--> $DIR/patchable-function-entry-attribute.rs:12:1
|
|
|
|
|
LL | #[patchable_function_entry]
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected this to be a list
|
|
|
|
|
help: must be of the form
|
|
|
|
|
LL | #[patchable_function_entry(prefix_nops = m, entry_nops = n, section = "section")]
|
|
| ++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
error[E0539]: malformed `patchable_function_entry` attribute input
|
|
--> $DIR/patchable-function-entry-attribute.rs:16:1
|
|
|
|
|
LL | #[patchable_function_entry(prefix_nops = 10, something = 0)]
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---------^^^^^^
|
|
| |
|
|
| valid arguments are `prefix_nops` or `entry_nops`
|
|
|
|
|
help: must be of the form
|
|
|
|
|
LL - #[patchable_function_entry(prefix_nops = 10, something = 0)]
|
|
LL + #[patchable_function_entry(prefix_nops = m, entry_nops = n, section = "section")]
|
|
|
|
|
|
|
error[E0539]: malformed `patchable_function_entry` attribute input
|
|
--> $DIR/patchable-function-entry-attribute.rs:20:1
|
|
|
|
|
LL | #[patchable_function_entry()]
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^--^
|
|
| |
|
|
| expected at least 1 argument here
|
|
|
|
|
help: must be of the form
|
|
|
|
|
LL | #[patchable_function_entry(prefix_nops = m, entry_nops = n, section = "section")]
|
|
| ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
error[E0538]: malformed `patchable_function_entry` attribute input
|
|
--> $DIR/patchable-function-entry-attribute.rs:24:1
|
|
|
|
|
LL | #[patchable_function_entry(prefix_nops = 255, prefix_nops = 255)]
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----------^^^^^^^^
|
|
| |
|
|
| found `prefix_nops` used as a key more than once
|
|
|
|
|
help: must be of the form
|
|
|
|
|
LL - #[patchable_function_entry(prefix_nops = 255, prefix_nops = 255)]
|
|
LL + #[patchable_function_entry(prefix_nops = m, entry_nops = n, section = "section")]
|
|
|
|
|
|
|
error[E0539]: malformed `patchable_function_entry` attribute input
|
|
--> $DIR/patchable-function-entry-attribute.rs:28:1
|
|
|
|
|
LL | #[patchable_function_entry(section = 255)]
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---^^
|
|
| |
|
|
| expected a string literal here
|
|
|
|
|
help: must be of the form
|
|
|
|
|
LL - #[patchable_function_entry(section = 255)]
|
|
LL + #[patchable_function_entry(prefix_nops = m, entry_nops = n, section = "section")]
|
|
|
|
|
|
|
error[E0538]: malformed `patchable_function_entry` attribute input
|
|
--> $DIR/patchable-function-entry-attribute.rs:32:1
|
|
|
|
|
LL | #[patchable_function_entry(section = "foo", section = "bar")]
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-------^^^^^^^^^^
|
|
| |
|
|
| found `section` used as a key more than once
|
|
|
|
|
help: must be of the form
|
|
|
|
|
LL - #[patchable_function_entry(section = "foo", section = "bar")]
|
|
LL + #[patchable_function_entry(prefix_nops = m, entry_nops = n, section = "section")]
|
|
|
|
|
|
|
error[E0648]: `section` may not contain null characters
|
|
--> $DIR/patchable-function-entry-attribute.rs:36:38
|
|
|
|
|
LL | #[patchable_function_entry(section = "fo\0o")]
|
|
| ^^^^^^^
|
|
|
|
error: `section` may not be empty
|
|
--> $DIR/patchable-function-entry-attribute.rs:40:38
|
|
|
|
|
LL | #[patchable_function_entry(section = "")]
|
|
| ^^
|
|
|
|
error: aborting due to 10 previous errors
|
|
|
|
Some errors have detailed explanations: E0538, E0539, E0648.
|
|
For more information about an error, try `rustc --explain E0538`.
|