This is the mail archive of the
libffi-discuss@sourceware.org
mailing list for the libffi project.
OS X 10.6.6 ld: could not create compact unwind for _ffi_call_unix64: does not use RBP or RSP based frame
- From: William Knop <william dot knop dot nospam at gmail dot com>
- To: libffi-discuss at sourceware dot org
- Date: Thu, 24 Mar 2011 01:51:08 -0400
- Subject: OS X 10.6.6 ld: could not create compact unwind for _ffi_call_unix64: does not use RBP or RSP based frame
Hello all,
I'm working on squashing some bugs in ghc, the glasgow haskell
compiler, and I've run into a linker warning that is apparently new to
OS X 10.6's ld. Specifically, the new linker defaults to creating
compact unwinds, which is briefly described in `man unwinddump`:
"When a C++ (or x86_64 Objective-C) exception is thrown, the runtime
must unwind the stack looking for some function to catch the
exception. Traditionally, the unwind information is stored in the
__TEXT/__eh_frame section of each executable as Dwarf CFI (call frame
information). Beginning in Mac OS X 10.6, the unwind information is
also encoded in the __TEXT/__unwind_info section using a two-level
lookup table of compact unwind encodings."
Unfortunately, _ffi_call_unix64's cannot re represented in the compact
unwind format, resulting in the ld warning:
"could not create compact unwind for _ffi_call_unix64: does not use
RBP or RSP based frame"
Do you guys know if _ffi_call_unix64 (in darwin64.S) can be modified
to work with compact unwinds, and if so is it something that's planned
for a future release?
I have found a few relevant discussions:
http://groups.google.com/group/llvm-dev/browse_thread/thread/8baba4531a9feb07/139c9eba3525ebe
http://groups.google.com/group/darwin-dev/browse_thread/thread/962f74bde0efaae4/cfb63dfb3ac34ce1
Thanks much,
William Knop