Add symbol entry header structure
This commit is contained in:
@ -6,6 +6,7 @@ module Language.Elna.Object.Elf
|
||||
, Elf32_Sword
|
||||
, Elf32_Ehdr(..)
|
||||
, Elf32_Shdr(..)
|
||||
, Elf32_Sym(..)
|
||||
, ElfIdentification(..)
|
||||
, ElfMachine(..)
|
||||
, ElfVersion(..)
|
||||
@ -19,12 +20,13 @@ module Language.Elna.Object.Elf
|
||||
, elf32Sword
|
||||
, elf32Word
|
||||
, elf32Ehdr
|
||||
, elf32Sym
|
||||
, elfIdentification
|
||||
) where
|
||||
|
||||
import qualified Data.ByteString.Builder as ByteString.Builder
|
||||
import Data.Int (Int32)
|
||||
import Data.Word (Word16, Word32)
|
||||
import Data.Word (Word8, Word16, Word32)
|
||||
import qualified Data.ByteString as ByteString
|
||||
|
||||
-- * Data types.
|
||||
@ -190,6 +192,17 @@ instance Enum ElfType
|
||||
fromEnum ET_LOPROC = 0xff00
|
||||
fromEnum ET_HIPROC = 0xffff
|
||||
|
||||
data Elf32_Sym = Elf32_Sym
|
||||
{ st_name :: Elf32_Word
|
||||
, st_value :: Elf32_Addr
|
||||
, st_size :: Elf32_Word
|
||||
, st_info :: Word8
|
||||
, st_other :: Word8
|
||||
, st_shndx :: Elf32_Half
|
||||
} deriving Eq
|
||||
|
||||
-- * Help types.
|
||||
|
||||
data ByteOrder = LSB | MSB
|
||||
deriving Eq
|
||||
|
||||
@ -272,3 +285,12 @@ elf32Shdr byteOrder Elf32_Shdr{..}
|
||||
<> elf32Word byteOrder sh_info
|
||||
<> elf32Word byteOrder sh_addralign
|
||||
<> elf32Word byteOrder sh_entsize
|
||||
|
||||
elf32Sym :: ByteOrder -> Elf32_Sym -> ByteString.Builder.Builder
|
||||
elf32Sym byteOrder Elf32_Sym{..}
|
||||
= elf32Word byteOrder st_name
|
||||
<> elf32Addr byteOrder st_value
|
||||
<> elf32Word byteOrder st_size
|
||||
<> ByteString.Builder.word8 st_info
|
||||
<> ByteString.Builder.word8 st_other
|
||||
<> elf32Half byteOrder st_shndx
|
||||
|
Reference in New Issue
Block a user