Commit Graph

750 Commits

Author SHA1 Message Date
Dan Aloni 985a43095c probestack: add frame pointers for easier traceback
This turns the following backtrace,

```
>> bt
 #0  0x0000555555576f73 in __rust_probestack () at /cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.14/src/probestack.rs:55
Backtrace stopped: Cannot access memory at address 0x7fffff7fedf0
```

To this:

```
>>> bt
 #0  0x0000555555574e47 in __rust_probestack ()
 #1  0x00005555555595ba in test::main ()
 #2  0x00005555555594f3 in std::rt::lang_start::{{closure}} ()
 #3  0x0000555555561ae3 in std::panicking::try::do_call ()
 #4  0x000055555556595a in __rust_maybe_catch_panic ()
 #5  0x000055555555af9b in std::rt::lang_start_internal ()
 #6  0x00005555555594d5 in std::rt::lang_start ()
 #7  0x000055555555977b in main ()
```
2019-07-24 10:18:30 +03:00
Alex Crichton 6566ad9e92 Bump to 0.1.14 2019-05-15 14:47:58 -07:00
Alex Crichton d9672420ab
Merge pull request #293 from alexcrichton/deduplicate-cfg
Remove the need for #[cfg] in #[use_c_shim_if]
2019-05-15 16:45:18 -05:00
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 6178e2c611 Bump to 0.1.13 2019-05-14 14:41:07 -07:00
Alex Crichton c88c9502b7 Run rustfmt over everything 2019-05-14 14:40:38 -07:00
Alex Crichton ad1bcd2592
Merge pull request #291 from alexcrichton/fix-riscv
Don't compile C code on riscv targets
2019-05-14 16:40:27 -05:00
Alex Crichton e4f46b91ca Don't compile C code on riscv targets
This fixes a longstanding bug in compiler-builtins where C code was
compiled for the riscv targets but when distributed in rust-lang/rust
all the C code was actually compiled for x86_64 since there is no
configured C compiler for riscv. This was exposed by #286 by accident
but the underlying cause was somewhat unrelated.

For now we forcibly disable C code for riscv targets, and when the C
compiler story is sorted out in rust-lang/rust and with `cc-rs` we can
reenable. For now just use all the Rust definitions.

cc rust-lang/rust#60747
2019-05-14 14:29:29 -07:00
Alex Crichton cfa7c7a08d
Merge pull request #290 from alexcrichton/fix-targets
Fix __divsi3 and __udivsi3 on thumbv6m targets
2019-05-14 15:02:57 -05:00
Alex Crichton e0e54ded96
Merge pull request #289 from RalfJung/c
don't force-on c feature when working in rustc workspace
2019-05-14 15:02:26 -05: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
Ralf Jung 3c51ffdadc don't force-on c feature when working in rustc workspace 2019-05-14 17:57:42 +02:00
Alex Crichton e3b53f9142 Bump to 0.1.12 2019-05-02 15:18:37 -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 fd7d1b0a45
Merge pull request #287 from alexcrichton/reenable-mips
Enable historically segfaulting tests on MIPS
2019-05-02 16:44:40 -05:00
Alex Crichton 80a998df92 Fix duplicate floatdisf symbol on Windows MSVC 2019-05-02 14:22:19 -07:00
Alex Crichton 2668e5754d
Merge pull request #284 from alexcrichton/ldexp
Include `ldexp*` intrinsics on the wasm target
2019-05-02 16:17:33 -05:00
Alex Crichton 45caccf3bf
Merge pull request #285 from alexcrichton/use-optimized
Revert "Use the Rust implementation of udivsi3 on ARM"
2019-05-02 16:17:04 -05:00
Alex Crichton 77b1c7a881 Enable historically segfaulting tests on MIPS
They seem to be passing locally so let's see what CI has to say.

Closes #137
2019-05-02 13:44:20 -07: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 4012b9c4f5 Include `ldexp*` intrinsics on the wasm target
Looks like LLVM optimizes programs like:

    fn foo(a: u8) -> f32 {
        2.0f32.powf(a as f32)
    }

to actually invoking `ldexpf`, so let's be sure to include bindings so
there's not undefined symbols.
2019-05-02 12:40:39 -07:00
Alex Crichton 045de6e516 Bump to 0.1.11 2019-04-30 10:08:23 -07:00
Alex Crichton 14320f2d77
Merge pull request #283 from Goirad/patch-1
Added missing fdim signature
2019-04-30 08:41:30 -05:00
Goirad aec945a708
Added missing fdim signature 2019-04-29 14:42:14 -07:00
Alex Crichton c8dd6524e8 Add instructions for publishing 2019-04-08 07:55:09 -07:00
Alex Crichton afca23bbb9 Bump to 0.1.10 2019-04-08 07:52:05 -07:00
Alex Crichton cc61d82bc4
Merge pull request #281 from Zoxc/vs2019
Update submodule for VS 2019 support
2019-04-08 09:51:31 -05:00
John Kåre Alsaker 98c5738ed5 Update submodule for VS 2019 support 2019-04-08 16:30:33 +02:00
Alex Crichton 6e8085722d
Update azure pipelines badge 2019-04-02 15:41:20 -05:00
Alex Crichton cc2d7cb3bc Bump to 0.1.9 2019-04-02 13:05:56 -07:00
Alex Crichton 1275ec6654 More fixes for i686-mingw 2019-04-02 13:02:22 -07:00
Alex Crichton 4c60176278 Attempt to fix MinGW targets 2019-04-02 12:51:36 -07:00
Alex Crichton cc7567e471
Merge pull request #277 from alexcrichton/less-wasi-sysm
Don't compile math symbols on wasm32-unknown-wasi
2019-04-02 14:44:24 -05:00
Alex Crichton a771cba5f9
Merge pull request #279 from alexcrichton/configure-azure-pipelines
Configure Azure Pipelines
2019-04-02 14:44:08 -05:00
Alex Crichton 17b8ea3620 Re-enable all targets 2019-04-02 12:17:23 -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 e95ef7a5ef Don't compile math symbols on wasm32-unknown-wasi
These are already provided by the C sysroot, so no need for us to
duplicate them!
2019-04-02 07:46:06 -07:00
Alex Crichton a4420e66ad Bump to 0.1.8 2019-03-21 07:52:59 -07:00
Alex Crichton 4078c99f9b
Merge pull request #276 from hug-dev/armv8m-support
Fix compilation errors for Armv8-M Baseline and Mainline with FPU
2019-03-14 09:15:10 -05:00
Hugues de Valon 5d683bafc3 Remove thumbv6m configuration of intrinsic example
It seems that the intrinsics that were generated for the functions in
example/intrinsics.rs where different implementations were given for
thumb6m-none-eabi target, have now been implemented in Rust so
configuration is not needed anymore.
2019-03-14 12:58:29 +00:00
Hugues de Valon 85101f2a47 Fix compilation for thumbv8m.main-none-eabihf
Some files were not assembling for the Armv8-M Mainline architecture
profile with FPU extension. Reason being the same as for Armv7-M: the
conversion intrinsics including double precision floating
point variables do not work with single precision FPUs.
Also removes from exclusion files that are assembling without errors for
Armv7-M and Armv8-M Mainline.
2019-03-14 12:58:29 +00:00
Hugues de Valon c924aed0b9 Fix Armv8-M Baseline compilation
Armv8-M Baseline, ie thumbv8m.base-none-eabi, is a superset of the
Armv6-M architecture profile. As it shares almost the same instruction
set, this commit copies the configuration for thumbv6m-none-eabi to
enable it.
2019-03-14 12:58:23 +00:00