Commit Graph

500 Commits

Author SHA1 Message Date
bors 5b96befbc5 Auto merge of #115 - Amanieu:linux-arm-atomic, r=alexcrichton
Add atomic support for pre-ARMv6 on Linux

This uses the [kernel user helpers](https://www.kernel.org/doc/Documentation/arm/kernel_user_helpers.txt) which are available starting from kernel 2.6.15. Since Rust currently requires 2.6.18 at a minimum, this should be fine in practice. I did not include support for 64-bit atomics since that functionality is only available in kernel 3.1.

This PR allows Rust to work on older ARM versions such as ARMv4 and ARMv5 with the full libstd.
2017-10-06 23:08:42 +00:00
Amanieu d'Antras 73e38dcf2f Add atomic support for pre-ARMv6 on Linux 2017-10-05 12:44:12 +01:00
Alex Crichton fe8d893a6b Update target specs 2017-10-03 02:28:49 -07:00
Alex Crichton 0b9844764e Merge pull request #198 from est31/master
Partial revert of the float conversion refactor in #192
2017-09-29 01:54:05 -05:00
est31 c781759498 Partially revert a272d753f5
This partially reverts commit "Convert float_to_int! into a function"
2017-09-29 02:20:27 +02:00
est31 a20840262e Partially revert 482d98318f
This partially reverts "Convert int_to_float! to a function".
2017-09-29 02:19:40 +02:00
Alex Crichton 789e8c159f Merge pull request #196 from alexcrichton/cc
Update to the `cc` dependency
2017-09-27 17:38:06 -05:00
Alex Crichton 006f173f85 Ignore failing test on mips 2017-09-22 21:31:27 -07:00
Alex Crichton 6cf8fe7932 Update to the `cc` dependency 2017-09-22 21:30:12 -07:00
bors 67e0908d7f Auto merge of #195 - alexcrichton:32-darwin-empty, r=alexcrichton
Disable empty intrinsics on i686-apple-darwin

These all currently just produce empty object files
2017-09-17 22:25:49 +00:00
Alex Crichton 1be538be1e Disable empty intrinsics on i686-apple-darwin
These all currently just produce empty object files
2017-09-17 15:25:34 -07:00
bors 4d9df62fb7 Auto merge of #194 - mattico:i386, r=alexcrichton
Implement x86 chkstk in "rust"

cc #183

Basically the same as the x86_64 ones, except `__alloca` doesn't need to fix the parameter register. I've manually verified that the disassembly is the same, and that these work in a compiled rust program.

The second commit disables compiling probestack functions for `feature = mangled-names`. They aren't needed during testing because they aren't comparison tested and the unmangled versions are the ones that actually get used.

r? @alexcrichton
2017-09-16 02:58:04 +00:00
Matt Ickstadt a40cc6a12d Don't compile probestack functions during testing 2017-09-15 18:13:06 -05:00
Matt Ickstadt b3679bcfba Implement x86 chkstk in "rust" 2017-09-15 18:04:59 -05:00
bors a767bab639 Auto merge of #193 - alexcrichton:update, r=alexcrichton
Update MinGW download location
2017-09-15 22:59:44 +00:00
Alex Crichton f06f7c7bd6 Update MinGW download location 2017-09-15 15:59:15 -07:00
bors 35dec6bd8a Auto merge of #192 - est31:master, r=alexcrichton
Refactor float implementation

Refactors the float implementation. Fixes #169. Parts of the PR were inspired a previous PR by @mattico .
2017-09-14 17:27:43 +00:00
est31 0cd476220b Remove duplication by adding a macro 2017-09-14 17:39:25 +02:00
est31 3efae7f7d9 Convert add! to a function 2017-09-14 17:33:44 +02:00
est31 482d98318f Convert int_to_float! to a function 2017-09-14 16:32:50 +02:00
est31 ff63f7b80f Convert float_to_int! into a function 2017-09-14 14:59:32 +02:00
bors ef4951582f Auto merge of #189 - tamird:update-comment-rustbuild, r=alexcrichton
Update rustbuild commentary

r? @nikomatsakis

This is the reason that https://github.com/rust-lang/rust/pull/44509 doesn't work - the `rustbuild` feature _is_ actually used, it was just incorrectly documented here and I missed it.
2017-09-14 00:46:30 +00:00
est31 a272d753f5 Don't use the Wrapping wrapper in float addition
Inspired by a patch by mattico.
2017-09-14 02:08:28 +02:00
est31 72ed4c8bce Don't use a macro for pow calculation 2017-09-14 01:59:02 +02:00
est31 8313cec597 Extend the Float trait by some constants and supertraits 2017-09-14 01:57:52 +02:00
bors 915293c528 Auto merge of #191 - est31:master, r=alexcrichton
Small refactor to use associated consts

Yeey less chars.

r? @alexcrichton
2017-09-13 23:12:44 +00:00
est31 2c1d7dccc1 Use the newly added ONE constant in float addition 2017-09-14 00:10:16 +02:00
est31 46cfa05650 Introduce a float_impl! macro to avoid duplication 2017-09-13 22:44:56 +02:00
est31 9bdedec38e Refactor float builtins to use associated consts 2017-09-13 22:09:52 +02:00
est31 c9a261895e Refactor int builtins to use associated consts 2017-09-13 22:09:31 +02:00
Tamir Duberstein a32e76eaea
Update rustbuild commentary
Also use `cfg!(feature = "rustbuild")` instead of the environment
variable to ease grep-ability.
2017-09-12 20:54:32 -04:00
bors 23f14d3f05 Auto merge of #188 - tamird:remove-unused-rustbuild, r=alexcrichton
Remove unused rustbuild feature

I can't tell if this was ever used, but it's not used today.
2017-09-10 15:35:24 +00:00
Tamir Duberstein 9d536cf96a
Remove unused rustbuild feature
I can't tell if this was ever used, but it's not used today.
2017-09-10 09:30:47 -04:00
bors 38ffaf97aa Auto merge of #187 - est31:master, r=alexcrichton
Update the gcc crate to 0.3.53 and disable compilation warnings

The update is needed because you'd otherwise get a deprecation warning about `Config` being deprecated, as rust-lang/rust has updated the gcc crate.

The compilation warnings are inside the compiler-rt submodule, about which we don't have
direct control over, so we disable them.
2017-09-07 05:51:19 +00:00
est31 02ea9e5f54 Update the gcc crate to 0.3.53 and disable compilation warnings
They are inside the compiler-rt submodule, about which we don't have
direct control over.
2017-09-07 07:49:34 +02:00
bors 94c4c1c534 Auto merge of #184 - DirkyJerky:patch-1, r=alexcrichton
Fix README relative link.
2017-08-22 05:03:25 +00:00
Geoff Yoerger fe6197e2f2 Fix README relative link. 2017-08-21 16:17:04 -05:00
bors 6b9281d2b2 Auto merge of #181 - TimNN:no-memcpy, r=alexcrichton
Avoid memcpy references in unoptimized code

Fixes rust-lang/rust#43411.
2017-07-23 05:10:08 +00:00
Tim Neumann c138713df1 Avoid memcpy references in unoptimized code 2017-07-22 23:10:30 +02:00
bors f6c4034d59 Auto merge of #179 - ollie27:chkstk, r=alexcrichton
Don't include custom chkstk on MSVC

MSVC includes its own __chkstk so these aren't used.

These aren't included in compiler-rt: cb42103777/lib/builtins/CMakeLists.txt (L224-L284).
They also weren't included in compiler-builtins: 1685c92986/src/libcompiler_builtins/build.rs (L255-L293) until rust-lang/rust#42899.
2017-07-12 22:28:43 +00:00
Oliver Middleton 064452423a Don't include custom chkstk on MSVC
MSVC includes its own __chkstk so these aren't used.
2017-07-12 22:40:49 +01:00
bors 5e49856003 Auto merge of #176 - alexcrichton:probestack2, r=alexcrichton
Tweak definition of probestack functions

It looks like the old `__rust_probestack` routine is incompatible with newer
linux kernels. My best guess for this is that the kernel's auto-growth logic is
failing to trigger, causing what looks like a legitimate segfault to get
delivered. My best guess for why *that's* happening is that the faulting address
is below `%rsp`, whereas previously all faulting stack addresses were above
`%rsp`. The probestack routine does not modify `%rsp` as it's probing the stack,
and presumably newer kernels are interpreting this as a legitimate violation.

This commit tweaks the probestack routine to instead update `%rsp` incrementally
as probing happens. The ABI of the function, however, requires that `%rsp`
isn't changed as part of the function so it's restored at the end to the
previous value.
2017-07-08 03:36:04 +00:00
Alex Crichton 91eaa85902 Don't mangle probes all the time 2017-07-07 20:35:14 -07:00
Alex Crichton f9f6bd0589 Tweak definition of probestack functions
It looks like the old `__rust_probestack` routine is incompatible with newer
linux kernels. My best guess for this is that the kernel's auto-growth logic is
failing to trigger, causing what looks like a legitimate segfault to get
delivered. My best guess for why *that's* happening is that the faulting address
is below `%rsp`, whereas previously all faulting stack addresses were above
`%rsp`. The probestack routine does not modify `%rsp` as it's probing the stack,
and presumably newer kernels are interpreting this as a legitimate violation.

This commit tweaks the probestack routine to instead update `%rsp` incrementally
as probing happens. The ABI of the function, however, requires that `%rsp`
isn't changed as part of the function so it's restored at the end to the
previous value.
2017-07-07 10:16:03 -07:00
bors e9b258bc0c Auto merge of #175 - alexcrichton:probestack, r=alexcrichton
Add `__rust_probestack` intrinsic

Will be required for rust-lang/rust#42816
2017-07-06 13:59:05 +00:00
Alex Crichton 7ccf8408d0 Add `__rust_probestack` intrinsic
Will be required for rust-lang/rust#42816
2017-07-06 06:58:32 -07:00
Alex Crichton 238647af80 Fix unused imports on iOS 2017-07-03 19:11:34 -07:00
Alex Crichton a1700f9da9 Fix a typo in the build script 2017-07-03 15:28:03 -07:00
Alex Crichton 070990f10a Compile ffsdi2 with `rustbuild` feature
This is not used by LLVM/Rust, but is apparently used by gcc/C which jemalloc
can require at least.
2017-07-03 15:00:51 -07:00
bors 906b2bfc5d Auto merge of #174 - alexcrichton:less-compiler-rt, r=alexcrichton
Use the Rust implementation of udivsi3 on ARM

Although compiler-rt presumably has a more optimized implementation written in
assembly, it appears buggy for whatever reason, causing #173.

For now let's see if integration into rust-lang/rust will work with the
Rust-defined implementation!
2017-07-03 16:48:23 +00:00