From e26bfe8372fcc2401831a67c728f529ac645143c Mon Sep 17 00:00:00 2001 From: simonmar Date: Mon, 6 Jan 2003 14:40:07 +0000 Subject: [PATCH] [project @ 2003-01-06 14:40:04 by simonmar] Disable the version check on the .hi file for --show-iface. This means that it can be used on .hi files for other "ways" (eg. profiled) without having to resort to using the undocumented -buildtag option. --- ghc/compiler/main/BinIface.hs | 10 +++++++--- ghc/compiler/main/MkIface.lhs | 6 +++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ghc/compiler/main/BinIface.hs b/ghc/compiler/main/BinIface.hs index 8915ef2..2e582bb 100644 --- a/ghc/compiler/main/BinIface.hs +++ b/ghc/compiler/main/BinIface.hs @@ -5,7 +5,7 @@ -- -- Binary interface file support. -module BinIface ( writeBinIface, readBinIface ) where +module BinIface ( writeBinIface, readBinIface, v_IgnoreHiVersion ) where #include "HsVersions.h" @@ -32,8 +32,9 @@ import CmdLineOpts ( opt_IgnoreIfacePragmas, opt_HiVersion ) import Panic import SrcLoc import Binary +import Util -import DATA_IOREF ( readIORef ) +import DATA_IOREF import EXCEPTION ( throwDyn ) import Monad ( when ) @@ -354,9 +355,10 @@ instance Binary ParsedIface where lazyPut bh deprecs get bh = do check_ver <- get bh + ignore_ver <- readIORef v_IgnoreHiVersion build_tag <- readIORef v_Build_tag let our_ver = show opt_HiVersion ++ build_tag - when (check_ver /= our_ver) $ + when (check_ver /= our_ver && not ignore_ver) $ -- use userError because this will be caught by readIface -- which will emit an error msg containing the iface module name. throwDyn (ProgramError ( @@ -388,6 +390,8 @@ instance Binary ParsedIface where pi_rules = rules, pi_deprecs = deprecs }) +GLOBAL_VAR(v_IgnoreHiVersion, False, Bool) + -- ---------------------------------------------------------------------------- {-* Generated by DrIFT-v1.0 : Look, but Don't Touch. *-} diff --git a/ghc/compiler/main/MkIface.lhs b/ghc/compiler/main/MkIface.lhs index 5399ec1..432b23a 100644 --- a/ghc/compiler/main/MkIface.lhs +++ b/ghc/compiler/main/MkIface.lhs @@ -65,11 +65,12 @@ import Module ( Module, ModuleName, moduleNameFS, moduleName, isHomeModule, import Outputable import Util ( sortLt, dropList, seqList ) import Binary ( getBinFileWithDict ) -import BinIface ( writeBinIface ) +import BinIface ( writeBinIface, v_IgnoreHiVersion ) import ErrUtils ( dumpIfSet_dyn ) import FiniteMap import FastString +import DATA_IOREF ( writeIORef ) import Monad ( when ) import Maybe ( catMaybes, isJust, isNothing ) import Maybes ( orElse ) @@ -86,6 +87,9 @@ import IO ( putStrLn ) \begin{code} showIface :: FilePath -> IO () showIface filename = do + -- skip the version check; we don't want to worry about profiled vs. + -- non-profiled interfaces, for example. + writeIORef v_IgnoreHiVersion True parsed_iface <- Binary.getBinFileWithDict filename let ParsedIface{ pi_mod=pi_mod, pi_pkg=pi_pkg, pi_vers=pi_vers, -- 1.7.10.4