dwarf 0.21 → 0.22
raw patch · 5 files changed
+76/−65 lines, 5 filessetup-changedPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Dwarf: infoCompileUnit :: ByteString -> Word64 -> Word64
Files
- LICENSE +26/−26
- Setup.hs +6/−6
- dwarf.cabal +20/−20
- src/Data/Dwarf.hs +12/−1
- tests/Test.hs +12/−12
LICENSE view
@@ -1,26 +1,26 @@-Copyright (c) Erik Charlebois. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The names of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. +Copyright (c) Erik Charlebois.+All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions+are met:+1. Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.+2. Redistributions in binary form must reproduce the above copyright+ notice, this list of conditions and the following disclaimer in the+ documentation and/or other materials provided with the distribution.+3. The names of the author may not be used to endorse or promote+ products derived from this software without specific prior written+ permission.++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF+SUCH DAMAGE.
Setup.hs view
@@ -1,6 +1,6 @@-import Distribution.Simple -import System.Cmd(system) - -main = defaultMainWithHooks $ simpleUserHooks { runTests = runElfTests } - -runElfTests a b pd lb = system "runhaskell -i./src ./tests/Test.hs" >> return () +import Distribution.Simple+import System.Cmd(system)++main = defaultMainWithHooks $ simpleUserHooks { runTests = runElfTests }++runElfTests a b pd lb = system "runhaskell -i./src ./tests/Test.hs" >> return ()
dwarf.cabal view
@@ -1,20 +1,20 @@-Name: dwarf -Version: 0.21 -License: BSD3 -License-file: LICENSE -Category: Data -Author: Erik Charlebois -Copyright: Erik Charlebois -Maintainer: Erik Charlebois <erikcharlebois@gmail.com> -Stability: unstable -Cabal-Version: >= 1.2 -Build-Depends: base -Build-Type: Custom -Synopsis: Parser for DWARF debug format. -Description: Parser for DWARF debug format. -Data-Files: tests/Test.hs - -library - build-depends: base >= 2 && < 5, bytestring, containers, binary - hs-source-dirs: src - exposed-modules: Data.Dwarf +Name: dwarf+Version: 0.22+License: BSD3+License-file: LICENSE+Category: Data+Author: Erik Charlebois+Copyright: Erik Charlebois+Maintainer: Erik Charlebois <erikcharlebois@gmail.com>+Stability: unstable+Cabal-Version: >= 1.2+Build-Depends: base+Build-Type: Custom+Synopsis: Parser for DWARF debug format.+Description: Parser for DWARF debug format.+Data-Files: tests/Test.hs++library+ build-depends: base >= 2 && < 5, bytestring, containers, binary+ hs-source-dirs: src+ exposed-modules: Data.Dwarf
src/Data/Dwarf.hs view
@@ -1,6 +1,7 @@ -- | Parses the DWARF 2 and DWARF 3 specifications at http://www.dwarfstd.org given -- the debug sections in ByteString form. module Data.Dwarf ( parseDwarfInfo+ , infoCompileUnit , parseDwarfAranges , parseDwarfPubnames , parseDwarfPubtypes@@ -295,9 +296,19 @@ cu_values <- mapM (getForm dr str_section cu_offset) cu_forms cu_ancestors <- if cu_has_children then getDieTree (Just cu_die_offset) Nothing abbrev_map dr str_section cu_offset else return [] cu_siblings <- getDieCus Nothing odr abbrev_section str_section- let cu_children = map dieId $ filter (\x -> if isJust (dieParent x) then fromJust (dieParent x) == cu_offset else False) cu_ancestors+ let cu_children = map dieId $ filter (maybe False (== cu_die_offset) . dieParent) cu_ancestors cu_rsibling = if null cu_siblings then Nothing else Just $ dieId $ head cu_siblings return $ (DIE cu_die_offset Nothing cu_children cu_lsibling cu_rsibling cu_tag (zip cu_attrs cu_values) dr : cu_ancestors) ++ cu_siblings++-- | Returns compilation unit id given the header offset into .debug_info+infoCompileUnit :: B.ByteString -- ^ Contents of .debug_info+ -> Word64 -- ^ Offset into .debug_info header+ -> Word64 -- ^ Offset of compile unit DIE.+infoCompileUnit infoSection offset = do+ case runGet getWord32be+ (L.fromChunks [B.drop (fromIntegral offset) infoSection]) of+ 0xffffffff -> offset + 23+ _ -> offset + 11 -- | Parses the .debug_info section (as ByteString) using the .debug_abbrev and .debug_str sections. parseDwarfInfo :: Bool -- ^ True for little endian target addresses. False for big endian.
tests/Test.hs view
@@ -1,12 +1,12 @@-module Main where - -import Data.Dwarf -import System.IO -import Test.HUnit -import Control.Monad -import qualified Control.Exception as E -import qualified Data.ByteString as B - -tests = TestList [] - -main = runTestTT tests +module Main where++import Data.Dwarf+import System.IO+import Test.HUnit+import Control.Monad+import qualified Control.Exception as E+import qualified Data.ByteString as B++tests = TestList []++main = runTestTT tests