Skip to content

Latest commit

 

History

History
64 lines (56 loc) · 1.68 KB

File metadata and controls

64 lines (56 loc) · 1.68 KB
title ELF program header
sidebar_position 7

ELF program header

This example shows Elf.programHeaderAt reading a later table entry using offsets derived from Elf.tryParseHeader.

open System
open BinaryParsec
open BinaryParsec.Protocols.Elf

let input: byte array =
    [|
        0x7Fuy; 0x45uy; 0x4Cuy; 0x46uy
        0x01uy; 0x01uy; 0x01uy; 0x00uy
        0x00uy; 0x00uy; 0x00uy; 0x00uy
        0x00uy; 0x00uy; 0x00uy; 0x00uy
        0x02uy; 0x00uy
        0x03uy; 0x00uy
        0x01uy; 0x00uy; 0x00uy; 0x00uy
        0x78uy; 0x56uy; 0x34uy; 0x12uy
        0x34uy; 0x00uy; 0x00uy; 0x00uy
        0x00uy; 0x00uy; 0x00uy; 0x00uy
        0x00uy; 0x00uy; 0x00uy; 0x00uy
        0x34uy; 0x00uy
        0x20uy; 0x00uy
        0x02uy; 0x00uy
        0x00uy; 0x00uy
        0x00uy; 0x00uy
        0x00uy; 0x00uy
        0x01uy; 0x00uy; 0x00uy; 0x00uy
        0x78uy; 0x56uy; 0x34uy; 0x12uy
        0x00uy; 0x10uy; 0x00uy; 0x00uy
        0x00uy; 0x10uy; 0x00uy; 0x00uy
        0x20uy; 0x00uy; 0x00uy; 0x00uy
        0x20uy; 0x00uy; 0x00uy; 0x00uy
        0x05uy; 0x00uy; 0x00uy; 0x00uy
        0x00uy; 0x10uy; 0x00uy; 0x00uy
        0x01uy; 0x00uy; 0x00uy; 0x00uy
        0x00uy; 0x00uy; 0x00uy; 0x00uy
        0x00uy; 0x20uy; 0x00uy; 0x00uy
        0x00uy; 0x20uy; 0x00uy; 0x00uy
        0x10uy; 0x00uy; 0x00uy; 0x00uy
        0x10uy; 0x00uy; 0x00uy; 0x00uy
        0x06uy; 0x00uy; 0x00uy; 0x00uy
        0x00uy; 0x20uy; 0x00uy; 0x00uy
    |]

let parsed =
    Contiguous.run Elf.header (ReadOnlySpan<byte>(input))

Observed output:

Class = Elf32
Program header type = 1
Program header flags = 6

Source: examples/elf-program-header.fsx