run.sh 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. set -e
  2. # Test our implementation
  3. case $1 in
  4. thumb*)
  5. xargo build --target $1
  6. xargo build --target $1 --release
  7. ;;
  8. # QEMU crashes even when executing the simplest cross compiled C program:
  9. # `int main() { return 0; }`
  10. powerpc64le-unknown-linux-gnu)
  11. cargo test --target $1 --no-run
  12. cargo test --target $1 --no-run --release
  13. ;;
  14. *)
  15. cargo test --target $1
  16. cargo test --target $1 --release
  17. ;;
  18. esac
  19. # Verify that we haven't drop any intrinsic/symbol
  20. case $1 in
  21. thumb*)
  22. xargo build --features c --target $1 --bin intrinsics
  23. ;;
  24. *)
  25. cargo build --features c --target $1 --bin intrinsics
  26. ;;
  27. esac
  28. # Verify that there are no undefined symbols to `panic` within our implementations
  29. case $1 in
  30. thumb*)
  31. xargo rustc --features c --target $1 --bin intrinsics -- -C lto
  32. xargo rustc --features c --target $1 --bin intrinsics --release -- -C lto
  33. ;;
  34. *)
  35. cargo rustc --features c --target $1 --bin intrinsics -- -C lto
  36. cargo rustc --features c --target $1 --bin intrinsics --release -- -C lto
  37. ;;
  38. esac
  39. # Look out for duplicated symbols when we include the compiler-rt (C) implementation
  40. PREFIX=$(echo $1 | sed -e 's/unknown-//')-
  41. case $1 in
  42. armv7-*)
  43. PREFIX=arm-linux-gnueabihf-
  44. ;;
  45. thumb*)
  46. PREFIX=arm-none-eabi-
  47. ;;
  48. *86*-*)
  49. PREFIX=
  50. ;;
  51. esac
  52. case $TRAVIS_OS_NAME in
  53. osx)
  54. # NOTE OSx's nm doesn't accept the `--defined-only` or provide an equivalent.
  55. # Use GNU nm instead
  56. NM=gnm
  57. brew install binutils
  58. ;;
  59. *)
  60. NM=nm
  61. ;;
  62. esac
  63. # NOTE On i586, It's normal that the get_pc_thunk symbol appears several times so ignore it
  64. if [ $TRAVIS_OS_NAME = osx ]; then
  65. path=target/${1}/debug/librustc_builtins.rlib
  66. else
  67. path=/target/${1}/debug/librustc_builtins.rlib
  68. fi
  69. stdout=$($PREFIX$NM -g --defined-only $path)
  70. set +e
  71. echo "$stdout" | sort | uniq -d | grep -v __x86.get_pc_thunk | grep 'T __'
  72. if test $? = 0; then
  73. exit 1
  74. fi