Commit Graph

138 Commits

Author SHA1 Message Date
Jorge Aparicio 96ddd4ed8d use test::black_box instead of ptr::*_volatile
both prevent LLVM from optimizing away the intrinsics but the former
doesn't produce an `intrinsics` binary that segfaults
2016-10-07 18:26:21 -05:00
Jorge Aparicio c82403551d fix unsafe warnings 2016-10-07 18:19:40 -05:00
Jorge Aparicio fd69beba29 get profile.dev (-debug-assertions) + LTO working 2016-10-07 18:19:40 -05:00
Jorge Aparicio a2ffc799d0 check that we don't have any call to panic in our implementations 2016-10-07 18:19:40 -05:00
Jorge Aparicio 24c2a15f3d fix path to .rlib on OSX 2016-10-07 15:03:22 -05:00
Jorge Aparicio 213d929f86 drop the target files 2016-10-06 23:20:09 -05:00
Jorge Aparicio 8a32bd3424 fix duplicate symbol test 2016-10-03 20:20:23 -05:00
Jorge Aparicio 0827f8c7f1 hide the thumbv* target files
due to how Cargo works, the rustc-cfg in build.rs was picking our target
specifications rather than the one the user meant to use. Placing our
target files in any place other than the root of the Cargo project
avoids the issue.
2016-10-02 19:23:54 -05:00
Jorge Aparicio 89ebc46f37 pick target during Xargo installation 2016-09-30 20:41:59 -05:00
Jorge Aparicio d0a57cb871 give Xargo a $HOME 2016-09-30 20:21:15 -05:00
Jorge Aparicio fb5cb0e4c1 fix Xargo installation 2016-09-30 20:20:15 -05:00
Jorge Aparicio 36a437a445 fix nm call
the prefix was missing a '-', i.e. arm-linux-gnueabinm was being called.
This also sets -e in run.sh to catch this sort of errors.
2016-09-30 19:04:48 -05:00
Jorge Aparicio b60d2515ff use `docker run --user` instead of manually creating a user 2016-09-30 18:37:41 -05:00
Jorge Aparicio 43e019dfc4 cache Cargo artifacts
notable changes in the docker-based testing infrastructure

- the docker containers can now modify $CARGO_HOME, to re-use the outer
  Cargo registry, and the target directory to re-use build artifacts.

- the docker containers are removed when their execution finishes
  because it's no longer necessary to re-start them to inspect them
  because all the interesting output is in the outer target directory
2016-09-30 17:39:36 -05:00
Jorge Aparicio cab88e6133 only x86-ish targets can use an unprefixed nm 2016-09-30 13:57:06 -05:00
Jorge Aparicio 62258b5188 ignore duplicated get_pc_thunk symbols 2016-09-29 19:20:34 -05:00
Jorge Aparicio b5797dc2a2 adapt to new testing infrastructure 2016-09-29 18:50:04 -05:00
Alex Crichton 8e161a791a Expand and refactor teting infrastructure
This commit moves over most of the testing infrastructure to in-tree docker
images that are all dispatched to from Travis (no other test configuration).
This allows versioning modifications to the test infrastructure as well as the
code itself. Additionally separate docker images allows for easy modification of
one without worrying about tampering of others as well as easy addition of new
targets by simply adding a new `Dockerfile`.

Additionally this commit bundles the master version of the `compiler-rt` source
repository from `llvm-mirror/compiler-rt` to test against. The compiler-rt
library itself is compiled as a `cdylib` which is then dynamically located at
runtime and we look for symbols in. There's a few hoops here, but they currently
get the job done.

All tests now execute against both gcc_s and compiler-rt, and this
testing strategy is now all hidden behind a macro as well (refactoring
all existing tests along the way).
2016-09-28 22:09:55 -07:00
Jorge Aparicio b7fa7d3a59 put weak mem* symbols behind an opt-in Cargo feature
closes #64
cc #66
2016-09-22 18:02:25 -05:00
Jorge Aparicio 0404438809 test the thumbv7em-none-eabihf target 2016-09-22 06:15:05 -05:00
Jorge Aparicio 170a977587 tell cargo which linker to use 2016-08-29 21:35:53 -05:00
Jorge Aparicio f0b6314737 install less stuff
it's already installed in the docker image
2016-08-29 21:25:23 -05:00
Jorge Aparicio 9b47cff39b travis: use latest docker image 2016-08-29 21:21:59 -05:00
Jorge Aparicio bc8f572c9f pin xargo and gist versions 2016-08-29 20:37:41 -05:00
Jorge Aparicio 2f41babd74 fix typo 2016-08-29 20:36:52 -05:00
Jorge Aparicio 1ac627839d travis: simplify ci scripts 2016-08-29 19:31:49 -05:00
Jorge Aparicio 948ada48b5 print rustup version 2016-08-27 12:34:39 -05:00
Jorge Aparicio 2a8b2c25a4 use newer docker image
it comes with ruby pre-installed
2016-08-23 21:19:18 -05:00
Jorge Aparicio 51aabf3c32 use the gist gem instead of the gist crate
hopefully this will work on osx and will make everything more
uniform (appveyor is already using the gem instead of the crate)

closes #51
2016-08-23 20:48:24 -05:00
Jorge Aparicio 316f5cb9ba use the gist crate
but not on OSX because it doesn't work there

closes #53
cc #51
2016-08-22 21:22:16 -05:00
Matt Ickstadt 27cbb963a3 travis: Use wgetpaste to post disassemblies to gist 2016-08-22 17:49:39 -05:00
Jorge Aparicio 10fdc9b535 only show disassembly of optimized build
we can't really compare the disassembly of the debug build to
libcompiler-rt.a anyways
2016-08-21 11:09:32 -05:00
Jorge Aparicio 94ab3e09c5 adjust test: weak symbols are now in librlibc.rlib 2016-08-15 20:22:58 -05:00
Jorge Aparicio 5abf6b5d7c check presence of weak symbols 2016-08-14 22:02:43 -05:00
Jorge Aparicio 95651f62a9 disable tests for ppc64le, drop logic around QEMU_ARCH 2016-08-13 19:56:34 -05:00
Jorge Aparicio 9bee966c00 add missing apt-get update 2016-08-13 19:30:30 -05:00
Jorge Aparicio c34b356c44 try 32-bit qemu for ppc64le 2016-08-13 18:58:41 -05:00
Jorge Aparicio b5b28c02ba qemu-ppc64le still doesn't work 2016-08-13 18:33:40 -05:00
Jorge Aparicio 9c651118fe enable tests for ppc64le 2016-08-13 18:00:49 -05:00
Jorge Aparicio a2135c1a5c no need to explicitly call qemu-$ARCH 2016-08-13 17:45:43 -05:00
Jorge Aparicio 480bbec3cd don't call docker inside docker 2016-08-13 17:36:00 -05:00
Jorge Aparicio aa9a282c61 actually enter docker 2016-08-13 17:27:18 -05:00
Jorge Aparicio c277cc67be fix bash syntax 2016-08-13 17:24:52 -05:00
Jorge Aparicio 0c2ef10160 CI: run all Linux targets inside docker 2016-08-13 17:22:12 -05:00
Jorge Aparicio 11cd95f25d install libssh2 2016-08-13 12:58:44 -05:00
Jorge Aparicio 2f9c64a577 change Xargo installation path 2016-08-13 12:55:09 -05:00
Jorge Aparicio 164b21991c binutils -> gcc 2016-08-13 12:47:59 -05:00
Jorge Aparicio 10ea089eb2 no rust-std for these targets 2016-08-13 12:45:37 -05:00
Jorge Aparicio e7b10e53ac install binutils manually 2016-08-13 12:41:50 -05:00
Jorge Aparicio ba3bb2952f CI: test ARM Cortex targets
closes #32
2016-08-13 12:12:37 -05:00
Jorge Aparicio 39ede7ee27 and libc6-dev 2016-08-11 00:26:16 -05:00
Jorge Aparicio 732f1e20af some targets need gcc to be installed 2016-08-11 00:26:16 -05:00
Jorge Aparicio c6f0124540 ppc64: test on 32-bit QEMU 2016-08-10 13:01:22 -05:00
Jorge Aparicio 67ed0e4553 mips: run test on 32-bit QEMU
cc #2
2016-08-10 11:50:41 -05:00
Jorge Aparicio 93d2342318 libgcc_s dev version 2016-08-09 16:17:06 -05:00
Jorge Aparicio b409422782 32-bit version of libgcc 2016-08-09 15:55:25 -05:00
Jorge Aparicio aeb057cc57 add libgcc 2016-08-09 15:46:57 -05:00
Jorge Aparicio 8c029ed1b4 use docker 2016-08-09 15:37:24 -05:00
Jorge Aparicio ff334e9b89 fix bash syntax 2016-08-09 12:04:24 -05:00
Jorge Aparicio d13ff6d710 fix armv7 2016-08-09 11:53:49 -05:00
Jorge Aparicio 09935e24eb don't run tests on targets that have QEMU issues
cc #2
2016-08-09 11:49:55 -05:00
Jorge Aparicio a4f06b9a8e CI: test mipsel-unknown-linux-gnu 2016-08-08 23:26:13 -05:00
Jorge Aparicio 0c7f25bdbd CI: test powerpc64-unknown-linux-gnu 2016-08-08 23:05:25 -05:00
Jorge Aparicio ed068e6728 fix case syntax 2016-08-08 22:31:14 -05:00
Jorge Aparicio edbde8c2ea CI: test mips-unknown-linux-gnu 2016-08-08 22:03:44 -05:00
Jorge Aparicio 2485284910 fix target name in case 2016-08-08 21:49:31 -05:00
Jorge Aparicio 4b07c4bfb9 fix package name 2016-08-08 21:46:24 -05:00
Jorge Aparicio e7c9550447 no sudo 2016-08-08 21:43:01 -05:00
Jorge Aparicio b47fcb8a24 fix installation of c toolchain 2016-08-08 21:37:48 -05:00
Jorge Aparicio a4077112be apt-get update 2016-08-08 21:32:12 -05:00
Jorge Aparicio 4b453fbd0a really install curl inside docker 2016-08-08 21:27:08 -05:00
Jorge Aparicio a633b0cba3 install curl inside docker 2016-08-08 21:20:46 -05:00
Jorge Aparicio 66d3efdce3 don't skip install phase inside docker 2016-08-08 21:14:04 -05:00
Jorge Aparicio cc0f2acf76 set PATH inside docker 2016-08-08 21:02:07 -05:00
Jorge Aparicio 95eb812d38 don't recursively call docker 2016-08-08 20:56:05 -05:00
Jorge Aparicio d9deff7103 install toolchain in docker 2016-08-08 20:41:08 -05:00
Jorge Aparicio 8f85ab545d run in xenial (docker) 2016-08-08 20:37:04 -05:00
Jorge Aparicio 6c835ef73e explicitly use qemu-ppc64le 2016-08-08 20:04:17 -05:00
Jorge Aparicio 7e29b4a15f CI: test powerpc64le-unknown-linux-gnu 2016-08-08 19:44:55 -05:00
Jorge Aparicio 8c9173e770 CI: test powerpc-unknown-linux-gnu 2016-08-08 19:31:37 -05:00
Jorge Aparicio 0cc4667719 macOS: actually install binutils 2016-08-07 17:32:53 -05:00
Jorge Aparicio c7c04f8c48 macOS: use gnu binutils 2016-08-07 17:29:31 -05:00
Jorge Aparicio fda97847bb macOS: install binutils 2016-08-07 17:23:30 -05:00
Jorge Aparicio 994c5a2a01 nm: drop --defined-only flag
it doesn't work on macOS
2016-08-07 17:18:37 -05:00
Jorge Aparicio a16950e580 ignore objdump exit code 2016-08-07 17:14:30 -05:00
Jorge Aparicio 1c98c8238a fix objdump commands 2016-08-07 17:07:58 -05:00
Jorge Aparicio a1334edbcd swap install.sh and script.sh 2016-08-07 17:03:44 -05:00
Jorge Aparicio b1846b794b travis CI 2016-08-07 16:55:30 -05:00