e26fa54604
This removes the need to explicitly export all symbols. Generate helper exports similarly to what's currently done for Rust crates. These helpers are exclusively called from within Rust code and therefore can be treated similar as other Rust symbols. Signed-off-by: Gary Guo <gary@garyguo.net> Reviewed-by: Boqun Feng <boqun.feng@gmail.com> Tested-by: Boqun Feng <boqun.feng@gmail.com> Link: https://lore.kernel.org/r/20240817165302.3852499-1-gary@garyguo.net [ Fixed dependency path, reworded slightly, edited comment a bit and rebased on top of the changes made when applying Andreas' patch (e.g. no `README.md` anymore, so moved the edits). - Miguel ] Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
28 lines
901 B
C
28 lines
901 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* A hack to export Rust symbols for loadable modules without having to redo
|
|
* the entire `include/linux/export.h` logic in Rust.
|
|
*
|
|
* This requires the Rust's new/future `v0` mangling scheme because the default
|
|
* one ("legacy") uses invalid characters for C identifiers (thus we cannot use
|
|
* the `EXPORT_SYMBOL_*` macros).
|
|
*
|
|
* All symbols are exported as GPL-only to guarantee no GPL-only feature is
|
|
* accidentally exposed.
|
|
*/
|
|
|
|
#include <linux/export.h>
|
|
|
|
#define EXPORT_SYMBOL_RUST_GPL(sym) extern int sym; EXPORT_SYMBOL_GPL(sym)
|
|
|
|
#include "exports_core_generated.h"
|
|
#include "exports_alloc_generated.h"
|
|
#include "exports_helpers_generated.h"
|
|
#include "exports_bindings_generated.h"
|
|
#include "exports_kernel_generated.h"
|
|
|
|
// For modules using `rust/build_error.rs`.
|
|
#ifdef CONFIG_RUST_BUILD_ASSERT_ALLOW
|
|
EXPORT_SYMBOL_RUST_GPL(rust_build_error);
|
|
#endif
|