This is the mail archive of the
mailing list for the libffi project.
Re: OS X 10.6.6 ld: could not create compact unwind for _ffi_call_unix64: does not use RBP or RSP based frame
- From: Anthony Green <green at redhat dot com>
- To: William Knop <william dot knop at gmail dot com>
- Cc: libffi-discuss at sourceware dot org
- Date: Wed, 30 Mar 2011 13:49:35 -0400
- Subject: Re: OS X 10.6.6 ld: could not create compact unwind for _ffi_call_unix64: does not use RBP or RSP based frame
- References: <AANLkTimbOtNCTuySq6vAPowOTccgKrifOk6xnottXSAu@mail.gmail.com>
William Knop <firstname.lastname@example.org> writes:
> 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"
Doesn't it say "also encoded in"..? I guess it's required.
> 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:
Thanks for these pointers. I read the first thread and my summary is
that the EH unwind info format has changed in OS X 10.6 and GCC hasn't
caught up yet.
I'm not aware of any volunteers planning to update libffi to match this
change, but it sounds like it is required in order to support EH.
> Thanks much,
> William Knop