Use `nm` to weed out panics
This commit is contained in:
parent
5a444d58f2
commit
a16ebb0dcb
13
ci/run.sh
13
ci/run.sh
|
@ -63,7 +63,6 @@ case $1 in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Look out for duplicated symbols when we include the compiler-rt (C) implementation
|
|
||||||
PREFIX=$(echo $1 | sed -e 's/unknown-//')-
|
PREFIX=$(echo $1 | sed -e 's/unknown-//')-
|
||||||
case $1 in
|
case $1 in
|
||||||
armv7-*)
|
armv7-*)
|
||||||
|
@ -95,6 +94,7 @@ else
|
||||||
path=/target/${1}/debug/deps/libcompiler_builtins-*.rlib
|
path=/target/${1}/debug/deps/libcompiler_builtins-*.rlib
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Look out for duplicated symbols when we include the compiler-rt (C) implementation
|
||||||
for rlib in $(echo $path); do
|
for rlib in $(echo $path); do
|
||||||
set +x
|
set +x
|
||||||
stdout=$($PREFIX$NM -g --defined-only $rlib 2>&1)
|
stdout=$($PREFIX$NM -g --defined-only $rlib 2>&1)
|
||||||
|
@ -109,4 +109,15 @@ for rlib in $(echo $path); do
|
||||||
set -ex
|
set -ex
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Ensure no references to a panicking function
|
||||||
|
for rlib in $(echo $path); do
|
||||||
|
set +x
|
||||||
|
$PREFIX$NM -u $rlib 2>&1 | grep panicking
|
||||||
|
|
||||||
|
if test $? = 0; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
set -ex
|
||||||
|
done
|
||||||
|
|
||||||
true
|
true
|
||||||
|
|
|
@ -78,6 +78,7 @@ intrinsics! {
|
||||||
int_to_float!(i, i32, f64)
|
int_to_float!(i, i32, f64)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[use_c_shim_if(any(target_arch = "x86", target_arch = "x86_64"))]
|
||||||
pub extern "C" fn __floatdidf(i: i64) -> f64 {
|
pub extern "C" fn __floatdidf(i: i64) -> f64 {
|
||||||
int_to_float!(i, i64, f64)
|
int_to_float!(i, i64, f64)
|
||||||
}
|
}
|
||||||
|
@ -100,6 +101,7 @@ intrinsics! {
|
||||||
int_to_float!(i, u32, f64)
|
int_to_float!(i, u32, f64)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[use_c_shim_if(any(target_arch = "x86", target_arch = "x86_64"))]
|
||||||
pub extern "C" fn __floatundidf(i: u64) -> f64 {
|
pub extern "C" fn __floatundidf(i: u64) -> f64 {
|
||||||
int_to_float!(i, u64, f64)
|
int_to_float!(i, u64, f64)
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,11 +54,11 @@ trait Mulo: Int + ops::Neg<Output = Self> {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if sa == sb {
|
if sa == sb {
|
||||||
if abs_a > Self::max_value() / abs_b {
|
if abs_a > Self::max_value().checked_div(abs_b).unwrap_or_else(|| ::abort()) {
|
||||||
*overflow = 1;
|
*overflow = 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if abs_a > Self::min_value() / -abs_b {
|
if abs_a > Self::min_value().checked_div(-abs_b).unwrap_or_else(|| ::abort()) {
|
||||||
*overflow = 1;
|
*overflow = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue