q/src/os/linux/elf/elf.md
2024-08-12 12:16:01 +02:00

629 B

ELF

Basic structure

  1. ELF header (0x00 - 0x40)
  2. Program header (0x40 - 0x78)
  3. Padding (0x78 - 0x80)
  4. Machine code (0x80)

Entry point

The entry point is defined in the first 64 bytes (ELF header).

Base address

The minimum base address is controlled by the mmap settings:

sysctl vm.mmap_min_addr

Usually, this value is 65536 (0x1000).

Initialization in Linux

ELF loader: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/binfmt_elf.c

ELF register definitions: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/include/asm/elf.h