rust/src/librustc_trans/trans
bors 71409184dc Auto merge of #29177 - vadimcn:rtstuff, r=alexcrichton
Note: for now, this change only affects `-windows-gnu` builds.

So why was this `libgcc` dylib dependency needed in the first place?
The stack unwinder needs to know about locations of unwind tables of all the modules loaded in the current process.  The easiest portable way of achieving this is to have each module register itself with the unwinder when loaded into the process.  All modules compiled by GCC do this by calling the __register_frame_info() in their startup code (that's `crtbegin.o` and `crtend.o`, which are automatically linked into any gcc output).
Another important piece is that there should be only one copy of the unwinder (and thus unwind tables registry) in the process.  This pretty much means that the unwinder must be in a shared library (unless everything is statically linked). 

Now, Rust compiler tries very hard to make sure that any given Rust crate appears in the final output just once.   So if we link the unwinder statically to one of Rust's crates, everything should be fine.

Unfortunately, GCC startup objects are built under assumption that `libgcc` is the one true place for the unwind info registry, so I couldn't find any better way than to replace them.  So out go `crtbegin`/`crtend`, in come `rsbegin`/`rsend`!  

A side benefit of this change is that rustc is now more in control of the command line that goes to the linker, so we could stop using `gcc` as the linker driver and just invoke `ld` directly.
2015-11-01 17:15:29 +00:00
..
debuginfo Remove PatWildMulti 2015-10-31 03:44:43 +03:00
_match.rs Remove PatWildMulti 2015-10-31 03:44:43 +03:00
adt.rs Use ast attributes every where (remove HIR attributes). 2015-09-16 10:57:06 +12:00
asm.rs Use ast::AsmDialect's variants qualified, and drop the pointless prefix. 2015-09-21 16:48:25 +02:00
attributes.rs Use ast attributes every where (remove HIR attributes). 2015-09-16 10:57:06 +12:00
base.rs Auto merge of #29177 - vadimcn:rtstuff, r=alexcrichton 2015-11-01 17:15:29 +00:00
basic_block.rs
build.rs
builder.rs
cabi_aarch64.rs
cabi_arm.rs
cabi_mips.rs
cabi_powerpc.rs
cabi_x86_64.rs trans: Use an isize to count the number of registers so we don't underflow for fn's with > 7 args in debug builds. 2015-10-16 21:10:52 -04:00
cabi_x86_win64.rs win64/msvc: large or oddly-sized types pass by-ref 2015-10-12 16:23:47 -06:00
cabi_x86.rs
cabi.rs
callee.rs Merge struct fields and struct kind 2015-10-13 15:19:25 +03:00
cleanup.rs Revisit implementation of custom unwind resume; 2015-10-18 19:57:28 -07:00
closure.rs Convert DefId to use DefIndex, which is an index into a list of 2015-10-01 10:43:07 -04:00
common.rs Revisit implementation of custom unwind resume; 2015-10-18 19:57:28 -07:00
consts.rs allow constant evaluation of function calls 2015-10-19 13:13:02 +02:00
context.rs Auto merge of #29177 - vadimcn:rtstuff, r=alexcrichton 2015-11-01 17:15:29 +00:00
controlflow.rs Set proper alignment on constants 2015-10-10 01:15:36 +02:00
datum.rs
declare.rs deduplicate erase_regions 2015-09-15 00:47:14 +03:00
expr.rs implement RFC 1229 2015-10-13 17:01:03 +02:00
foreign.rs normalize the types of foreign functions 2015-10-12 21:54:48 +03:00
glue.rs typos: fix a grabbag of typos all over the place 2015-10-08 19:49:31 +01:00
inline.rs Merge VariantData and VariantData_ 2015-10-13 15:19:27 +03:00
intrinsic.rs Auto merge of #29177 - vadimcn:rtstuff, r=alexcrichton 2015-11-01 17:15:29 +00:00
llrepr.rs
machine.rs
macros.rs
meth.rs Auto merge of #28920 - dotdash:const_align, r=eddyb 2015-10-10 06:07:40 +00:00
mod.rs
monomorphize.rs Remove NodeArg 2015-10-27 01:32:04 +09:00
tvec.rs Use ast attributes every where (remove HIR attributes). 2015-09-16 10:57:06 +12:00
type_.rs Use ast attributes every where (remove HIR attributes). 2015-09-16 10:57:06 +12:00
type_of.rs Auto merge of #29409 - arielb1:recursive-arrays, r=eddyb 2015-10-28 13:16:14 +00:00
value.rs