diff --git a/glean-core/bundle/src/lib.rs b/glean-core/bundle/src/lib.rs index 4186312f15..31c43475bd 100644 --- a/glean-core/bundle/src/lib.rs +++ b/glean-core/bundle/src/lib.rs @@ -3,3 +3,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ pub use glean_ffi; + +/// Workaround to force a re-export of the `no_mangle` symbols from `glean_ffi` +/// +/// Due to how linking works and hides symbols the symbols from `glean_ffi` might not be +/// re-exported and thus not usable. +/// By forcing use of _at least one_ symbol in an exported function the functions will also be +/// rexported. +/// This is only required for debug builds (and `debug_assertions` is the closest thing we have to +/// check that). +/// In release builds we rely on LTO builds to take care of it. +/// Our tests should ensure this actually happens. +/// +/// See https://github.com/rust-lang/rust/issues/50007 +#[cfg(debug_assertions)] +#[no_mangle] +pub extern "C" fn _glean_force_reexport_donotcall() { + glean_ffi::glean_enable_logging(); +}