Formato ELF
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 .
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.
O cabeçalho de um arquivo ELF adota o seguinte formato:
Nome do campo | Valor | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Identificação |
|
||||||||||||||||||||||||
Tipo de arquivo (16 bits) |
|
||||||||||||||||||||||||
Máquina alvo (16 bits) |
|
||||||||||||||||||||||||
Versão (32 bits) |
|
||||||||||||||||||||||||
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 |
As estruturas equivalentes são: