Cabal-version: 2.2
Name: crucible-llvm
Version: 0.9
Author: Galois Inc.
Copyright: (c) Galois, Inc 2014-2022
Maintainer: rscott@galois.com, kquick@galois.com, langston@galois.com
License: BSD-3-Clause
License-file: LICENSE
Build-type: Simple
Category: Language
Synopsis: Support for translating and executing LLVM code in Crucible
Description:
Library providing LLVM-specific extensions to the crucible core library
for Crucible-based simulation and verification of LLVM-compiled applications.
extra-doc-files: CHANGELOG.md, README.md
source-repository head
type: git
location: https://github.com/GaloisInc/crucible
subdir: crucible-llvm
common bldflags
ghc-options: -Wall
-Werror=incomplete-patterns
-Werror=missing-methods
-Werror=overlapping-patterns
-Wpartial-fields
-Wincomplete-uni-patterns
ghc-prof-options: -O2 -fprof-auto-exported
default-language: Haskell2010
common warns
-- Specifying -Wall and -Werror can cause the project to fail to build on
-- newer versions of GHC simply due to new warnings being added to -Wall. To
-- prevent this from happening we manually list which warnings should be
-- considered errors. We also list some warnings that are not in -Wall, though
-- try to avoid "opinionated" warnings (though this judgement is clearly
-- subjective).
--
-- Warnings are grouped by the GHC version that introduced them, and then
-- alphabetically.
--
-- A list of warnings and the GHC version in which they were introduced is
-- available here:
-- https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html
-- Since GHC 9.6 or earlier:
ghc-options:
-Wall
-Werror=ambiguous-fields
-Werror=compat-unqualified-imports
-Werror=deferred-type-errors
-Werror=deprecated-flags
-Werror=deprecations
-Werror=deriving-defaults
-Werror=deriving-typeable
-Werror=dodgy-foreign-imports
-Werror=duplicate-exports
-Werror=empty-enumerations
-Werror=gadt-mono-local-binds
-Werror=identities
-Werror=inaccessible-code
-Werror=incomplete-patterns
-Werror=incomplete-record-updates
-Werror=incomplete-uni-patterns
-Werror=inline-rule-shadowing
-Werror=misplaced-pragmas
-Werror=missed-extra-shared-lib
-Werror=missing-exported-signatures
-Werror=missing-fields
-Werror=missing-home-modules
-Werror=missing-methods
-Werror=missing-pattern-synonym-signatures
-Werror=missing-signatures
-Werror=name-shadowing
-Werror=noncanonical-monad-instances
-Werror=noncanonical-monoid-instances
-Werror=operator-whitespace
-Werror=operator-whitespace-ext-conflict
-Werror=orphans
-Werror=overflowed-literals
-Werror=overlapping-patterns
-Werror=partial-fields
-Werror=partial-type-signatures
-Werror=redundant-bang-patterns
-Werror=redundant-record-wildcards
-Werror=redundant-strictness-flags
-Werror=simplifiable-class-constraints
-Werror=star-binder
-Werror=star-is-type
-Werror=tabs
-Werror=type-defaults
-Werror=typed-holes
-Werror=type-equality-out-of-scope
-Werror=type-equality-requires-operators
-Werror=unicode-bidirectional-format-characters
-Werror=unrecognised-pragmas
-Werror=unrecognised-warning-flags
-Werror=unsupported-calling-conventions
-Werror=unsupported-llvm-version
-Werror=unused-do-bind
-Werror=unused-imports
-Werror=unused-record-wildcards
-Werror=warnings-deprecations
-Werror=wrong-do-bind
if impl(ghc < 9.8)
ghc-options:
-Werror=forall-identifier
if impl(ghc >= 9.8)
ghc-options:
-Werror=incomplete-export-warnings
-Werror=inconsistent-flags
if impl(ghc >= 9.10)
ghc-options:
-Werror=badly-staged-types
-Werror=data-kinds-tc
-Werror=deprecated-type-abstractions
-Werror=incomplete-record-selectors
library
import: bldflags
build-depends:
base >= 4.13 && < 4.21,
attoparsec,
bv-sized >= 1.0.0,
bytestring,
containers >= 0.5.8.0,
crucible >= 0.5,
crucible-symio,
what4 >= 0.5,
extra,
lens,
itanium-abi >= 0.1.1.1 && < 0.2,
llvm-pretty >= 0.12.1 && < 0.15,
mtl,
parameterized-utils >= 2.1.5 && < 2.2,
pretty,
prettyprinter >= 1.7.0,
text,
template-haskell,
transformers,
utf8-string,
vector
hs-source-dirs: src
exposed-modules:
Lang.Crucible.LLVM
Lang.Crucible.LLVM.Arch.Util
Lang.Crucible.LLVM.Arch.X86
Lang.Crucible.LLVM.ArraySizeProfile
Lang.Crucible.LLVM.Bytes
Lang.Crucible.LLVM.Ctors
Lang.Crucible.LLVM.DataLayout
Lang.Crucible.LLVM.Errors
Lang.Crucible.LLVM.Errors.MemoryError
Lang.Crucible.LLVM.Errors.Poison
Lang.Crucible.LLVM.Errors.UndefinedBehavior
Lang.Crucible.LLVM.Eval
Lang.Crucible.LLVM.Extension
Lang.Crucible.LLVM.Functions
Lang.Crucible.LLVM.Globals
Lang.Crucible.LLVM.Internal
Lang.Crucible.LLVM.Intrinsics
Lang.Crucible.LLVM.Intrinsics.Cast
Lang.Crucible.LLVM.Intrinsics.Libc
Lang.Crucible.LLVM.Intrinsics.LLVM
Lang.Crucible.LLVM.MalformedLLVMModule
Lang.Crucible.LLVM.MemModel
Lang.Crucible.LLVM.MemModel.CallStack
Lang.Crucible.LLVM.MemModel.CallStack.Internal
Lang.Crucible.LLVM.MemModel.Generic
Lang.Crucible.LLVM.MemModel.MemLog
Lang.Crucible.LLVM.MemModel.Partial
Lang.Crucible.LLVM.MemModel.Pointer
Lang.Crucible.LLVM.MemModel.Strings
Lang.Crucible.LLVM.MemType
Lang.Crucible.LLVM.PrettyPrint
Lang.Crucible.LLVM.Printf
Lang.Crucible.LLVM.QQ
Lang.Crucible.LLVM.SymIO
Lang.Crucible.LLVM.SimpleLoopFixpoint
Lang.Crucible.LLVM.SimpleLoopFixpointCHC
Lang.Crucible.LLVM.SimpleLoopInvariant
Lang.Crucible.LLVM.Translation
Lang.Crucible.LLVM.Translation.Aliases
Lang.Crucible.LLVM.TypeContext
other-modules:
Lang.Crucible.LLVM.Errors.Standards
Lang.Crucible.LLVM.Extension.Arch
Lang.Crucible.LLVM.Extension.Syntax
Lang.Crucible.LLVM.Intrinsics.Common
Lang.Crucible.LLVM.Intrinsics.Libcxx
Lang.Crucible.LLVM.Intrinsics.Match
Lang.Crucible.LLVM.Intrinsics.Options
Lang.Crucible.LLVM.MemModel.Common
Lang.Crucible.LLVM.MemModel.Options
Lang.Crucible.LLVM.MemModel.Type
Lang.Crucible.LLVM.MemModel.Value
Lang.Crucible.LLVM.Translation.BlockInfo
Lang.Crucible.LLVM.Translation.Constant
Lang.Crucible.LLVM.Translation.Expr
Lang.Crucible.LLVM.Translation.Instruction
Lang.Crucible.LLVM.Translation.Monad
Lang.Crucible.LLVM.Translation.Options
Lang.Crucible.LLVM.Translation.Types
Lang.Crucible.LLVM.Types
Lang.Crucible.LLVM.Utils
default-extensions: NoStarIsType
test-suite crucible-llvm-tests
import: bldflags
import: warns
type: exitcode-stdio-1.0
main-is: Tests.hs
hs-source-dirs: test
other-modules: MemSetup
, TestFunctions
, TestGlobals
, TestMemory
, TestTranslation
build-depends:
base,
bv-sized,
containers,
crucible,
crucible-llvm,
directory,
filepath,
lens,
llvm-pretty,
llvm-pretty-bc-parser,
lens,
parameterized-utils,
process,
what4,
tasty,
tasty-quickcheck,
tasty-hunit,
tasty-sugar >= 2.0 && < 2.3,
vector