Messages in this thread | | | Date | Sun, 30 Jul 2023 12:04:55 -0300 | Subject | Re: [PATCH 2/2] rust: enable `no_mangle_with_rust_abi` Clippy lint | From | Martin Rodriguez Reboredo <> |
| |
On 7/29/23 19:03, Miguel Ojeda wrote: > Introduced in Rust 1.69.0 [1], this lint prevents forgetting to set > the C ABI when using `#[no_mangle]` (or thinking it is implied). > > For instance, it would have prevented the issue [2] fixed by commit > c682e4c37d2b ("rust: kernel: Mark rust_fmt_argument as extern "C""). > > error: `#[no_mangle]` set on a function with the default (`Rust`) ABI > --> rust/kernel/print.rs:21:1 > | > 21 | / unsafe fn rust_fmt_argument( > 22 | | buf: *mut c_char, > 23 | | end: *mut c_char, > 24 | | ptr: *const c_void, > 25 | | ) -> *mut c_char { > | |________________^ > | > = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_mangle_with_rust_abi > = note: requested on the command line with `-D clippy::no-mangle-with-rust-abi` > help: set an ABI > | > 21 | unsafe extern "C" fn rust_fmt_argument( > | ++++++++++ > help: or explicitly set the default > | > 21 | unsafe extern "Rust" fn rust_fmt_argument( > | +++++++++++++ > > Thus enable it. > > In rare cases, we may need to use the Rust ABI even with `#[no_mangle]` > (e.g. one case, before 1.71.0, would have been the `__rust_*` > functions). In those cases, we would need to `#[allow(...)]` the lint, > since using `extern "Rust"` explicitly (as the compiler suggests) > currently gets overwritten by `rustfmt` [3]. > > Link: https://github.com/rust-lang/rust-clippy/issues/10347 [1] > Link: https://github.com/Rust-for-Linux/linux/pull/967 [2] > Link: https://github.com/rust-lang/rustfmt/issues/5701 [3] > Signed-off-by: Miguel Ojeda <ojeda@kernel.org> > --- > [...] Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
| |