<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/rt/rust_test_helpers.c, branch 1.22.1</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.22.1</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.22.1'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2017-01-27T21:23:26+00:00</updated>
<entry>
<title>Use __SIZEOF_INT128__ to test __int128 presence</title>
<updated>2017-01-27T21:23:26+00:00</updated>
<author>
<name>Simonas Kazlauskas</name>
<email>git@kazlauskas.me</email>
</author>
<published>2017-01-27T21:23:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=98bc300d697d0c9f68abb6bb6eef978bce8e25c5'/>
<id>urn:sha1:98bc300d697d0c9f68abb6bb6eef978bce8e25c5</id>
<content type='text'>
Previously we tested whether a handful of preprocessor variables indicating certain 64 bit
platforms, but this does not work for other 64 bit targets which have support for __int128 in C
compiler.

Use the __SIZEOF__INT128__ preprocessor variable instead. This variable gets set to 16 by gcc and
clang for every target where __int128 is supported.
</content>
</entry>
<entry>
<title>Fix UB in test helpers</title>
<updated>2017-01-16T09:46:00+00:00</updated>
<author>
<name>Simonas Kazlauskas</name>
<email>git@kazlauskas.me</email>
</author>
<published>2017-01-16T09:46:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=5add9b93d4c5365dd7e372741613864e2c549ae8'/>
<id>urn:sha1:5add9b93d4c5365dd7e372741613864e2c549ae8</id>
<content type='text'>
Macro expansion producing defined has undefined behavior in C/C++.
</content>
</entry>
<entry>
<title>Add test for i128 ffi usage</title>
<updated>2017-01-04T18:05:27+00:00</updated>
<author>
<name>est31</name>
<email>MTest31@outlook.com</email>
</author>
<published>2017-01-01T22:06:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=28f6d4a63786a7e63bc5d3b66b1754a02b1b564d'/>
<id>urn:sha1:28f6d4a63786a7e63bc5d3b66b1754a02b1b564d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Address comments and add requested tests</title>
<updated>2016-09-03T10:39:35+00:00</updated>
<author>
<name>Vadim Petrochenkov</name>
<email>vadim.petrochenkov@gmail.com</email>
</author>
<published>2016-08-26T16:23:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=93067ca089ea570e4e2bdfc456958c81a4d1e092'/>
<id>urn:sha1:93067ca089ea570e4e2bdfc456958c81a4d1e092</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Handle integer-extending for C ABI</title>
<updated>2016-04-04T20:14:10+00:00</updated>
<author>
<name>James Miller</name>
<email>james@aatch.net</email>
</author>
<published>2016-02-17T06:33:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4815f7e668640ae968418307909f41a7eaabf050'/>
<id>urn:sha1:4815f7e668640ae968418307909f41a7eaabf050</id>
<content type='text'>
We need to supply sext/zext attributes to LLVM to ensure that arguments
are extended to the appropriate width in the correct way.

Most platforms extend integers less than 32 bits, though not all.
</content>
</entry>
<entry>
<title>Abort on stack overflow instead of re-raising SIGSEGV</title>
<updated>2016-02-06T01:41:18+00:00</updated>
<author>
<name>Brian Campbell</name>
<email>lambda@continuation.org</email>
</author>
<published>2016-01-31T23:30:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ee79bfa18affe95959a5f9a036c17bbd77979e21'/>
<id>urn:sha1:ee79bfa18affe95959a5f9a036c17bbd77979e21</id>
<content type='text'>
We use guard pages that cause the process to abort to protect against
undefined behavior in the event of stack overflow.  We have a handler
that catches segfaults, prints out an error message if the segfault was
due to a stack overflow, then unregisters itself and returns to allow
the signal to be re-raised and kill the process.

This caused some confusion, as it was unexpected that safe code would be
able to cause a segfault, while it's easy to overflow the stack in safe
code.  To avoid this confusion, when we detect a segfault in the guard
page, abort instead of the previous behavior of re-raising the SIGSEGV.

To test this, we need to adapt the tests for segfault to actually check
the exit status.  Doing so revealed that the existing test for segfault
behavior was actually invalid; LLVM optimizes the explicit null pointer
reference down to an illegal instruction, so the program aborts with
SIGILL instead of SIGSEGV and the test didn't actually trigger the
signal handler at all.  Use a C helper function to get a null pointer
that LLVM can't optimize away, so we get our segfault instead.

This is a [breaking-change] if anyone is relying on the exact signal
raised to kill a process on stack overflow.

Closes #31273
</content>
</entry>
<entry>
<title>[MIR] Implement extern call support</title>
<updated>2016-01-19T13:14:04+00:00</updated>
<author>
<name>Simonas Kazlauskas</name>
<email>git@kazlauskas.me</email>
</author>
<published>2016-01-12T13:20:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=99e8b4d75544d90e28766e7052c7f8873a96128f'/>
<id>urn:sha1:99e8b4d75544d90e28766e7052c7f8873a96128f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add test case for #28676.</title>
<updated>2015-10-14T20:51:26+00:00</updated>
<author>
<name>Peter Marheine</name>
<email>peter@taricorp.net</email>
</author>
<published>2015-10-14T20:25:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=95721d3b136c1459f309cd107e43c4edc474c052'/>
<id>urn:sha1:95721d3b136c1459f309cd107e43c4edc474c052</id>
<content type='text'>
</content>
</entry>
<entry>
<title>rt: Clean up to build with cl.exe</title>
<updated>2015-05-19T17:35:58+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-05-11T19:24:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=cb513c7b46c21c786c30901e70b62de2835a5687'/>
<id>urn:sha1:cb513c7b46c21c786c30901e70b62de2835a5687</id>
<content type='text'>
* Detect the #define _MSC_VER in addition to __WIN32__
* Don't include valgrind.h for windows
* Remove unused `rust_valgrind_stack_{un,}register` functions
* Add stub definition for `rust_running_on_valgrind` for windows
* Conditionally define `rust_dbg_extern_empty_struct` as empty structures are
  not allowed by cl.exe apparently.
</content>
</entry>
<entry>
<title>Very hacky MSVC hacks.</title>
<updated>2015-05-12T21:50:36+00:00</updated>
<author>
<name>Ricky Taylor</name>
<email>rickytaylor26@gmail.com</email>
</author>
<published>2015-03-04T22:58:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=315750ac92a8114a96b35352ec88f82d21d5fbec'/>
<id>urn:sha1:315750ac92a8114a96b35352ec88f82d21d5fbec</id>
<content type='text'>
Conflicts:
	mk/platform.mk
	src/librustc/session/config.rs
	src/librustc_back/target/aarch64_apple_ios.rs
	src/librustc_back/target/aarch64_linux_android.rs
	src/librustc_back/target/arm_linux_androideabi.rs
	src/librustc_back/target/arm_unknown_linux_gnueabi.rs
	src/librustc_back/target/arm_unknown_linux_gnueabihf.rs
	src/librustc_back/target/armv7_apple_ios.rs
	src/librustc_back/target/armv7s_apple_ios.rs
	src/librustc_back/target/i386_apple_ios.rs
	src/librustc_back/target/i686_apple_darwin.rs
	src/librustc_back/target/i686_pc_windows_gnu.rs
	src/librustc_back/target/i686_unknown_dragonfly.rs
	src/librustc_back/target/i686_unknown_linux_gnu.rs
	src/librustc_back/target/mips_unknown_linux_gnu.rs
	src/librustc_back/target/mipsel_unknown_linux_gnu.rs
	src/librustc_back/target/mod.rs
	src/librustc_back/target/powerpc_unknown_linux_gnu.rs
	src/librustc_back/target/x86_64_apple_darwin.rs
	src/librustc_back/target/x86_64_apple_ios.rs
	src/librustc_back/target/x86_64_pc_windows_gnu.rs
	src/librustc_back/target/x86_64_unknown_dragonfly.rs
	src/librustc_back/target/x86_64_unknown_freebsd.rs
	src/librustc_back/target/x86_64_unknown_linux_gnu.rs
	src/librustc_back/target/x86_64_unknown_openbsd.rs
	src/librustc_llvm/lib.rs
	src/librustc_trans/back/link.rs
	src/librustc_trans/trans/base.rs
	src/libstd/os.rs
	src/rustllvm/RustWrapper.cpp
</content>
</entry>
</feed>
