--- title: "section.h" summary: "definitions needed to parse the elf section headers" --- # `elf_section_type_E` - enum - **Null** - These sections can be ignored - **Program Data** - These link to segments, if I remember right - **Symbol Table** - Here are all the executables' symbols stored - **String Table** - Here are all strings stored - **RelocationA** - Contains relocation information - **Hash** - Symbol Table hash table - **Dynamic Link** - This provides information for the dynamic linker - **Note** - notes that were created by the compiler / toolchain - **Nobits** - Nulled data like `.bss` # `elf_section_T` - struct | Name | Type | Description | |-----------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------| | name_offset | uint32_t | The offset of the sections name in `.shstrtab` | | type | uint32_t | The type of the section -> [elf_section_type_E](https://nerdcult.net/projects/noxos/docs/codebase/drivers/elf/section.h/#elf_section_type_e---enum) | | flags | uint64_t | Sections attribute flags | | virtual_address | uint64_t | The address where the section should be mapped to (if it's not 0) | | offset | uint64_t | The sections offset in the file | | length | uint64_t | The size of the section | | link | uint32_t | Type specific link to another section | | info | uint32_t | Type specific information | | alignment | uint64_t | If the section is aligned, this value specifies the alignment | | entry_size | uint64_t | The size of the sections entries | # `g_elf_section_type_strings` - global variable An array of strings matching [elf_section_type_E](https://nerdcult.net/projects/noxos/docs/codebase/drivers/elf/section.h/#elf_section_type_e---enum).