<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/rt/rust_test_helpers.c, branch 1.12.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.12.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.12.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2016-04-04T20:14:10+00:00</updated>
<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>
<entry>
<title>Add missing attributes to indirect calls for foreign functions</title>
<updated>2014-06-21T17:59:58+00:00</updated>
<author>
<name>Björn Steinbrink</name>
<email>bsteinbr@gmail.com</email>
</author>
<published>2014-06-17T19:51:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=5e720aac4215dcd8ba1b0fd455a737d8798baea4'/>
<id>urn:sha1:5e720aac4215dcd8ba1b0fd455a737d8798baea4</id>
<content type='text'>
When calling a foreign function, some arguments and/or return value
attributes are required to conform to the foreign ABI. Currently those
attributes are only added to the declaration of foreign functions. With
direct calls, this is no problem, because LLVM can see that those
attributes apply to the call. But with an indirect call, LLVM cannot do
that and the attribute is missing.

To fix that, we have to add those attribute to the calls to foreign
functions as well.

This also allows to remove the special handling of the SRet attribute,
which is ABI-dependent and will be set via the `attr` field of the
return type's `ArgType`.
</content>
</entry>
<entry>
<title>rustc: Fix x86 ffi for empty struct arguments</title>
<updated>2014-03-19T07:41:51+00:00</updated>
<author>
<name>klutzy</name>
<email>klutzytheklutzy@gmail.com</email>
</author>
<published>2014-03-09T06:42:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=2d31bcaf16453b713d769178c5f6738eb5efbd9d'/>
<id>urn:sha1:2d31bcaf16453b713d769178c5f6738eb5efbd9d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove rust_globals.h</title>
<updated>2013-12-25T04:09:49+00:00</updated>
<author>
<name>Brian Anderson</name>
<email>banderson@mozilla.com</email>
</author>
<published>2013-12-24T05:01:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=f82246f56db34b52fac8466659ad454f1610280c'/>
<id>urn:sha1:f82246f56db34b52fac8466659ad454f1610280c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move runtime files to C instead of C++</title>
<updated>2013-11-19T05:45:58+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2013-11-14T18:04:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=508b7b996e5d557ec1c49e1d11563ecf4fc9d287'/>
<id>urn:sha1:508b7b996e5d557ec1c49e1d11563ecf4fc9d287</id>
<content type='text'>
Explicitly have the only C++ portion of the runtime be one file with exception
handling. All other runtime files must now live in C and be fully defined in C.
</content>
</entry>
</feed>
