diff --git a/Cargo.toml b/Cargo.toml index 23b9282..fe76168 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,10 +5,5 @@ version = "0.1.0" license = "MIT/Apache 2.0" edition = "2018" -[lib] -name = "linker_fix_3ds" -path = "src/lib.rs" -crate-type = ["staticlib", "lib"] - -[dependencies.libc] -git = "https://github.com/Meziu/libc.git" +[dependencies] +libc = { git = "https://github.com/Meziu/libc.git" } diff --git a/src/lib.rs b/src/lib.rs index 9ab24b7..393a7aa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,19 +1,30 @@ +#![no_std] + extern crate libc; +/// Call this somewhere to force Rust to link this module. +/// The call doesn't need to execute, just exist. +/// +/// See https://github.com/rust-lang/rust/issues/47384 +pub fn init() {} + #[no_mangle] -extern "C" fn posix_memalign(memptr: *mut *mut libc::c_void, align: libc::size_t, size: libc::size_t) -> libc::c_int { +extern "C" fn posix_memalign( + memptr: *mut *mut libc::c_void, + align: libc::size_t, + size: libc::size_t, +) -> libc::c_int { unsafe { *memptr = libc::memalign(align, size); } - + 0 } - #[no_mangle] unsafe extern "C" fn realpath( - path: *const libc::c_char, - resolved_path: *mut libc::c_char + path: *const libc::c_char, + resolved_path: *mut libc::c_char, ) -> *mut libc::c_char { libc::memcpy(resolved_path as _, path as _, libc::strlen(path));