rustc: Don't emit compact unwind info on mac
It's not compatible with the subtlety of __morestack
This commit is contained in:
parent
68f4849f0f
commit
cb5f636ff1
@ -76,7 +76,7 @@ ifneq ($(findstring darwin,$(CFG_OSTYPE)),)
|
||||
CFG_LIB_GLOB=lib$(1)-*.dylib
|
||||
CFG_UNIXY := 1
|
||||
CFG_LDENV := DYLD_LIBRARY_PATH
|
||||
CFG_GCCISH_LINK_FLAGS += -dynamiclib -lpthread -framework CoreServices
|
||||
CFG_GCCISH_LINK_FLAGS += -dynamiclib -lpthread -framework CoreServices -Wl,-no_compact_unwind
|
||||
CFG_GCCISH_DEF_FLAG := -Wl,-exported_symbols_list,
|
||||
# Darwin has a very blurry notion of "64 bit", and claims it's running
|
||||
# "on an i386" when the whole userspace is 64-bit and the compiler
|
||||
|
@ -657,6 +657,14 @@ fn link_binary(sess: session::session,
|
||||
gcc_args += ["-lrt", "-ldl"];
|
||||
}
|
||||
|
||||
// OS X 10.6 introduced 'compact unwind info', which is produced by the
|
||||
// linker from the dwarf unwind info. Unfortunately, it does not seem to
|
||||
// understand how to unwind our __morestack frame, so we have to turn it
|
||||
// off. This has impacted some other projects like GHC.
|
||||
if sess.get_targ_cfg().os == session::os_macos {
|
||||
gcc_args += ["-Wl,-no_compact_unwind"];
|
||||
}
|
||||
|
||||
// Stack growth requires statically linking a __morestack function
|
||||
gcc_args += ["-lmorestack"];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user