
#13786: GHC panic with "cabal repl" / "stack repl" on GHC 8.0.2 and 7.8.3 -------------------------------------+------------------------------------- Reporter: ppelleti | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Runtime System | Version: 8.0.2 (Linker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by bgamari): * cc: angerman, Jaffacake, rwbarton (added) * component: GHCi => Runtime System (Linker) Comment: I actually wasn't quite correct. `ld` requires that **archives** be provided on the command line in topological order; that is if `libA` refers to `libB`, they must be provided in the order of `libB libA` (alternatively you can explicitly flag a group of archives as a recursive group using the `--start-group`/`--end-group` flags). However, it turns out that there is no such requirement of object files: it seems that you can give them in any order and `ld` will link them without any trouble. Unfortunately, this isn't true of GHCi's linker. We sequentially load one object file after another, failing if we encounter any undefined reference. Perhaps what we should instead do is load the objects as a group, first slurping in the symbol tables of each of them, and only afterwards try to resolve references. This will add some complexity, but will ensure that we offer the same ordering guarantees that `ld` currently provides. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13786#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler