Commit Graph

142 Commits

Author SHA1 Message Date
Alex Crichton
cf98161da7 Remove the need for #[cfg] in #[use_c_shim_if]
This commit tweaks the implementation of the synthetic
`#[use_c_shim_if]` attribute, renaming it to
`#[maybe_use_optimized_c_shim]` in the process. This no longer requires
specifying a `#[cfg]` clause indicating when the optimized intrinsic
should be used, but rather this is inferred and printed from the build
script.

The build script will now print out appropriate `#[cfg]` directives for
rustc to indicate what intrinsics it's compiling. This should remove the
need for us to keep the build script and the source in sync, but rather
the build script can simply take care of everything.
2019-05-15 12:59:31 -07:00
Alex Crichton
8521530f49 Fix __divsi3 and __udivsi3 on thumbv6m targets
This commit fixes a bug accidentally introduced in #285 where some
lingering references remained to `#[cfg(thumbv6m)]` but this, since the
historical revert, was renamed to `#[cfg(thumb_1)]`. This caused on the
thumbv6m platform for the intrinsics to be accidentally omitted because
the build script didn't actually compile them but the Rust code thought
the C code was in use.

After correcting the `#[cfg]` statements the CI configuration for the
`thumb*` family of targets was all updated. The support for xargo
testing was removed from `run.sh` since it had long since bitrotted, and
the script was updated to simply build the intrinsics example to attempt
to link for each of these targets. This in turn exposed the bug locally
and allowed to confirm a fix once the `#[cfg]` statements were
corrected.

cc rust-lang/rust#60782
2019-05-14 12:26:09 -07:00
Alex Crichton
4addb9bab9
Merge pull request #286 from alexcrichton/fix-dupe
Fix duplicate symbol __clzsi2
2019-05-02 17:17:52 -05:00
Alex Crichton
752e35a11f Fix duplicate symbol __clzsi2
Looks like our tests weren't quite testing compiler-builtins when it was
compiled with unmangled symbols, so update the tests to catch this and
then fix the compilation of the `__clzsi2` intrinsic to use the C
version if it's compiled.
2019-05-02 13:35:50 -07:00
Alex Crichton
4bbc838ac7 Revert "Use the Rust implementation of udivsi3 on ARM"
This reverts commit 681aaa914d.
2019-05-02 12:49:19 -07:00
Alex Crichton
ca03cf138a Try to fix Windows 2019-04-02 12:12:29 -07:00
Alex Crichton
c880d1ca06 Try to handle thumb targets and xargo 2019-04-02 11:54:20 -07:00
Alex Crichton
89f2b5a8bd Generate a lock file before using Docker
Can't do it in the readonly filesystem inside!
2019-04-02 09:53:05 -07:00
Alex Crichton
aa5ff95d7e Don't pass -it to docker 2019-04-02 09:35:47 -07:00
Alex Crichton
87154a3e7d Upgrade all docker containers to 18.04 2019-04-02 08:39:19 -07:00
Alex Crichton
8e2f43e400 Expand Azure Pipelines configuration 2019-04-02 08:37:06 -07:00
Alex Crichton
19a2b4fe07 Configure Azure Pipelines 2019-04-02 08:24:11 -07:00
Alex Crichton
ef099c7994 Add sample azure pipelines configuration 2019-04-02 07:57:02 -07:00
Alex Crichton
2da5d40e84 Use nm on OSX
Looks like it may be fixed now?
2018-11-21 10:48:58 -08:00
Paolo Teti
9e99aa2bbe Remove no_std features
Everything default unconditionally to #![no_std].
2018-02-25 09:19:34 +01:00
Paolo Teti
7b81af044e Keep mangled-names as a default feature 2018-02-25 01:11:49 +01:00
Paolo Teti
7f92a8ee7b Fix CI for thumb* targets
Main fix is inside 'utest' all the rest are minor fixes due to the
new 'testcrate'.

Still allow failures on TravisCI for a while.
2018-02-18 18:15:57 +01:00
Alex Crichton
2a13475197 Simplify how testing is done
All tests are moved to a separate crate in this repository to enable features by
default. Additionally the test generation is moved to a seprate build script and
simplified to reduce the amount of boilerplate needed per test.

Overall this should still be testing everything, just in a different location!
2018-01-31 11:32:20 -08:00
Alex Crichton
cc9a70f61c Work around japaric/xargo#186 temporarily 2017-12-26 12:20:17 -08:00
Alex Crichton
a076c9aaa7 Disable incremental + LTO
This causes errors in more recent versions of rustc
2017-12-26 10:14:11 -08:00
Alex Crichton
46fbf3a565 Work around OSX on Travis 2017-11-02 11:14:05 -07:00
Jorge Aparicio
2446cc468f drop binfmt_misc dependency
Instead use the Cargo runner feature. The binfmt_misc approach requires running a privileged
container for setup. Not all docker setups support privileged containers so the test suite should be
more accessible with this change as no privileged container is needed.
2017-10-07 22:19:37 +02:00
Alex Crichton
91eaa85902 Don't mangle probes all the time 2017-07-07 20:35:14 -07:00
Jorge Aparicio
f3350c5499 enable tests now that #150 has been fixed 2017-06-27 22:48:57 -05:00
Alex Crichton
0ebbcaede4 Enable the intrinsics program on thumb 2017-06-25 10:09:50 -07:00
Alex Crichton
c193113721 Don't test mangled names on thumb
We are both the "real compiler-rt" and the "to be tested one".
2017-06-24 12:54:35 -07:00
Alex Crichton
acaa2f071a Don't check for references to panics with debug assertions 2017-06-24 11:44:50 -07:00
Alex Crichton
91b1291dc5 Don't try to work with cargo test 2017-06-24 10:22:49 -07:00
Alex Crichton
5d6d3fde6a Add a FIXME for Windows 2017-06-24 10:12:17 -07:00
Alex Crichton
734ec3d31c Tweak testing and such:
* Don't run `intrinsics` tests on thumb
* Disable `compiler_builtins` attribute on `feature = "gen-tests"`
* Disable mangling on `feature = "gen-tests"` instead of `cfg(test)`
2017-06-24 10:10:04 -07:00
Alex Crichton
5e28b7e2b1 Try to fix run.sh on AppVeyor 2017-06-23 21:36:36 -07:00
Alex Crichton
a2bdb4b379 Use the same CI script on AppVeyor 2017-06-23 21:23:52 -07:00
Alex Crichton
7de57cd4f9 Handle aeabi aliasing
Objects in compiler-rt may have two symbols, so this makes sure that we don't
bring in those objects by accident by defining the aliases ourselves.
2017-06-23 15:55:11 -07:00
Alex Crichton
a16ebb0dcb Use nm to weed out panics 2017-06-23 11:52:22 -07:00
Alex Crichton
560018cc83 Less verbose output on symbol check 2017-06-23 10:44:29 -07:00
Alex Crichton
696b821bb7 Enable mem for intrinsics on linux 2017-06-23 09:59:49 -07:00
Alex Crichton
0be8b20cb7 Fix features needed for the intrinsics example 2017-06-23 08:35:24 -07:00
Alex Crichton
4540bd4314 Fix travis intrinsics builds 2017-06-23 08:19:11 -07:00
Alex Crichton
f0e58591b3 Build the intrinsics example separately 2017-06-23 07:01:18 -07:00
Alex Crichton
a1377878c6 Test with the 'c' feature enabled on CI 2017-06-22 14:32:16 -07:00
Jorge Aparicio
19b2efdf36 move intrinsics test from src/bin to examples
with this change the libc crate is not required when calling `cargo build -p
compiler-builtins`
2017-04-11 17:09:05 -05:00
Jorge Aparicio
55294baf7a put test generation behind a Cargo feature
to reduce build time for the most common case of not running tests
2017-04-10 17:27:25 -05:00
Jorge Aparicio
3f723d1141 modify the CI setup to run tests on the thumb targets 2017-04-10 17:16:13 -05:00
Jorge Aparicio
3992ed1e7a CI: use a recent nightly
- 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)
2016-12-31 10:04:40 -05:00
bors
70009a311c Auto merge of #124 - japaric:rustbuild, r=alexcrichton
by default, mark this crate as the #![compiler_builtins] crate

as this is how most users will want to use this crate

r? @alexcrichton
2016-12-13 00:02:56 +00:00
Jorge Aparicio
3484b2b68e by default, mark this crate as the #![compiler_builtins] crate
as this is how most users will want to use this crate
2016-12-11 16:18:43 -05:00
Jorge Aparicio
c1ef69f2a0 fix the test suite for the thumb targets 2016-12-11 11:18:48 -05:00
Jorge Aparicio
5c0e0f2070 CI: use Xargo 0.2.x
this version uses the rust-src component that rustup installs instead
of fetching the source tarball from static.r-l.o, which sometimes went
wrong due to the fallible logic that Xargo 0.1.x used
2016-11-23 12:47:42 -05:00
Jorge Aparicio
e2fc5a0771 merge apt-get commands 2016-11-12 17:36:59 -05:00
Matt Ickstadt
2a8cca03d8 Fix apt 404s in Docker
`apt update` and `apt install` should be in the same Docker RUN statement, otherwise `apt update` will be cached and `apt install` will 404 if a package no longer exists.
2016-11-12 16:08:13 -06:00