Closed as not planned
Description
Under windows using #![feature(f128)] almost all of the f128 math functions cannot be compiled, it appears to be a linking error/missing symbols.
Normal math operations like add, sub, mul ect all compile and run fine but calling anything like .sin() or .gamma() or anything called under cmath will not compile. However, any of the math functions called as part of intrinsics do compile fine. This appears to be windows specific as the identical code compiles fine under wsl, both using latest rust nightly.
I have also tried using normal msvc linker link.exe and rust-lld.exe both with identical results, and also tested with gnu toolchain again with identical results.
#![feature(f128)]
fn main() {
let a: f128 = 5.7;
println!("f128 sin = {:#?}", (a.sin()));
}
PS C:\Users\levia\Documents\Code\f128stuff> cargo run --release
Compiling f128stuff v0.1.0 (C:\Users\levia\Documents\Code\f128stuff)
error: linking with `rust-lld` failed: exit code: 1
|
= note: "rust-lld" "-flavor" "link" "/NOLOGO" "C:\\Users\\levia\\AppData\\Local\\Temp\\rustcEK3Fy2\\symbols.o" "C:\\Users\\levia\\Documents\\Code\\f128stuff\\target\\release\\deps\\f128stuff.f128stuff.6f36ac2c2723ffe0-cgu.0.rcgu.o" "C:\\Users\\levia\\Documents\\Code\\f128stuff\\target\\release\\deps\\f128stuff.9j8x1nkqyt711ce2p3mysxkj3.rcgu.o" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-c09b6dac30a2ec7e.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-f2b3338f491e0297.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libwindows_targets-650a9189f256d76e.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-7ce081cb32ea6b96.rlib"
"C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_detect-f80ba4624fd5706a.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-6fe121940227f580.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-316118e870ffb802.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-af3779e04d2c5b3e.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcfg_if-d8b574f6478ea10a.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-8a746df5f193254d.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-5a536bba43fbe272.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-45b7a05b67ddb8c6.rlib" "C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-c25bba97e86b102c.rlib" "kernel32.lib" "kernel32.lib" "advapi32.lib" "ntdll.lib" "userenv.lib" "ws2_32.lib" "dbghelp.lib" "/defaultlib:msvcrt" "/NXCOMPAT" "/OUT:C:\\Users\\levia\\Documents\\Code\\f128stuff\\target\\release\\deps\\f128stuff.exe" "/OPT:REF,ICF" "/DEBUG" "/PDBALTPATH:%_PDB%" "/NATVIS:C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\Users\\levia\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libstd.natvis"
= note: rust-lld: error: undefined symbol: sinl␍
>>> referenced by C:\Users\levia\Documents\Code\f128stuff\target\release\deps\f128stuff.f128stuff.6f36ac2c2723ffe0-cgu.0.rcgu.o:(f128stuff::main::ha078482b952c8e41)␍
error: could not compile `f128stuff` (bin "f128stuff") due to 1 previous error
but exact same code under wsl:
zink@baph:/mnt/c/Users/levia/Documents/Code/f128stuff$ cargo run --release
Compiling f128stuff v0.1.0 (/mnt/c/Users/levia/Documents/Code/f128stuff)
Finished `release` profile [optimized] target(s) in 0.64s
Running `target/release/f128stuff`
f128 sin = 0xbffe19f37497ac7a1a58c25c354ac88a
zink@baph:/mnt/c/Users/levia/Documents/Code/f128stuff$