ghc-8.2.2: The GHC API

Safe Haskell | None
Language | Haskell2010

Elf

Synopsis

- readElfSectionByName :: DynFlags -> ByteString -> String -> IO (Maybe ByteString)
- readElfNoteAsString :: DynFlags -> FilePath -> String -> String -> IO (Maybe String)
- makeElfNote :: DynFlags -> String -> String -> Word32 -> String -> SDoc

# Documentation

readElfSectionByName :: DynFlags -> ByteString -> String -> IO (Maybe ByteString) #

Given a section name, read its contents as a ByteString.

If the section isn't found or if there is any parsing error, we return Nothing

readElfNoteAsString :: DynFlags -> FilePath -> String -> String -> IO (Maybe String) #

read a Note as a String

If you try to read a note from a section which does not support the Note format, the parsing is likely to fail and Nothing will be returned

makeElfNote :: DynFlags -> String -> String -> Word32 -> String -> SDoc #

Generate the GAS code to create a Note section

Header fields for notes are 32-bit long (see Note [ELF specification]).

It seems there is no easy way to force GNU AS to generate a 32-bit word in every case. Hence we use .int directive to create them: however "The byte order and bit size of the number depends on what kind of target the assembly is for." (https:/sourceware.orgbinutilsdocsas/Int.html#Int)

If we add new target platforms, we need to check that the generated words are 32-bit long, otherwise we need to use platform specific directives to force 32-bit .int in asWord32.