diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -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
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/llvm-pretty-bc-parser.cabal b/llvm-pretty-bc-parser.cabal
--- a/llvm-pretty-bc-parser.cabal
+++ b/llvm-pretty-bc-parser.cabal
@@ -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
 
diff --git a/src/Data/LLVM/BitCode/IR/Constants.hs b/src/Data/LLVM/BitCode/IR/Constants.hs
--- a/src/Data/LLVM/BitCode/IR/Constants.hs
+++ b/src/Data/LLVM/BitCode/IR/Constants.hs
@@ -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]
diff --git a/unit-test/Tests/Instances.hs b/unit-test/Tests/Instances.hs
--- a/unit-test/Tests/Instances.hs
+++ b/unit-test/Tests/Instances.hs
@@ -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
