Skip to content

Commit 10a255a

Browse files
rebase
1 parent 8fcbaea commit 10a255a

File tree

5 files changed

+47
-29
lines changed

5 files changed

+47
-29
lines changed

Diff for: Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ members = [
3030
]
3131

3232
[dev-dependencies]
33-
no-panic = "0.1.8"
33+
no-panic = "0.1.15"
3434

3535
[build-dependencies]
36-
rand = { version = "0.6.5", optional = true }
36+
rand = { version = "0.8.3", optional = true }

Diff for: crates/libm-c-abi/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ panic = "abort"
1717

1818
[dependencies]
1919
libm = { path = "../.." }
20-
libc = {version="0.2", default-features=false}
20+
libc = { version = "0.2.94", default-features = false }

Diff for: crates/libm-c-abi/src/lib.rs

+19-3
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,44 @@
11
#![no_std]
22
#![feature(lang_items)]
3+
#![feature(core_intrinsics)]
4+
use core::intrinsics;
5+
use core::panic::PanicInfo;
36

47
mod lib_f32;
58
mod lib_f64;
69
mod lib_fenv;
710
mod lib_long_double;
811
mod musl_missing;
12+
mod new_lib;
913

1014
pub use lib_f32::*;
1115
pub use lib_f64::*;
1216
pub use lib_fenv::*;
1317
pub use lib_long_double::*;
1418

1519
pub use musl_missing::*;
20+
pub use new_lib::*;
1621

1722
#[no_mangle]
1823
pub static mut signgam: i32 = 0;
1924

20-
use core::panic::PanicInfo;
2125

2226
#[panic_handler]
23-
fn panic(_panic: &PanicInfo<'_>) -> ! {
24-
loop {}
27+
fn panic(_info: &PanicInfo) -> ! {
28+
intrinsics::abort()
29+
}
30+
31+
/*
32+
#[panic_handler]
33+
fn panic(_: &PanicInfo<'_>) -> ! {
34+
extern "Rust" {
35+
#[link_name = "\nerror(panic-never): your program contains at least one panicking branch"]
36+
fn undefined() -> !;
37+
}
38+
39+
unsafe { undefined() }
2540
}
41+
*/
2642

2743
#[lang = "eh_personality"]
2844
extern "C" fn eh_personality() {}

Diff for: crates/libm-c-abi/src/lib_f32.rs

-23
Original file line numberDiff line numberDiff line change
@@ -325,26 +325,3 @@ pub extern "C" fn remainderf(numer: c_float, denom: c_float) -> c_float {
325325
libm::remquof(numer, denom).0
326326
}
327327

328-
// todo : add a newlib test cfg feature flag?
329-
#[no_mangle]
330-
pub extern "C" fn __isfinitef(x: c_float) -> c_int {
331-
if (x as f32).is_finite() {
332-
1
333-
} else {
334-
0
335-
}
336-
}
337-
#[no_mangle]
338-
pub extern "C" fn __isnormalf(x: c_float) -> c_int {
339-
if (x as f32).is_normal() {
340-
1
341-
} else {
342-
0
343-
}
344-
}
345-
346-
#[no_mangle]
347-
pub extern "C" fn __fpclassifyf(_x: c_float) -> c_int {
348-
const FP_NORMAL: i32 = 0x4;
349-
FP_NORMAL
350-
}

Diff for: crates/libm-c-abi/src/new_lib.rs

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use libc::{c_float, c_int, c_long, c_longlong};
2+
3+
// todo : add a newlib test cfg feature flag?
4+
#[no_mangle]
5+
pub extern "C" fn __isfinitef(x: c_float) -> c_int {
6+
if (x as f32).is_finite() {
7+
1
8+
} else {
9+
0
10+
}
11+
}
12+
#[no_mangle]
13+
pub extern "C" fn __isnormalf(x: c_float) -> c_int {
14+
if (x as f32).is_normal() {
15+
1
16+
} else {
17+
0
18+
}
19+
}
20+
21+
#[no_mangle]
22+
pub extern "C" fn __fpclassifyf(_x: c_float) -> c_int {
23+
const FP_NORMAL: i32 = 0x4;
24+
FP_NORMAL
25+
}

0 commit comments

Comments
 (0)