packages feed

dwarfadt-0.6: dumpdwarf.hs

module Main(main) where

import qualified Data.Dwarf as Dwarf
import           Data.Dwarf.Elf (loadElfDwarf)
import           Data.Tree (Tree(..), drawTree)
import           System.Environment (getArgs)

dieTree :: Dwarf.DIE -> Tree Dwarf.DIE
dieTree die = Node die . map dieTree $ Dwarf.dieChildren die

main :: IO ()
main = do
  [filename] <- getArgs
  (_, (cuDies, _)) <- loadElfDwarf Dwarf.LittleEndian filename
  mapM_ (putStrLn . drawTree . fmap show) $ map dieTree cuDies