[GHC] #14829: Linking error with ANN pragma

GHC ghc-devs at haskell.org
Tue Feb 20 14:38:06 UTC 2018


#14829: Linking error with ANN pragma
-------------------------------------+-------------------------------------
        Reporter:  ehubinette        |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.2
      Resolution:                    |             Keywords:
Operating System:  Linux             |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash or panic                     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Description changed by ehubinette:

Old description:

> There seems to be an issue with the ANN pragma, with fatal compilation
> errors.
>
> To reproduce, setup two modules as such:
>
> {{{#!hs
> module Test where
>
> import Weights (Weight(..))
>
> {-# ANN mainTest (Weight 2) #-}
> mainTest :: IO ()
> mainTest = return ()
> }}}
>
> {{{#!hs
> {-# LANGUAGE DeriveDataTypeable #-}
> module Weights (Weight(..)) where
>
> import Data.Data (Data(..))
>
> newtype Weight = Weight Integer deriving Data
> }}}
>

>
> Compiling with GHC version `8.2.2` yields:
>
> {{{
> λ ghc Test.hs
> [2 of 2] Compiling Test             ( Test.hs, Test.o )
> Test.hs:5:1: fatal:
>     cannot find object file ‘./Weights.dyn_o’
>     while linking an interpreted expression
> }}}
>
> The issue persists with `-dynamic-too`:
>
> {{{
> λ ghc -dynamic-too Test.hs
> [2 of 2] Compiling Test             ( Test.hs, Test.o )
> Test.hs:5:1: fatal:
>     cannot find object file ‘./Weights.dyn_o’
>     while linking an interpreted expression
> }}}
>
> ...but disappears with `-dynamic`:
>
> {{{
> λ ghc -dynamic Test.hs
> [1 of 2] Compiling Weights          ( Weights.hs, Weights.o )
> [2 of 2] Compiling Test             ( Test.hs, Test.o )
> }}}
>

> Sidenote: with GHC version `8.5.20180219`, the issue disappears with
> `-dynamic-too` ''or'' `-dynamic`:
>
> {{{
> λ ../../ghc/inplace/bin/ghc-stage2 -dynamic-too Test.hs
> [1 of 2] Compiling Weights          ( Weights.hs, Weights.o )
> [2 of 2] Compiling Test             ( Test.hs, Test.o )
> }}}
>

> Remove the ANN pragma, and the compiler behaves just fine with both GHC
> versions. Please tell me if I can provide more information. Cheers.

New description:

 There seems to be an issue with the ANN pragma, with fatal compilation
 errors.

 To reproduce, setup two modules as such:

 {{{#!hs
 module Test where

 import Weights (Weight(..))

 {-# ANN mainTest (Weight 2) #-}
 mainTest :: IO ()
 mainTest = return ()
 }}}

 {{{#!hs
 {-# LANGUAGE DeriveDataTypeable #-}
 module Weights (Weight(..)) where

 import Data.Data (Data(..))

 newtype Weight = Weight Integer deriving Data
 }}}



 Compiling with GHC version `8.2.2` yields:

 {{{
 λ ghc Test.hs
 [1 of 2] Compiling Weights          ( Weights.hs, Weights.o )
 [2 of 2] Compiling Test             ( Test.hs, Test.o )
 Test.hs:5:1: fatal:
     cannot find object file ‘./Weights.dyn_o’
     while linking an interpreted expression
 }}}

 The issue disappears with `-dynamic` or `-dynamic-too`:

 {{{
 λ ghc -dynamic Test.hs
 [1 of 2] Compiling Weights          ( Weights.hs, Weights.o )
 [2 of 2] Compiling Test             ( Test.hs, Test.o )
 }}}


 Issue persist in HEAD, GHC version `8.5.20180219`, but again disappears
 with `-dynamic-too` ''or'' `-dynamic`:

 {{{
 λ ../../ghc/inplace/bin/ghc-stage2 -dynamic-too Test.hs
 [1 of 2] Compiling Weights          ( Weights.hs, Weights.o )
 [2 of 2] Compiling Test             ( Test.hs, Test.o )
 }}}


 Remove the ANN pragma, and the compiler behaves just fine with both GHC
 versions. Please tell me if I can provide more information. Cheers.

--

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


More information about the ghc-tickets mailing list