This repository was archived by the owner on Jan 24, 2022. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +12
-1
lines changed Expand file tree Collapse file tree 1 file changed +12
-1
lines changed Original file line number Diff line number Diff line change @@ -658,9 +658,18 @@ pub use macros::exception;
658658///
659659/// The function must have the signature of `unsafe fn()`.
660660///
661- /// The function passed will be called before static variables are initialized. Any access of static
661+ /// # Safety
662+ ///
663+ /// The function will be called before static variables are initialized. Any access of static
662664/// variables will result in undefined behavior.
663665///
666+ /// **Warning**: Due to [rvalue static promotion][rfc1414] static variables may be accessed whenever
667+ /// taking a reference to a constant. This means that even trivial expressions such as `&1` in the
668+ /// `#[pre_init]` function *or any code called by it* will cause **immediate undefined behavior**.
669+ ///
670+ /// Users are advised to only use the `#[pre_init]` feature when absolutely necessary as these
671+ /// constraints make safe usage difficult.
672+ ///
664673/// # Examples
665674///
666675/// ```
@@ -672,6 +681,8 @@ pub use macros::exception;
672681///
673682/// # fn main() {}
674683/// ```
684+ ///
685+ /// [rfc1414]: https://github.com/rust-lang/rfcs/blob/master/text/1414-rvalue_static_promotion.md
675686pub use macros:: pre_init;
676687
677688#[ export_name = "error: cortex-m-rt appears more than once in the dependency graph" ]
You can’t perform that action at this time.
0 commit comments