3992ed1e7a
- add #[no_mangle] to the panic_fmt lang item to adjust to changes in the visibility algorithm - adjust to changes in the layout of Cargo's target directory - use a newer Xargo to reduce the build time of the sysroot (only core is compiled as part of the sysroot now)
83 lines
2.2 KiB
Bash
Executable File
83 lines
2.2 KiB
Bash
Executable File
set -ex
|
|
|
|
# Test our implementation
|
|
case $1 in
|
|
thumb*)
|
|
xargo build --target $1
|
|
xargo build --target $1 --release
|
|
;;
|
|
*)
|
|
cargo test --no-default-features --target $1
|
|
cargo test --no-default-features --target $1 --release
|
|
;;
|
|
esac
|
|
|
|
# Verify that we haven't drop any intrinsic/symbol
|
|
case $1 in
|
|
thumb*)
|
|
xargo build --features c --target $1 --bin intrinsics
|
|
;;
|
|
*)
|
|
cargo build --no-default-features --features c --target $1 --bin intrinsics
|
|
;;
|
|
esac
|
|
|
|
# Verify that there are no undefined symbols to `panic` within our implementations
|
|
# TODO(#79) fix the undefined references problem for debug-assertions+lto
|
|
case $1 in
|
|
thumb*)
|
|
RUSTFLAGS="-C debug-assertions=no" xargo rustc --no-default-features --features c --target $1 --bin intrinsics -- -C lto -C link-arg=-nostartfiles
|
|
xargo rustc --no-default-features --features c --target $1 --bin intrinsics --release -- -C lto
|
|
;;
|
|
*)
|
|
RUSTFLAGS="-C debug-assertions=no" cargo rustc --no-default-features --features c --target $1 --bin intrinsics -- -C lto
|
|
cargo rustc --no-default-features --features c --target $1 --bin intrinsics --release -- -C lto
|
|
;;
|
|
esac
|
|
|
|
# Look out for duplicated symbols when we include the compiler-rt (C) implementation
|
|
PREFIX=$(echo $1 | sed -e 's/unknown-//')-
|
|
case $1 in
|
|
armv7-*)
|
|
PREFIX=arm-linux-gnueabihf-
|
|
;;
|
|
thumb*)
|
|
PREFIX=arm-none-eabi-
|
|
;;
|
|
*86*-*)
|
|
PREFIX=
|
|
;;
|
|
esac
|
|
|
|
case $TRAVIS_OS_NAME in
|
|
osx)
|
|
# NOTE OSx's nm doesn't accept the `--defined-only` or provide an equivalent.
|
|
# Use GNU nm instead
|
|
NM=gnm
|
|
brew install binutils
|
|
;;
|
|
*)
|
|
NM=nm
|
|
;;
|
|
esac
|
|
|
|
if [ $TRAVIS_OS_NAME = osx ]; then
|
|
path=target/${1}/debug/deps/libcompiler_builtins-*.rlib
|
|
else
|
|
path=/target/${1}/debug/deps/libcompiler_builtins-*.rlib
|
|
fi
|
|
|
|
for rlib in $(echo $path); do
|
|
stdout=$($PREFIX$NM -g --defined-only $rlib)
|
|
|
|
# NOTE On i586, It's normal that the get_pc_thunk symbol appears several times so ignore it
|
|
set +e
|
|
echo "$stdout" | sort | uniq -d | grep -v __x86.get_pc_thunk | grep 'T __'
|
|
|
|
if test $? = 0; then
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
true
|