Skip to content

Commit

Permalink
Support building with GHC 9.6
Browse files Browse the repository at this point in the history
This patch contains a handful of tweaks needed to make the libraries in the
`macaw` repo build with GHC 9.6:

* GHC 9.6 bundles `mtl-2.3.*`, which no longer re-exports `Control.Monad`,
  `Control.Monad.Trans`, and similar modules from `mtl`-related modules. To
  accommodate this, various imports have been made more explicit.
* I have disambiguated a use of `Data.Parameterized.NatRepr.withKnownNat` in
  `macaw-aarch32` to avoid clashing with a newly exported function of the same
  name in `GHC.TypeNats`.
* I have bumped various upper version bounds on `doctest`,
  `optparse-applicative`, and `what4` to allow building these libraries with
  GHC 9.6.
* I have bumped the following submodules to bring in GHC 9.6–related changes:
  * `asl-translator`: GaloisInc/asl-translator#53
  * `crucible`: GaloisInc/crucible#1102
  * `dwarf`: GaloisInc/dwarf#6
  * `elf-edit`: GaloisInc/elf-edit#38
  * `flexdis86`: GaloisInc/flexdis86#54
  * `grift`: GaloisInc/grift#9
  * `llvm-pretty`: GaloisInc/llvm-pretty#112
  * `llvm-pretty-bc-parser`: GaloisInc/llvm-pretty-bc-parser#225
  * `semmc`: GaloisInc/semmc#80
  * `what4`: GaloisInc/what4#235
  • Loading branch information
RyanGlScott committed Aug 21, 2023
1 parent 2ce038c commit 984f7cb
Show file tree
Hide file tree
Showing 27 changed files with 55 additions and 40 deletions.
3 changes: 2 additions & 1 deletion base/src/Data/Macaw/AbsDomain/AbsState.hs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ module Data.Macaw.AbsDomain.AbsState

import Control.Exception (assert)
import Control.Lens
import Control.Monad.State.Strict
import Control.Monad (guard)
import Control.Monad.State.Strict (MonadState(..), State, modify, runState)
import Data.Bits
import Data.Foldable
import Data.Int
Expand Down
2 changes: 1 addition & 1 deletion base/src/Data/Macaw/AbsDomain/JumpBounds.hs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ module Data.Macaw.AbsDomain.JumpBounds
, IntraJumpTarget
) where

import Control.Monad.Reader
import Control.Monad (unless, when)
import Data.Bits
import Data.Foldable
import Data.Map.Strict (Map)
Expand Down
4 changes: 2 additions & 2 deletions base/src/Data/Macaw/AbsDomain/StackAnalysis.hs
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ module Data.Macaw.AbsDomain.StackAnalysis
, MemVal(..)
) where

import Control.Monad.Reader
import Control.Monad.State
import Control.Monad (unless)
import Control.Monad.State (MonadState(..), State, evalState, gets)
import Data.Kind
import Data.Map.Strict (Map)
import qualified Data.Map.Strict as Map
Expand Down
7 changes: 4 additions & 3 deletions base/src/Data/Macaw/Analysis/FunctionArgs.hs
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,10 @@ module Data.Macaw.Analysis.FunctionArgs
) where

import Control.Lens
import Control.Monad.Except
import Control.Monad.Reader
import Control.Monad.State.Strict
import Control.Monad (when)
import Control.Monad.Except (Except, MonadError(..), runExcept)
import Control.Monad.Reader (MonadReader(..), ReaderT(..), asks)
import Control.Monad.State.Strict (State, StateT, evalStateT, gets, modify', runState)
import Data.Foldable
import qualified Data.Kind as Kind
import Data.Map.Strict (Map)
Expand Down
7 changes: 4 additions & 3 deletions base/src/Data/Macaw/Analysis/RegisterUse.hs
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,10 @@ module Data.Macaw.Analysis.RegisterUse
) where

import Control.Lens
import Control.Monad.Except
import Control.Monad.Reader
import Control.Monad.State.Strict
import Control.Monad (unless, when, zipWithM_)
import Control.Monad.Except (MonadError(..), Except)
import Control.Monad.Reader (MonadReader(..), ReaderT(..), asks)
import Control.Monad.State.Strict (MonadState(..), State, StateT, execStateT, evalState, gets, modify)
import qualified Data.ByteString.Char8 as BSC
import qualified Data.ByteString as BS
import Data.Foldable
Expand Down
3 changes: 2 additions & 1 deletion base/src/Data/Macaw/CFG/Core.hs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,8 @@ module Data.Macaw.CFG.Core
) where

import Control.Lens
import Control.Monad.State.Strict
import Control.Monad (when)
import Control.Monad.State.Strict (MonadState(..), State, gets, modify, runState)
import Data.Bits
import Data.Int (Int64)
import qualified Data.Kind as Kind
Expand Down
3 changes: 2 additions & 1 deletion base/src/Data/Macaw/CFG/DemandSet.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ module Data.Macaw.CFG.DemandSet
, stmtNeeded
) where

import Control.Monad.State.Strict
import Control.Monad (when)
import Control.Monad.State.Strict (MonadState(..), State, execState, gets)
import Data.Parameterized.Some
import Data.Parameterized.TraversableF
import Data.Parameterized.TraversableFC
Expand Down
4 changes: 3 additions & 1 deletion base/src/Data/Macaw/CFG/Rewriter.hs
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,10 @@ module Data.Macaw.CFG.Rewriter
) where

import Control.Lens
import Control.Monad (when)
import Control.Monad.ST
import Control.Monad.State.Strict
import Control.Monad.State.Strict (StateT(..), gets)
import Control.Monad.Trans (MonadTrans(..))
import Data.BinarySymbols
import Data.Bits
import Data.List (find)
Expand Down
5 changes: 3 additions & 2 deletions base/src/Data/Macaw/Memory/ElfLoader.hs
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@ module Data.Macaw.Memory.ElfLoader
) where

import Control.Lens
import Control.Monad.Except
import Control.Monad.State.Strict
import Control.Monad (when)
import Control.Monad.Except (Except, ExceptT, MonadError(..), runExcept, runExceptT)
import Control.Monad.State.Strict (State, StateT(..), execStateT, gets, modify, runState)
import Data.Bits
import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as BSC
Expand Down
2 changes: 1 addition & 1 deletion deps/crucible
Submodule crucible updated 3566 files
2 changes: 1 addition & 1 deletion deps/grift
2 changes: 1 addition & 1 deletion deps/llvm-pretty
2 changes: 1 addition & 1 deletion deps/llvm-pretty-bc-parser
Submodule llvm-pretty-bc-parser updated 57 files
+5 −3 .github/workflows/build.yml
+5 −2 .github/workflows/llvm-quick-fuzz.yml
+68 −0 .github/workflows/nix-ci.yml
+8 −4 README.md
+590 −175 disasm-test/Main.hs
+45 −0 disasm-test/README.md
+52 −0 disasm-test/known_bugs/README.md
+10 −0 disasm-test/known_bugs/llvm-pretty_issue114
+6 −0 disasm-test/known_bugs/pr223pr228.txt
+10 −0 disasm-test/tests/btf-tag-dicompositetype.ll
+1 −0 disasm-test/tests/btf-tag-dicompositetype.pre-llvm14.ll
+10 −0 disasm-test/tests/btf-tag-diderivedtype.ll
+1 −0 disasm-test/tests/btf-tag-diderivedtype.pre-llvm14.ll
+15 −0 disasm-test/tests/btf-tag-diglobalvariable.ll
+1 −0 disasm-test/tests/btf-tag-diglobalvariable.pre-llvm14.ll
+14 −0 disasm-test/tests/btf-tag-dilocalvariable.ll
+1 −0 disasm-test/tests/btf-tag-dilocalvariable.pre-llvm14.ll
+15 −0 disasm-test/tests/btf-tag-disubprogram.ll
+1 −0 disasm-test/tests/btf-tag-disubprogram.pre-llvm14.ll
+18 −0 disasm-test/tests/callbr.c
+37 −30 disasm-test/tests/callbr.ll
+40 −0 disasm-test/tests/callbr.pre-llvm15.ll
+0 −0 disasm-test/tests/di-arg-list.ll
+1 −0 disasm-test/tests/di-arg-list.pre-llvm13.ll
+4 −0 disasm-test/tests/diderivedtype-address-space.at-least-llvm14.ll
+32 −0 disasm-test/tests/dilocalvariable.ll
+1 −0 disasm-test/tests/dilocalvariable.pre-llvm14.ll
+4 −0 disasm-test/tests/opaque-atomicrmw.ll
+4 −0 disasm-test/tests/opaque-atomicrmw.pre-llvm15.ll
+11 −0 disasm-test/tests/opaque-call.ll
+4 −0 disasm-test/tests/opaque-call.pre-llvm15.ll
+9 −0 disasm-test/tests/opaque-constant-getelementptr.ll
+4 −0 disasm-test/tests/opaque-constant-getelementptr.pre-llvm15.ll
+8 −0 disasm-test/tests/opaque-getelementptr.ll
+4 −0 disasm-test/tests/opaque-getelementptr.pre-llvm15.ll
+94 −0 disasm-test/tests/p0.c
+533 −0 disasm-test/tests/p0.ll
+0 −0 disasm-test/tests/poison.ll
+1 −0 disasm-test/tests/poison.pre-llvm12.ll
+256 −0 flake.lock
+203 −0 flake.nix
+3 −11 fuzzing/Main.hs
+1 −1 llvm-pretty
+26 −12 llvm-pretty-bc-parser.cabal
+25 −32 src/Data/LLVM/BitCode/Assert.hs
+55 −19 src/Data/LLVM/BitCode/IR/Constants.hs
+43 −76 src/Data/LLVM/BitCode/IR/Function.hs
+31 −10 src/Data/LLVM/BitCode/IR/Metadata.hs
+21 −0 src/Data/LLVM/BitCode/IR/Types.hs
+5 −3 src/Data/LLVM/BitCode/Parse.hs
+43 −0 unit-test/Tests/ExpressionInstances.hs
+24 −0 unit-test/Tests/FuncDataInstances.hs
+21 −75 unit-test/Tests/Instances.hs
+2 −1 unit-test/Tests/Metadata.hs
+13 −0 unit-test/Tests/PrimInstances.hs
+15 −0 unit-test/Tests/StmtInstances.hs
+15 −0 unit-test/Tests/TripleInstances.hs
2 changes: 1 addition & 1 deletion macaw-aarch32/src/Data/Macaw/ARM/Semantics/TH.hs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ import Data.Parameterized.Classes
import qualified Data.Parameterized.Context as Ctx
import qualified Data.Parameterized.TraversableFC as FC
import Data.Parameterized.NatRepr
import GHC.TypeLits as TL
import qualified GHC.TypeLits as TL
import qualified What4.Expr.Builder as WEB
import Language.Haskell.TH
import qualified SemMC.Architecture.AArch32 as ARM
Expand Down
2 changes: 1 addition & 1 deletion macaw-semmc/macaw-semmc.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ library
semmc,
bv-sized >= 1 && < 1.1,
libBF >= 0.6 && < 0.7,
what4 >= 1.1 && < 1.5
what4 >= 1.1 && < 1.6
hs-source-dirs: src
default-language: Haskell2010
ghc-options: -Wall -Wcompat
2 changes: 1 addition & 1 deletion refinement/macaw-refinement.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ test-suite test-refinements
, crucible
, crucible-llvm
, what4
, optparse-applicative >= 0.13 && < 0.17
, optparse-applicative >= 0.13 && < 0.19
, parameterized-utils
, QuickCheck >= 2.7
, semmc-ppc
Expand Down
4 changes: 2 additions & 2 deletions symbolic/macaw-symbolic.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ library
text,
vector,
bytestring,
what4 >= 1.1 && < 1.5
what4 >= 1.1 && < 1.6

hs-source-dirs: src

Expand Down Expand Up @@ -56,6 +56,6 @@ test-suite doctests
hs-source-dirs: test
main-is: doctest.hs
ghc-options: -Wall -Wcompat -threaded
build-depends: base, macaw-base, macaw-symbolic, doctest >= 0.10 && < 0.21
build-depends: base, macaw-base, macaw-symbolic, doctest >= 0.10 && < 0.23


7 changes: 5 additions & 2 deletions symbolic/src/Data/Macaw/Symbolic/CrucGen.hs
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,14 @@ module Data.Macaw.Symbolic.CrucGen
) where

import Control.Lens hiding (Empty, (:>))
import Control.Monad.Except
import Control.Monad (foldM, forM, unless)
import Control.Monad.Except (MonadError(..), ExceptT, runExceptT)
import qualified Control.Monad.Fail as MF
import Control.Monad.State.Strict
import Control.Monad.State.Strict (MonadState(..), StateT(..), gets, modify')
import Control.Monad.Trans (MonadTrans(..))
import qualified Data.BitVector.Sized as BV
import qualified Data.Foldable as F
import Data.Functor (void)
import qualified Data.Kind as K
import qualified Data.Macaw.CFG as M
import qualified Data.Macaw.CFG.Block as M
Expand Down
5 changes: 3 additions & 2 deletions x86/src/Data/Macaw/X86.hs
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,10 @@ module Data.Macaw.X86
) where

import Control.Lens
import Control.Monad.Cont
import Control.Monad.Except
import Control.Monad (when)
import Control.Monad.Except (ExceptT, MonadError(..), runExceptT, withExceptT)
import Control.Monad.ST
import Control.Monad.Trans (MonadTrans(..))
import qualified Data.ElfEdit as EE
import Data.Foldable
import qualified Data.Map as Map
Expand Down
5 changes: 3 additions & 2 deletions x86/src/Data/Macaw/X86/Flexdis.hs
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ module Data.Macaw.X86.Flexdis
, RelocPos(..)
) where

import Control.Monad.Except
import Control.Monad (when)
import Control.Monad.Except (ExceptT, MonadError(..), runExceptT)
import qualified Control.Monad.Fail as MF
import Control.Monad.State.Strict
import Control.Monad.State.Strict (MonadState(..), State, gets, runState)
import Data.Bits
import qualified Data.ByteString as BS
import Data.Int
Expand Down
10 changes: 6 additions & 4 deletions x86/src/Data/Macaw/X86/Generator.hs
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,13 @@ module Data.Macaw.X86.Generator
) where

import Control.Lens
import Control.Monad.Cont
import Control.Monad.Except
import Control.Monad.Reader
import Control.Monad (liftM)
import Control.Monad.Cont (ContT(..))
import Control.Monad.Except (MonadError(..), ExceptT)
import Control.Monad.Reader (MonadReader(..), ReaderT(..))
import Control.Monad.ST
import Control.Monad.State.Strict
import Control.Monad.State.Strict (State, modify, runState)
import Control.Monad.Trans (MonadTrans(..))
import Data.Bits
import Data.Foldable
import Data.Macaw.CFG.App
Expand Down

0 comments on commit 984f7cb

Please sign in to comment.