| title | ELF program header |
|---|---|
| sidebar_position | 7 |
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