melf 1.3.0 → 1.3.1
raw patch · 6 files changed
+64/−62 lines, 6 filesdep ~bytestringdep ~filepathdep ~lens
Dependency ranges changed: bytestring, filepath, lens, optparse-applicative, tasty, template-haskell
Files
- ChangeLog.md +5/−0
- melf.cabal +7/−11
- src/Control/Exception/ChainedException.hs +6/−6
- src/Data/Elf/Constants.hs +43/−0
- src/Data/Elf/Constants/Data.hs +0/−42
- src/Data/Internal/Elf.hs +3/−3
ChangeLog.md view
@@ -1,3 +1,8 @@+1.3.1+=====++- Support GHC 9.8.2+ 1.3.0 =====
melf.cabal view
@@ -1,11 +1,7 @@ cabal-version: 1.18 --- This file has been generated from package.yaml by hpack version 0.35.2.------ see: https://github.com/sol/hpack- name: melf-version: 1.3.0+version: 1.3.1 synopsis: An Elf parser description: Parser for ELF object format category: Data@@ -18,7 +14,7 @@ license-file: LICENSE build-type: Simple tested-with:- GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.7, GHC == 9.4.4, GHC == 9.6.1+ GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.8, GHC == 9.4.8, GHC == 9.6.4, GHC == 9.8.2 extra-doc-files: ChangeLog.md README.md@@ -73,12 +69,12 @@ build-depends: base >=4.13 && <5.0 , binary >=0.8.7 && <0.9- , bytestring >=0.10.10 && <0.12+ , bytestring >=0.10.10 && <0.13 , exceptions >=0.10.4 && <0.11 , lens >=5.0.1 && <5.3 , mtl >=2.2.2 && <2.4 , prettyprinter >=1.7.0 && <1.8- , template-haskell >=2.15 && <2.21+ , template-haskell >=2.15 && <2.22 default-language: Haskell2010 executable hobjdump@@ -93,7 +89,7 @@ , binary , bytestring , melf- , optparse-applicative >=0.16.1 && <0.18+ , optparse-applicative >=0.16.1 && <0.19 , prettyprinter default-language: Haskell2010 @@ -167,10 +163,10 @@ , bytestring , directory >=1.3.6 && <1.4 , exceptions- , filepath >=1.4.2.1 && <1.5+ , filepath >=1.4.2.1 && <1.6 , melf , prettyprinter- , tasty >=1.4.1 && <1.5+ , tasty >=1.4.1 && <1.6 , tasty-golden >=2.3.4 && <2.4 , tasty-hunit >=0.10.0.3 && <0.11 default-language: Haskell2010
src/Control/Exception/ChainedException.hs view
@@ -37,8 +37,8 @@ -- | Structure to organize the stack of exceptions with locations data ChainedExceptionNext = Null -- ^ exception was initiated by @`chainedError`@- | Next SomeException -- ^ some context was added to @`SomeException`@ by @`addContext`@- | NextChained ChainedException -- ^ some context was added to a @`ChainedException`@ by @`addContext`@+ | Next SomeException -- ^ some context was added to @t`SomeException`@ by @`addContext`@+ | NextChained ChainedException -- ^ some context was added to a @t`ChainedException`@ by @`addContext`@ -- | Exception that keeps track of error locations data ChainedException = ChainedException@@ -77,7 +77,7 @@ -- | @\$chainedError@ results in a function of type -- \'@chainedError :: MonadThrow m => String -> m a@\'.--- It throws `ChainedException` with its argument as error description.+-- It throws t`ChainedException` with its argument as error description. chainedError :: Q Exp chainedError = withLoc [| chainedErrorX |] @@ -95,7 +95,7 @@ -- | @\$addContext@ results in a function of type -- \'@addContext :: MonadCatch m => String -> m a -> m a@\'.--- It runs the second argument and adds `ChainedException` with its first argument+-- It runs the second argument and adds t`ChainedException` with its first argument -- to the exceptions thrown from that monad. addContext :: Q Exp addContext = withLoc [| addContextX |]@@ -109,7 +109,7 @@ -- | @\$maybeAddContext@ results in a function of type -- \'@maybeAddContext :: MonadThrow m => String -> Maybe a -> m a@\'.--- If its second argument is `Nothing`, it throws `ChainedException` with its first argument,+-- If its second argument is `Nothing`, it throws t`ChainedException` with its first argument, -- else it returns the value of `Just`. maybeAddContext :: Q Exp maybeAddContext = withLoc [| maybeAddContextX |]@@ -123,7 +123,7 @@ -- | @\$eitherAddContext'@ results in a function of type -- \'@eitherAddContext' :: MonadThrow m => Either String a -> m a@\'.--- If its argument is @`Left` e@, it throws `ChainedException` with @e@ as error description,+-- If its argument is @`Left` e@, it throws t`ChainedException` with @e@ as error description, -- else it returns the value of `Right`. eitherAddContext' :: Q Exp eitherAddContext' = withLoc [| eitherAddContextX |]
src/Data/Elf/Constants.hs view
@@ -12,6 +12,49 @@ -- https://stackoverflow.com/questions/10672981/export-template-haskell-generated-definitions module Data.Elf.Constants (+ -- $docs module Data.Elf.Constants.Data ) where import Data.Elf.Constants.Data++{- $docs++Constants defined here are declared using Template Haskell,+so the full documentation is supported only starting from @template-haskell@ version 2.18.+For the older versions see the sources or the documents describing ELF file format.++Data types, patterns and instances are generated by @mkDeclarations@ TH macros.+Below is an example of how it works. The code++@+$(mkDeclarations BaseWord16 \"TypeName\" \"ValuePrefix\"+ [ (\"_A\", 0, "Doc strig for ValuePrefix_A")+ , (\"_B\", 1, "Doc strig for ValuePrefix_B")+ ])+@++produces this:++@+ newtype TypeName = TypeName Word16 deriving (Eq, Ord, Enum, Num, Real, Integral, Bits, FiniteBits)++ instance Show TypeName where+ show (TypeName 0) = (\"ValuePrefix\" ++ "_A")+ show (TypeName 1) = (\"ValuePrefix\" ++ "_B")+ show (TypeName n_a5QI) = (\"TypeName\" ++ (\" \" ++ show n_a5QI))++ pattern ValuePrefix_A :: TypeName+ pattern ValuePrefix_A = TypeName 0++ pattern ValuePrefix_B :: TypeName+ pattern ValuePrefix_B = TypeName 1++ instance Binary (Le TypeName) where+ get = (Le \<$\> (TypeName \<$\> getWord16le))+ put (Le (TypeName n_a5QK)) = putWord16le n_a5QK++ instance Binary (Be TypeName) where+ get = (Be \<$\> (TypeName \<$\> getWord16be))+ put (Be (TypeName n_a5QL)) = putWord16be n_a5QL+@+-}
src/Data/Elf/Constants/Data.hs view
@@ -13,48 +13,6 @@ import Data.Elf.Constants.TH import Data.Endian -{- $docs--Constants defined here are declared using Template Haskell,-so the full documentation is supported only starting from GHC 2.4.x.-For the older versions see the sources or the documents describing ELF file format.--Data types, patterns and instances are generated by @mkDeclarations@ TH macros.-Below is an example of how it works. The code--@-$(mkDeclarations BaseWord16 \"TypeName\" \"ValuePrefix\"- [ (\"_A\", 0, "Doc strig for ValuePrefix_A")- , (\"_B\", 1, "Doc strig for ValuePrefix_B")- ])-@--produces this:--@- newtype TypeName = TypeName Word16 deriving (Eq, Ord, Enum, Num, Real, Integral, Bits, FiniteBits)-- instance Show TypeName where- show (TypeName 0) = (\"ValuePrefix\" ++ "_A")- show (TypeName 1) = (\"ValuePrefix\" ++ "_B")- show (TypeName n_a5QI) = (\"TypeName\" ++ (\" \" ++ show n_a5QI))-- pattern ValuePrefix_A :: TypeName- pattern ValuePrefix_A = TypeName 0-- pattern ValuePrefix_B :: TypeName- pattern ValuePrefix_B = TypeName 1-- instance Binary (Le TypeName) where- get = (Le \<$\> (TypeName \<$\> getWord16le))- put (Le (TypeName n_a5QK)) = putWord16le n_a5QK-- instance Binary (Be TypeName) where- get = (Be \<$\> (TypeName \<$\> getWord16be))- put (Be (TypeName n_a5QL)) = putWord16be n_a5QL-@--}- -- | Operating system and ABI for which the object is prepared $(mkDeclarations BaseWord8 "ElfOSABI" "ELFOSABI" [ ("_SYSV", 0, "No extensions or unspecified")
src/Data/Internal/Elf.hs view
@@ -79,7 +79,7 @@ foldMap f (LZip l (Just c) r) = foldMap f $ LZip l Nothing (c : r) foldMap f (LZip l Nothing r) = foldMap f $ L.reverse l ++ r --- | `Elf` is a forrest of trees of type `ElfXX`.+-- | t`Elf` is a forrest of trees of type `ElfXX`. -- Trees are composed of `ElfXX` nodes, `ElfSegment` can contain subtrees data ElfNodeType = Header | SectionTable | SegmentTable | Section | Segment | RawData | RawAlign @@ -656,8 +656,8 @@ zeroSection = SectionXX 0 0 0 0 0 0 0 0 0 0 neighbours :: [a] -> (a -> a -> b) -> [b]-neighbours [] _ = []-neighbours x f = fmap (uncurry f) $ L.zip x $ L.tail x+neighbours [] _ = []+neighbours x@(_:xtail) f = fmap (uncurry f) $ L.zip x xtail -- make string table and indexes for it from a list of strings mkStringTable :: [String] -> (BSL.ByteString, [Int64])