diff --git a/builtins-test-intrinsics/src/main.rs b/builtins-test-intrinsics/src/main.rs index 21d0a083..a4fbfa0b 100644 --- a/builtins-test-intrinsics/src/main.rs +++ b/builtins-test-intrinsics/src/main.rs @@ -13,6 +13,8 @@ #![no_std] #![no_main] +// Ensure this `compiler_builtins` gets used, rather than the version injected from the sysroot. +extern crate compiler_builtins; extern crate panic_handler; #[cfg(all(not(thumb), not(windows), not(target_arch = "wasm32")))] @@ -592,7 +594,8 @@ fn run() { bb(floatunsitf(bb(2))); bb(floatuntidf(bb(2))); bb(floatuntisf(bb(2))); - #[cfg(f128_enabled)] + // FIXME(windows): segfault on Windows + #[cfg(all(f128_enabled, not(windows)))] bb(floatuntitf(bb(2))); #[cfg(f128_enabled)] bb(gttf(bb(2.), bb(2.))); @@ -650,14 +653,14 @@ fn something_with_a_dtor(f: &dyn Fn()) { #[no_mangle] #[cfg(not(thumb))] -fn main(_argc: core::ffi::c_int, _argv: *const *const u8) -> core::ffi::c_int { +extern "C" fn main(_argc: core::ffi::c_int, _argv: *const *const u8) -> core::ffi::c_int { run(); 0 } #[no_mangle] #[cfg(thumb)] -pub fn _start() -> ! { +extern "C" fn _start() -> ! { run(); loop {} } diff --git a/ci/run.sh b/ci/run.sh index 9abbf25a..2d22a298 100755 --- a/ci/run.sh +++ b/ci/run.sh @@ -120,15 +120,21 @@ done rm -f "${rlib_paths[@]}" -build_intrinsics_test() { - cargo build --target "$target" -v --package builtins-test-intrinsics "$@" +run_intrinsics_test() { + if [ "${NO_STD:-}" = "1" ]; then + cmd=build + else + cmd=run + fi + + cargo "$cmd" --target "$target" -v --package builtins-test-intrinsics "$@" } # Verify that we haven't dropped any intrinsics/symbols -build_intrinsics_test -build_intrinsics_test --release -build_intrinsics_test --features c -build_intrinsics_test --features c --release +run_intrinsics_test +run_intrinsics_test --release +run_intrinsics_test --features c +run_intrinsics_test --features c --release # Verify that there are no undefined symbols to `panic` within our # implementations