llvm-pretty-bc-parser 0.5.0.0 → 0.5.1.0
raw patch · 5 files changed
+22/−13 lines, 5 filesdep −binarydep −monadLibdep ~containersnew-uploaderPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: binary, monadLib
Dependency ranges changed: containers
API changes (from Hackage documentation)
- Data.LLVM.Internal: type PGlobalAttachments = Map Symbol (Map KindMd PValMd)
+ Data.LLVM.Internal: type PGlobalAttachments = Map Symbol Map KindMd PValMd
Files
- CHANGELOG.md +5/−0
- README.md +3/−3
- llvm-pretty-bc-parser.cabal +3/−8
- src/Data/LLVM/BitCode/IR/Constants.hs +10/−2
- unit-test/Tests/Instances.hs +1/−0
CHANGELOG.md view
@@ -1,5 +1,10 @@ # Revision history for llvm-pretty-bc-parser +## 0.5.1.0 (October 2025)++* Support parsing data layout strings that specify function pointer alignment.+* Implement `CST_CODE_STRING`, allowing the parsing of bitcode files containing strings without null terminators (as may be generated by languages other than C).+ ## 0.5.0.0 (March 2025) * `Data.LLVM.BitCode` now defines funtions (whose names all end with
README.md view
@@ -59,9 +59,9 @@ the developers' documentation for more details and a rationale: [doc/developing.md](./doc/developing.md). Currently supported: -- GHC 9.4.5-- GHC 9.6.2-- GHC 9.8.1+- GHC 9.6.6+- GHC 9.8.4+- GHC 9.10.1 [fuzz-workflow]: https://github.com/GaloisInc/llvm-pretty-bc-parser/blob/master/.github/workflows/llvm-quick-fuzz.yml [llvm13]: https://github.com/GaloisInc/llvm-pretty-bc-parser/issues?q=is%3Aopen+is%3Aissue+label%3Allvm%2F13.0
llvm-pretty-bc-parser.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 Name: llvm-pretty-bc-parser-Version: 0.5.0.0+Version: 0.5.1.0 License: BSD-3-Clause License-file: LICENSE Author: Trevor Elliott <trevor@galois.com>@@ -10,7 +10,7 @@ Category: Text Build-type: Simple Synopsis: LLVM bitcode parsing library-Tested-with: GHC==9.4, GHC==9.6, GHC==9.8+Tested-with: GHC==9.6, GHC==9.8, GHC==9.10 Description: A parser for the LLVM bitcode file format, yielding a Module from the@@ -71,7 +71,6 @@ Build-depends: array >= 0.3, base >= 4.8 && < 5,- binary >= 0.8, bytestring >= 0.10, containers >= 0.4, fgl >= 5.5,@@ -89,16 +88,12 @@ -O2 -funbox-strict-fields Hs-source-dirs: llvm-disasm- Build-depends: array >= 0.3,- base,- binary >= 0.8,+ Build-depends: base, bytestring,- containers >= 0.4, fgl >= 5.5, fgl-visualize >= 0.1, llvm-pretty-bc-parser, llvm-pretty,- monadLib >= 3.7.2, pretty >= 1.0.1, pretty-show >= 1.6
src/Data/LLVM/BitCode/IR/Constants.hs view
@@ -6,6 +6,7 @@ module Data.LLVM.BitCode.IR.Constants where +import Control.Applicative ( (<|>) ) import qualified Data.LLVM.BitCode.Assert as Assert import Data.LLVM.BitCode.Bitstream import Data.LLVM.BitCode.Match@@ -205,6 +206,9 @@ -> Parse (Parse Type, [Typed PValue]) parseConstantEntry t (getTy,cs) (fromEntry -> Just r) =+ let parseCString = parseField r 0 (fieldArray (fieldChar6 ||| char))+ `mplus` parseFields r 0 (fieldChar6 ||| char)+ in label "CONSTANTS_BLOCK" $ case recordCode r of 1 -> label "CST_CODE_SETTYPE" $ do@@ -280,13 +284,17 @@ let field = parseField r ty <- getTy values <- field 0 (fieldArray char)+ <|>+ -- CST_CODE_STRING changed to be identical to CST_CODE_CSTRING in+ -- llvm commit bb8278a (4 Feb 2012, released in llvmorg-3.1.0-rc1+ -- in 18 Apr 2012) with the exception of adding a trailing null.+ parseCString return (getTy, Typed ty (ValString values):cs) -- [values] 9 -> label "CST_CODE_CSTRING" $ do ty <- getTy- values <- parseField r 0 (fieldArray (fieldChar6 ||| char))- `mplus` parseFields r 0 (fieldChar6 ||| char)+ values <- parseCString return (getTy, Typed ty (ValString (values ++ [0])):cs) -- [opcode,opval,opval]
unit-test/Tests/Instances.hs view
@@ -29,6 +29,7 @@ instance Arbitrary UnnamedMd where arbitrary = genericArbitrary uniform instance Arbitrary GlobalAlias where arbitrary = genericArbitrary uniform instance Arbitrary LayoutSpec where arbitrary = genericArbitrary uniform+instance Arbitrary FunctionPointerAlignType where arbitrary = genericArbitrary uniform instance Arbitrary Mangling where arbitrary = genericArbitrary uniform instance Arbitrary SelectionKind where arbitrary = genericArbitrary uniform instance Arbitrary lab => Arbitrary (NullResult lab) where arbitrary = genericArbitrary uniform