[GHC] #10458: GHCi fails to load shared object (the 'impossible' happened)

GHC ghc-devs at haskell.org
Thu May 28 03:14:45 UTC 2015


#10458: GHCi fails to load shared object (the 'impossible' happened)
-----------------------------------------+---------------------------------
              Reporter:  rleslie         |             Owner:
                  Type:  bug             |            Status:  new
              Priority:  normal          |         Milestone:
             Component:  GHCi            |           Version:  7.10.1
              Keywords:                  |  Operating System:  Linux
          Architecture:  x86_64 (amd64)  |   Type of failure:  None/Unknown
             Test Case:                  |        Blocked By:
              Blocking:                  |   Related Tickets:
Differential Revisions:                  |
-----------------------------------------+---------------------------------
 I have a project that uses two external libraries, namely `-lcrypt` and
 `-lpcre`. Building with `cabal` and running the resulting executable works
 as expected, but I'm having trouble starting a REPL in GHCi:

 {{{
 % cabal repl
 Preprocessing executable 'etamoo' for EtaMOO-0.2.1.0...
 GHCi, version 7.10.1: http://www.haskell.org/ghc/  :? for help
 /usr/bin/ld: dist/build/etamoo/etamoo-tmp/src/cbits/crypt.o: relocation
 R_X86_64_PC32 against undefined symbol `crypt' can not be used when making
 a shared object; recompile with -fPIC
 /usr/bin/ld: final link failed: Bad value
 collect2: error: ld returned 1 exit status
 }}}

 The error suggests I need `-fPIC`, and this seems to help the `-lcrypt`
 case, but now I get:

 {{{
 % cabal repl --ghc-options="-fPIC"
 Preprocessing executable 'etamoo' for EtaMOO-0.2.1.0...
 GHCi, version 7.10.1: http://www.haskell.org/ghc/  :? for help
 ghc: panic! (the 'impossible' happened)
   (GHC version 7.10.1 for x86_64-unknown-linux):
         Loading temp shared object failed:
 /tmp/ghc21539_0/libghc21539_2.so: undefined symbol: pcre_callout

 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
 }}}

 FYI the C type of `pcre_callout` is a little unusual:

 {{{
 extern int (*pcre_callout)(pcre_callout_block *);
 }}}

 In other words it is a global variable (pointer to function), not a
 function itself.

 Any advice is welcome, including the proper way to start GHCi given these
 external dependencies, as well as on this apparent bug.

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


More information about the ghc-tickets mailing list