This is the mail archive of the libffi-discuss@sourceware.org mailing list for the libffi project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]