libffi was:Re: ANNOUNCE: GHC version 7.0.1

Simon Marlow marlowsd at gmail.com
Thu Nov 18 07:04:12 EST 2010


On 18/11/2010 11:24, Christian Maeder wrote:
> Am 18.11.2010 11:12, schrieb Simon Marlow:
>> On 17/11/2010 14:34, Christian Maeder wrote:
>>> ghc can be built without and with libffi.
>>
>> Which build option are you referring to here?
>
> I did not use any explicit build option, but just created a
> binary-distribution from sources without having /usr/lib/libffi.

We ship GHC with a copy of libffi, you don't need it installed on your 
system.  Indeed, GHC shouldn't ever use the installed one.

>> libffi is required for
>> FFI support in GHCi, and for FFI "wrapper" imports.  However on x86 and
>> x86_64 we don't normally use libffi for wrappers, because we have a
>> native implementation that is a bit faster (this is the
>> UseLibFFIForAdjustors build option).
>>
>>> What advantage do I gain in
>>> the latter case? The packages that come with ghc (displayed by "ghc-pkg
>>> dump") don't use it.
>>
>> The RTS should depend on it.
>
> "ghc-pkg describe rts" only lists:
>   extra-libraries: m rt dl

$ ghc-pkg field rts depends
depends: builtin_ffi

$ ghc-pkg describe ffi
name: ffi
version: 1.0
id: builtin_ffi
...

> also for the official ghc-7.0.1-i386-unknown-linux.tar.bz2 that is
> linked against libffi (I hope not, unnecessarily). Does this mean that
> GHCi is based on a different RTS?

That does seem strange.  My 32-bit GHC here doesn't link against libffi:

$ ldd ghc-stage2
         linux-gate.so.1 =>  (0x4001d000)
         libncurses.so.5 => /lib/libncurses.so.5 (0x40029000)
         librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0x40061000)
         libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0x4006b000)
         libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x4006f000)
         libgmp.so.3 => /usr/lib/libgmp.so.3 (0x40073000)
         libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x400d4000)
         libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x400fa000)
         libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x40114000)
         /lib/ld-linux.so.2 (0x40000000)

Cheers,
	Simon



> C.
>
>>
>> Cheers,
>>      Simon
>>
>>
>>> Thanks Christian
>>>
>>>
>>> Am 16.11.2010 13:03, schrieb Christian Maeder:
>>>> http://new-www.haskell.org/ghc/dist/7.0.1/ghc-7.0.1-i386-unknown-linux.tar.bz2
>>>>
>>>>
>>>> ./configure failed with:
>>>>
>>>> checking for path to top of build tree... utils/ghc-pwd/ghc-pwd: error
>>>> while loading shared libraries: libffi.so.5: cannot open shared object
>>>> file: No such file or directory
>>>> configure: error: cannot determine current directory
>>>>
>>>> ldd utils/ghc-pwd/ghc-pwd
>>>>           linux-gate.so.1 =>    (0xffffe000)
>>>>           libutil.so.1 =>   /lib/libutil.so.1 (0xb7718000)
>>>>           libdl.so.2 =>   /lib/libdl.so.2 (0xb7713000)
>>>>           libm.so.6 =>   /lib/libm.so.6 (0xb76e9000)
>>>>           libffi.so.5 =>   not found
>>>>           libgmp.so.3 =>   /usr/lib/libgmp.so.3 (0xb7693000)
>>>>           librt.so.1 =>   /lib/librt.so.1 (0xb7689000)
>>>>           libc.so.6 =>   /lib/libc.so.6 (0xb751e000)
>>>>           /lib/ld-linux.so.2 (0xb7745000)
>>>>           libpthread.so.0 =>   /lib/libpthread.so.0 (0xb7503000)
>>>>
>>>> The 64Bit version works, though.
>>>>
>>>> Christian
>>>>
>>>>
>>>> Am 16.11.2010 01:09, schrieb Ian Lynagh:
>>>>> How to get it
>>>>> ~~~~~~~~~~~~~
>>>>>
>>>>> The easy way is to go to the web page, which should be
>>>>> self-explanatory:
>>>>>
>>>>>           http://www.haskell.org/ghc/
>>>>>
>>>>>
>>> _______________________________________________
>>> Glasgow-haskell-users mailing list
>>> Glasgow-haskell-users at haskell.org
>>> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>>



More information about the Glasgow-haskell-users mailing list