[Haskell-cafe] ghc6: Re: Update: ... compiling ghc6
Svante Signell
svante.signell at telia.com
Mon Apr 11 00:42:17 CEST 2011
Addressing both Haskell and Hurd people here. Any hints by anyone?
On Wed, 2011-04-06 at 09:30 +0200, Svante Signell wrote:
...
> #5 0x011d3ce0 in __libc_read (fd=DWARF-2 expression error: DW_OP_reg
> operations must be used either alone or in conjuction with DW_OP_piece
> or DW_OP_bit_piece.
> ) at ../sysdeps/mach/hurd/read.c:27
> #6 0x084919c8 in s9qJ_ret ()
> #7 0x0861f842 in StgRun ()
> #8 0x087c44e0 in ?? ()
Looking into this further, this looks like an error. What does it mean?
from eglibc-2.11.2/sysdeps/mach/hurd/read.c
/* Read NBYTES into BUF from FD. Return the number read or -1. */
ssize_t
__libc_read (int fd, void *buf, size_t nbytes)
{
error_t err = HURD_FD_USE (fd, _hurd_fd_read (descriptor, buf,
&nbytes, -1));
return err ? __hurd_dfail (fd, err) : nbytes;
}
The call is from the haskell binary cabal-bin but I don't have any debug
info from that executable. Anybody fluent in Haskell?
(How to get debug info in Haskell with gdb?)
Below is the (stripped-down) call and the source code cabal-bin.hs:
cd libraries/random:
../cabal-bin /usr/bin/ghc6 ../bootstrapping.conf configure --verbose=3
--with-compiler=../../ghc/stage1-inplace/ghc
--with-hc-pkg=../../utils/ghc-pkg/install-inplace/bin/ghc-pkg
module Main (main) where
import Control.Monad
import Data.Maybe
import Distribution.PackageDescription
import Distribution.PackageDescription.Parse
import Distribution.Simple
import Distribution.Simple.Utils
import Distribution.Verbosity
import System.Directory
import System.Environment
import System.FilePath
import qualified Distribution.Make as Make
import qualified Distribution.Simple as Simple
setupProg :: FilePath
setupProg = "./Setup"
main :: IO ()
main = do
unprocessedArgs <- getArgs
let verbosity = verbose
case unprocessedArgs of
ghc : packageConf : args ->
doit verbosity ghc packageConf args
_ -> die "Bad args"
doit :: Verbosity -> FilePath -> FilePath -> [String] -> IO ()
doit verbosity ghc packageConf args = do
exists <- doesFileExist setupProg
if exists then rawSystemExit verbosity setupProg args
else do
gpdFile <- defaultPackageDesc verbosity
gpd <- readPackageDescription verbosity gpdFile
let pd = packageDescription gpd
case buildType pd of
Just Simple -> Simple.defaultMainArgs args
Just Make -> Make.defaultMainArgs args
Just Configure -> defaultMainWithHooksArgs autoconfUserHooks args
_ | packageName pd == PackageName "Cabal" ->
-- Cabal is special...*sigh*
Simple.defaultMainArgs args
| otherwise -> runSetup verbosity ghc packageConf args
runSetup :: Verbosity -> FilePath -> FilePath -> [String] -> IO ()
runSetup verbosity ghc packageConf args = do
-- Don't bother building Setup if we are cleaning. If we need to
-- build Setup in order to build, and Setup isn't built already,
-- then there shouldn't be anything to clean anyway.
unless cleaning $
rawSystemExit verbosity ghc ["-package-conf", packageConf,
"--make", "Setup", "-o", "Setup"]
rawSystemExit verbosity "./Setup" args
where cleaning = case args of
"clean" : _ -> True
_ -> False
More information about the Haskell-Cafe
mailing list