documentation/kernel/drivers/elf/segment.h.md

29 lines
1.6 KiB
Markdown

# segment.h
Definitions needed to parse the elf program/segment headers.
# `elf_segment_type_E` - enum
- **Null** - Unused segment
- **Load** - Segment that should be included into mappings
- **Dynamic** - Segments of this type contain dynamic linking information
- **Interpreter** - This holds a path to an interpreter
- **Note** - These segments hold notes by the compiler / toolchain
- **Program Header Table** - This points to the table that is holding the segment headers
- **TLS** - This holds a Thread Local Storage template
# `elf_segment_T` - struct
| Name | Type | Description |
|------------------|----------|-----------------------------------------------------------------|
| type | uint32_t | The segments type -> elf_segment_type_E |
| flags | uint32_t | The segments flags (Read / Write / Execute) |
| offset | uint64_t | The segments position in the elf file |
| address_virtual | uint64_t | Where the segment should be mapped in the virtual address space |
| address_physical | uint64_t | Not used in the `System V` ABI |
| length_file | uint64_t | The segments size in the file |
| length_memory | uint64_t | The size of the area that should be mapped for the segment |
| align | uint64_t | The segments alignment (has to be a power of 2) |
# `g_elf_segment_type_strings` - global variable
An array of strings matching elf_segment_type_E.