packages feed

elf 0.27 → 0.28

raw patch · 2 files changed

+30/−31 lines, 2 filesnew-uploaderPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Data.Elf: elfABIVersion :: Elf -> Int
- Data.Elf: elfClass :: Elf -> ElfClass
- Data.Elf: elfData :: Elf -> ElfData
- Data.Elf: elfEntry :: Elf -> Word64
- Data.Elf: elfMachine :: Elf -> ElfMachine
- Data.Elf: elfOSABI :: Elf -> ElfOSABI
- Data.Elf: elfSectionAddr :: ElfSection -> Word64
- Data.Elf: elfSectionAddrAlign :: ElfSection -> Word64
- Data.Elf: elfSectionData :: ElfSection -> ByteString
- Data.Elf: elfSectionEntSize :: ElfSection -> Word64
- Data.Elf: elfSectionFlags :: ElfSection -> [ElfSectionFlags]
- Data.Elf: elfSectionInfo :: ElfSection -> Word32
- Data.Elf: elfSectionLink :: ElfSection -> Word32
- Data.Elf: elfSectionName :: ElfSection -> String
- Data.Elf: elfSectionSize :: ElfSection -> Word64
- Data.Elf: elfSectionType :: ElfSection -> ElfSectionType
- Data.Elf: elfSections :: Elf -> [ElfSection]
- Data.Elf: elfSegmentAlign :: ElfSegment -> Word64
- Data.Elf: elfSegmentData :: ElfSegment -> ByteString
- Data.Elf: elfSegmentFlags :: ElfSegment -> [ElfSegmentFlag]
- Data.Elf: elfSegmentMemSize :: ElfSegment -> Word64
- Data.Elf: elfSegmentPhysAddr :: ElfSegment -> Word64
- Data.Elf: elfSegmentType :: ElfSegment -> ElfSegmentType
- Data.Elf: elfSegmentVirtAddr :: ElfSegment -> Word64
- Data.Elf: elfSegments :: Elf -> [ElfSegment]
- Data.Elf: elfType :: Elf -> ElfType
- Data.Elf: elfVersion :: Elf -> Int
- Data.Elf: instance Enum ElfSectionIndex
- Data.Elf: instance Enum ElfSymbolBinding
- Data.Elf: instance Enum ElfSymbolType
- Data.Elf: instance Eq Elf
- Data.Elf: instance Eq ElfClass
- Data.Elf: instance Eq ElfData
- Data.Elf: instance Eq ElfMachine
- Data.Elf: instance Eq ElfOSABI
- Data.Elf: instance Eq ElfSection
- Data.Elf: instance Eq ElfSectionFlags
- Data.Elf: instance Eq ElfSectionIndex
- Data.Elf: instance Eq ElfSectionType
- Data.Elf: instance Eq ElfSegment
- Data.Elf: instance Eq ElfSegmentFlag
- Data.Elf: instance Eq ElfSegmentType
- Data.Elf: instance Eq ElfSymbolBinding
- Data.Elf: instance Eq ElfSymbolTableEntry
- Data.Elf: instance Eq ElfSymbolType
- Data.Elf: instance Eq ElfType
- Data.Elf: instance Ord ElfSectionIndex
- Data.Elf: instance Ord ElfSymbolBinding
- Data.Elf: instance Ord ElfSymbolType
- Data.Elf: instance Read ElfSectionIndex
- Data.Elf: instance Read ElfSymbolBinding
- Data.Elf: instance Read ElfSymbolType
- Data.Elf: instance Show Elf
- Data.Elf: instance Show ElfClass
- Data.Elf: instance Show ElfData
- Data.Elf: instance Show ElfMachine
- Data.Elf: instance Show ElfOSABI
- Data.Elf: instance Show ElfSection
- Data.Elf: instance Show ElfSectionFlags
- Data.Elf: instance Show ElfSectionIndex
- Data.Elf: instance Show ElfSectionType
- Data.Elf: instance Show ElfSegment
- Data.Elf: instance Show ElfSegmentFlag
- Data.Elf: instance Show ElfSegmentType
- Data.Elf: instance Show ElfSymbolBinding
- Data.Elf: instance Show ElfSymbolTableEntry
- Data.Elf: instance Show ElfSymbolType
- Data.Elf: instance Show ElfType
- Data.Elf: steBind :: ElfSymbolTableEntry -> ElfSymbolBinding
- Data.Elf: steEnclosingSection :: ElfSymbolTableEntry -> Maybe ElfSection
- Data.Elf: steIndex :: ElfSymbolTableEntry -> ElfSectionIndex
- Data.Elf: steName :: ElfSymbolTableEntry -> (Word32, Maybe ByteString)
- Data.Elf: steOther :: ElfSymbolTableEntry -> Word8
- Data.Elf: steSize :: ElfSymbolTableEntry -> Word64
- Data.Elf: steType :: ElfSymbolTableEntry -> ElfSymbolType
- Data.Elf: steValue :: ElfSymbolTableEntry -> Word64
+ Data.Elf: [elfABIVersion] :: Elf -> Int
+ Data.Elf: [elfClass] :: Elf -> ElfClass
+ Data.Elf: [elfData] :: Elf -> ElfData
+ Data.Elf: [elfEntry] :: Elf -> Word64
+ Data.Elf: [elfMachine] :: Elf -> ElfMachine
+ Data.Elf: [elfOSABI] :: Elf -> ElfOSABI
+ Data.Elf: [elfSectionAddrAlign] :: ElfSection -> Word64
+ Data.Elf: [elfSectionAddr] :: ElfSection -> Word64
+ Data.Elf: [elfSectionData] :: ElfSection -> ByteString
+ Data.Elf: [elfSectionEntSize] :: ElfSection -> Word64
+ Data.Elf: [elfSectionFlags] :: ElfSection -> [ElfSectionFlags]
+ Data.Elf: [elfSectionInfo] :: ElfSection -> Word32
+ Data.Elf: [elfSectionLink] :: ElfSection -> Word32
+ Data.Elf: [elfSectionName] :: ElfSection -> String
+ Data.Elf: [elfSectionSize] :: ElfSection -> Word64
+ Data.Elf: [elfSectionType] :: ElfSection -> ElfSectionType
+ Data.Elf: [elfSections] :: Elf -> [ElfSection]
+ Data.Elf: [elfSegmentAlign] :: ElfSegment -> Word64
+ Data.Elf: [elfSegmentData] :: ElfSegment -> ByteString
+ Data.Elf: [elfSegmentFlags] :: ElfSegment -> [ElfSegmentFlag]
+ Data.Elf: [elfSegmentMemSize] :: ElfSegment -> Word64
+ Data.Elf: [elfSegmentPhysAddr] :: ElfSegment -> Word64
+ Data.Elf: [elfSegmentType] :: ElfSegment -> ElfSegmentType
+ Data.Elf: [elfSegmentVirtAddr] :: ElfSegment -> Word64
+ Data.Elf: [elfSegments] :: Elf -> [ElfSegment]
+ Data.Elf: [elfType] :: Elf -> ElfType
+ Data.Elf: [elfVersion] :: Elf -> Int
+ Data.Elf: [steBind] :: ElfSymbolTableEntry -> ElfSymbolBinding
+ Data.Elf: [steEnclosingSection] :: ElfSymbolTableEntry -> Maybe ElfSection
+ Data.Elf: [steIndex] :: ElfSymbolTableEntry -> ElfSectionIndex
+ Data.Elf: [steName] :: ElfSymbolTableEntry -> (Word32, Maybe ByteString)
+ Data.Elf: [steOther] :: ElfSymbolTableEntry -> Word8
+ Data.Elf: [steSize] :: ElfSymbolTableEntry -> Word64
+ Data.Elf: [steType] :: ElfSymbolTableEntry -> ElfSymbolType
+ Data.Elf: [steValue] :: ElfSymbolTableEntry -> Word64
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.Elf
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfClass
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfData
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfMachine
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfOSABI
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfSection
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfSectionFlags
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfSectionIndex
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfSectionType
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfSegment
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfSegmentFlag
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfSegmentType
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfSymbolBinding
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfSymbolTableEntry
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfSymbolType
+ Data.Elf: instance GHC.Classes.Eq Data.Elf.ElfType
+ Data.Elf: instance GHC.Classes.Ord Data.Elf.ElfSectionIndex
+ Data.Elf: instance GHC.Classes.Ord Data.Elf.ElfSymbolBinding
+ Data.Elf: instance GHC.Classes.Ord Data.Elf.ElfSymbolType
+ Data.Elf: instance GHC.Enum.Enum Data.Elf.ElfSectionIndex
+ Data.Elf: instance GHC.Enum.Enum Data.Elf.ElfSymbolBinding
+ Data.Elf: instance GHC.Enum.Enum Data.Elf.ElfSymbolType
+ Data.Elf: instance GHC.Read.Read Data.Elf.ElfSectionIndex
+ Data.Elf: instance GHC.Read.Read Data.Elf.ElfSymbolBinding
+ Data.Elf: instance GHC.Read.Read Data.Elf.ElfSymbolType
+ Data.Elf: instance GHC.Show.Show Data.Elf.Elf
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfClass
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfData
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfMachine
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfOSABI
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfSection
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfSectionFlags
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfSectionIndex
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfSectionType
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfSegment
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfSegmentFlag
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfSegmentType
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfSymbolBinding
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfSymbolTableEntry
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfSymbolType
+ Data.Elf: instance GHC.Show.Show Data.Elf.ElfType

Files

elf.cabal view
@@ -1,25 +1,24 @@-Name:          elf
-Version:       0.27
-License:       BSD3
-License-file:  LICENSE
-Category:      Data
-Author:        Erik Charlebois
-Copyright:     Erik Charlebois
-Maintainer:    Erik Charlebois <erikcharlebois@gmail.com>
-Stability:     stable
-Cabal-Version: >= 1.6
-Homepage:      http://github.com/erikcharlebois/elf
-Build-Depends: base
-Build-Type:    Custom
-Synopsis:      Parser for ELF object format.
-Description:   Parser for ELF object format.
-Data-Files:    tests/empty.elf tests/Test.hs
-
-source-repository head
-  type:     git
-  location: http://github.com/erikcharlebois/elf
-
-library
-    build-depends:   base >= 2 && < 5, bytestring, binary
-    hs-source-dirs:  src
-    exposed-modules: Data.Elf
+Name:          elf+Version:       0.28+License:       BSD3+License-file:  LICENSE+Category:      Data+Author:        Erik Charlebois+Copyright:     Erik Charlebois+Maintainer:    Baojun Wang <wangbj@gmail.com>+Stability:     stable+Cabal-Version: >= 1.6+Homepage:      https://github.com/wangbj/elf+Build-Type:    Custom+Synopsis:      Parser for ELF object format.+Description:   Parser for ELF object format.+Data-Files:    tests/empty.elf tests/Test.hs++source-repository head+  type:     git+  location: https://github.com/wangbj/elf.git++library+    build-depends:   base >= 2 && < 5, bytestring, binary+    hs-source-dirs:  src+    exposed-modules: Data.Elf
src/Data/Elf.hs view
@@ -666,12 +666,12 @@ -- If the size is zero, or the offset larger than the 'elfSectionData', -- then 'Nothing' is returned. findSymbolDefinition :: ElfSymbolTableEntry -> Maybe B.ByteString-findSymbolDefinition e =-    let enclosingData = fmap elfSectionData (steEnclosingSection e)-        start = fromIntegral (steValue e)+findSymbolDefinition e = steEnclosingSection e >>= \enclosingSection ->+    let enclosingData = elfSectionData enclosingSection+        start = ( (fromIntegral (steValue e)) - (fromIntegral (elfSectionAddr enclosingSection) ) )         len = fromIntegral (steSize e)-        def = fmap (B.take len . B.drop start) enclosingData-    in if def == Just B.empty then Nothing else def+        def = (B.take len . B.drop start) enclosingData+    in if B.null def then Nothing else Just def  runGetMany :: Get a -> L.ByteString -> [a] runGetMany g bs@@ -712,7 +712,7 @@     return $ EST (nameIdx,name) sec typ bind other sTlbIdx symVal size  sectionByIndex :: Elf -> ElfSectionIndex -> Maybe ElfSection-sectionByIndex e (SHNIndex i) = lookup i . zip [1..] $ (elfSections e)+sectionByIndex e (SHNIndex i) = lookup i . zip [0..] $ (elfSections e) sectionByIndex _ _ = Nothing  infoToTypeAndBind :: Word8 -> (ElfSymbolType,ElfSymbolBinding)