[GHC] #11829: C++ does not catch exceptions when used with Haskell-main and linked by ghc

GHC ghc-devs at haskell.org
Fri Jun 16 03:56:08 UTC 2017


#11829: C++ does not catch exceptions when used with Haskell-main and linked by ghc
-------------------------------------+-------------------------------------
        Reporter:  pl                |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Runtime System    |              Version:  7.10.3
      Resolution:                    |             Keywords:  c++
                                     |  exceptions
Operating System:  MacOS X           |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  Runtime crash     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by mtolly):

 This is still the case on macOS 10.12.5 and GHC 8.0.2. By examining the
 `ld` call from `g++` and experimenting, I discovered the fix is a flag
 that Clang's linker needs. Place this in the cabal file executable
 section:

 {{{
 ld-options: -lto_library
 }}}

 Or use the following flag for GHC:

 {{{
 ghc (source files) -lstdc++ -optl-lto_library
 }}}

 In the cabal file this amusingly parses the flag wrong and produces the
 incorrect advice:

 {{{
 Warning: Instead of 'ld-options: -lto_library' use 'extra-libraries:
 to_library'
 }}}

 and it also prints the message from #5019 for some reason:

 {{{
 ld: warning: could not create compact unwind for _ffi_call_unix64: does
 not use RBP or RSP based frame
 }}}

 [http://llvm.org/docs/LinkTimeOptimization.html Here is some info on what
 the flag does], but I don't quite understand how it is connected to
 exceptions. And [https://reviews.llvm.org/D25932 this page] suggests that
 a newer Clang will supply the flag automatically.

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


More information about the ghc-tickets mailing list