File tree Expand file tree Collapse file tree 6 files changed +34
-14
lines changed Expand file tree Collapse file tree 6 files changed +34
-14
lines changed Original file line number Diff line number Diff line change @@ -6,7 +6,7 @@ refs/heads/try: c274a6888410ce3e357e014568b43310ed787d36
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
7
7
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8
8
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
9
- refs/heads/dist-snap: 7e6f5bb5c9eaab292a755036656cf62bfc669974
9
+ refs/heads/dist-snap: a7453ad0dffd94e57389b893527111c98a96ec40
10
10
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
11
11
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
12
12
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
Original file line number Diff line number Diff line change @@ -204,7 +204,7 @@ CFG_LIB_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib
204
204
CFG_LIB_DSYM_GLOB_x86_64-apple-darwin =lib$(1 ) -*.dylib.dSYM
205
205
CFG_GCCISH_CFLAGS_x86_64-apple-darwin := -Wall -Werror -g -fPIC -m64 -arch x86_64
206
206
CFG_GCCISH_CXXFLAGS_x86_64-apple-darwin := -fno-rtti
207
- CFG_GCCISH_LINK_FLAGS_x86_64-apple-darwin := -dynamiclib -pthread -framework CoreServices -Wl,-no_compact_unwind - m64
207
+ CFG_GCCISH_LINK_FLAGS_x86_64-apple-darwin := -dynamiclib -pthread -framework CoreServices -m64
208
208
CFG_GCCISH_DEF_FLAG_x86_64-apple-darwin := -Wl,-exported_symbols_list,
209
209
CFG_GCCISH_PRE_LIB_FLAGS_x86_64-apple-darwin :=
210
210
CFG_GCCISH_POST_LIB_FLAGS_x86_64-apple-darwin :=
@@ -230,7 +230,7 @@ CFG_LIB_GLOB_i686-apple-darwin=lib$(1)-*.dylib
230
230
CFG_LIB_DSYM_GLOB_i686-apple-darwin =lib$(1 ) -*.dylib.dSYM
231
231
CFG_GCCISH_CFLAGS_i686-apple-darwin := -Wall -Werror -g -fPIC -m32 -arch i386
232
232
CFG_GCCISH_CXXFLAGS_i686-apple-darwin := -fno-rtti
233
- CFG_GCCISH_LINK_FLAGS_i686-apple-darwin := -dynamiclib -pthread -framework CoreServices -Wl,-no_compact_unwind - m32
233
+ CFG_GCCISH_LINK_FLAGS_i686-apple-darwin := -dynamiclib -pthread -framework CoreServices -m32
234
234
CFG_GCCISH_DEF_FLAG_i686-apple-darwin := -Wl,-exported_symbols_list,
235
235
CFG_GCCISH_PRE_LIB_FLAGS_i686-apple-darwin :=
236
236
CFG_GCCISH_POST_LIB_FLAGS_i686-apple-darwin :=
Original file line number Diff line number Diff line change @@ -1112,14 +1112,6 @@ pub fn link_args(sess: Session,
1112
1112
~"-Wl , -rpath, /usr/local/lib/gcc44"] ) ;
1113
1113
}
1114
1114
1115
- // OS X 10.6 introduced 'compact unwind info', which is produced by the
1116
- // linker from the dwarf unwind info. Unfortunately, it does not seem to
1117
- // understand how to unwind our __morestack frame, so we have to turn it
1118
- // off. This has impacted some other projects like GHC.
1119
- if sess. targ_cfg . os == session:: OsMacos {
1120
- args. push ( ~"-Wl , -no_compact_unwind") ;
1121
- }
1122
-
1123
1115
// Stack growth requires statically linking a __morestack function
1124
1116
args. push ( ~"-lmorestack") ;
1125
1117
Original file line number Diff line number Diff line change @@ -35,6 +35,7 @@ static KNOWN_FEATURES: &'static [(&'static str, Status)] = &[
35
35
( "struct_variant" , Active ) ,
36
36
( "once_fns" , Active ) ,
37
37
( "asm" , Active ) ,
38
+ ( "managed_boxes" , Active ) ,
38
39
39
40
// These are used to test this portion of the compiler, they don't actually
40
41
// mean anything
@@ -137,6 +138,15 @@ impl Visitor<()> for Context {
137
138
experimental and likely to be removed") ;
138
139
139
140
} ,
141
+ // NOTE: enable after snapshot
142
+ ast:: ty_box( _) if false => {
143
+ self . gate_feature ( "managed_boxes" , t. span , "The managed box syntax may be replaced \
144
+ by a library type, and a garbage \
145
+ collector is not yet implemented. \
146
+ Consider using the `std::rc` module \
147
+ as it performs much better as a \
148
+ reference counting implementation.") ;
149
+ }
140
150
_ => { }
141
151
}
142
152
Original file line number Diff line number Diff line change 62
62
is that OS X 10.6+ uses its own 'compact unwind info',
63
63
an undocumented format generated by the linker from
64
64
the DWARF CFI. This compact unwind info doesn't correctly
65
- capture the nuance of the __morestack frame, and as a
66
- result all of our linking on OS X uses the -no_compact_unwind
67
- flag .
65
+ capture the nuance of the __morestack frame, so we need to
66
+ prevent the linker from attempting to convert its DWARF unwind
67
+ information .
68
68
*/
69
69
70
70
.text
@@ -118,6 +118,15 @@ MORESTACK:
118
118
// FIXME(#9854) these cfi directives don't work on windows.
119
119
120
120
pushl %ebp
121
+
122
+ #if defined(__APPLE__)
123
+ // The pattern of the return address being saved twice to the same location
124
+ // tells the OS X linker that it should not attempt to convert the DWARF
125
+ // unwind information to the compact format.
126
+ .cfi_offset %eip , -4
127
+ .cfi_offset %eip , -4
128
+ #endif
129
+
121
130
// The CFA is 20 bytes above the register that it is
122
131
// associated with for this frame (which will be %ebp)
123
132
.cfi_def_cfa_offset 20
Original file line number Diff line number Diff line change @@ -43,6 +43,15 @@ MORESTACK:
43
43
// bytes greater than a normal frame, to allow the unwinder
44
44
// to skip the partial frame of the original function.
45
45
.cfi_def_cfa_offset 24
46
+
47
+ #if defined(__APPLE__)
48
+ // The pattern of the return address being saved twice to the same location
49
+ // tells the OS X linker that it should not attempt to convert the DWARF
50
+ // unwind information to the compact format.
51
+ .cfi_offset %rip , -8
52
+ .cfi_offset %rip , -8
53
+ #endif
54
+
46
55
// %rbp is -24 bytes from the CFA
47
56
.cfi_offset %rbp , -24
48
57
movq %rsp , %rbp
You can’t perform that action at this time.
0 commit comments