Formato executável e vinculável

Formato ELF
Executável e Vinculável Decompondo um arquivo ELF Características
Extensões -, .axf, .bin, .elf, .o, .prx, .so,.exe
PUID fmt / 689 , fmt / 688 , fmt / 691 , fmt / 690
Assinatura 7F 45 4C 46( hexa )
Desenvolvido por Laboratórios do Sistema Unix ( em )
Tipo de formato Formato de arquivo executável
Especificação Formato aberto

ELF ( Executable and Linkable Format , formato executável e linkable  ; anteriormente Executable and Linking Format ) é um formato de arquivo binário usado para registrar o código compilado (objetos, executáveis, bibliotecas de funções). Foi desenvolvido pela USL ( Unix System Laboratories ) para substituir os antigos formatos a.out e COFF que haviam atingido seus limites. Hoje, este formato é usado na maioria Unix-like sistemas operacionais ( GNU / Linux , Solaris , IRIX , System V , BSD ), com excepção de Mac OS X .

O formato de arquivo ELF

Cada arquivo ELF consiste em um cabeçalho fixo, segmentos e seções. Os segmentos contêm as informações necessárias para a execução do programa contido no arquivo, enquanto as seções contêm as informações para a resolução dos vínculos entre as funções e a reposição dos dados. Na maioria dos sistemas Unix , o comando man elffornecerá mais informações.

Cabeçalho de um arquivo ELF

O cabeçalho de um arquivo ELF adota o seguinte formato:

Nome do campo Valor
Identificação
Índice Valor
0 - Número Mágico 0x7f
1 - Número Mágico 'E'
2 - Número Mágico 'O'
3 - Número Mágico 'F'
4 - 64 bits ou 32 bits
  • (0) Nenhum
  • (1) 32 bits
  • (2) 64 bits
5 - Endianness
  • (0) Nenhum
  • (1) LSB
  • (2) MSB
6 - Versão do formato do cabeçalho
7 - ABI
  • (0) UNIX System V
  • (1) HP-UX
  • (2) NetBSD
  • (3) Linux
  • (6) Sun Solaris
  • (7) IBM AIX
  • (8) SGI Irix
  • (9) FreeBSD
  • (10) Compaq TRU64
  • (11) Novell Modesto
  • (12) OpenBSD
  • (64) ARM EABI
  • (97) ARM
  • (255) Independente
8 - versão ABI
9-15 Jam 0
16 Tamanho do campo "Identificação"
Tipo de arquivo (16 bits)
  • (0) Nenhum
  • (1) Reposicionável
  • (2) Executável
  • (3) Objeto compartilhado
  • (4) Arquivo principal
Máquina alvo (16 bits)
Versão (32 bits)
  • (0) Nenhum
  • (1) Versão atual
Ponto de entrada (32 bits ou 64 bits) (0) se nenhum ponto de entrada
Deslocamento (em bytes) da tabela que contém o cabeçalho do programa (32 bits ou 64 bits)
Deslocamento (em bytes) da tabela de cabeçalho da seção (32 bits ou 64 bits)
Sinalizadores específicos do processador (32 bits)
Tamanho (em bytes) do cabeçalho ELF (16 bits)
Tamanho (em bytes) de uma entrada na tabela que contém o cabeçalho do programa (16 bits)
Número de entradas na tabela que contém o cabeçalho do programa (16 bits)
Tamanho (em bytes) de uma entrada na tabela de cabeçalho da seção (16 bits)
Número de entradas na tabela de cabeçalho da seção (16 bits)
Subscrito na tabela de cabeçalho da seção da entrada associada à tabela que contém os nomes das seções (16 bits) (0) se não definido

Comparação com outros sistemas operacionais

As estruturas equivalentes são:

Notas e referências

  1. Página do manual "elf" .
  2. Cabeçalho ELF na documentação do ORACLE .
  3. Mach-O, no site de desenvolvedores da Apple .