[GHC] #10442: Loading of shared libraries is problematic in ghc 7.10.1

GHC ghc-devs at haskell.org
Sat May 23 19:56:08 UTC 2015


#10442: Loading of shared libraries is problematic in ghc 7.10.1
-------------------------------------+-------------------------------------
              Reporter:              |             Owner:
  artella.coding                     |            Status:  new
                  Type:  bug         |         Milestone:  7.10.2
              Priority:  high        |           Version:  7.10.1
             Component:  Compiler    |  Operating System:  Linux
              Keywords:              |   Type of failure:  Runtime crash
          Architecture:  x86_64      |        Blocked By:
  (amd64)                            |   Related Tickets:
             Test Case:              |
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------
 Suppose that I have :

 {{{#!hs
 //test.h
 int add(int a, int b);
 }}}

 {{{#!hs
 //test.c
 int add(int a, int b){
   return (a + b);
 }
 }}}


 {{{#!hs
 //mylib.c
 #include "test.h"

 int testAdd(){
   return add(2,3);
 }
 }}}

 Then I compile via :

 {{{#!hs
 gcc -shared -o libtest.so test.c
 gcc -fPIC -c mylib.c -o mylib.o
 gcc -shared -o libMy.so mylib.o
 }}}

 Then I have Main.hs with :

 {{{#!hs
 module Main where
 import Foreign.C.Types

 foreign import ccall "testAdd" c_testAdd :: CInt -> CInt -> IO (CInt)

 main = do
   result <- c_testAdd 3 4
   print result
 }}}

 and I have the associated cabal file :

 {{{#!hs
 name:                illustrate
 version:             0.1.0.0
 build-type:          Simple
 cabal-version:       >=1.10

 executable illustrate
   main-is:             Main.hs
   build-depends:       base >=4.8 && <4.9
   default-language:    Haskell2010
   extra-lib-dirs:      ./
   ghc-options:         -ltest
                        -lMy
 }}}

 Then upon running "cabal repl" I get the following
 error message (in ghc 7.10.1) :

 {{{#!hs
 *Main> main
 /home/linux/programs/ghc-7.10.1/lib/ghc-7.10.1/bin/ghc: symbol lookup
 error: ./libMy.so: undefined symbol: add
 }}}

 If I do "cabal run" I get :

 {{{#!hs
 Preprocessing executable 'illustrate' for illustrate-0.1.0.0...
 [1 of 1] Compiling Main             ( Main.hs, dist/build/illustrate
 /illustrate-tmp/Main.o )
 Linking dist/build/illustrate/illustrate ...
 Running illustrate...
 /home/linux/Downloads/illustrate/dist/build/illustrate/illustrate: error
 while loading shared libraries: libtest.so: cannot open shared object
 file: No such file or directory
 }}}

 Note that in ghc 7.8.3, cabal 1.22.0.0 it works fine.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10442>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list