Executable and Linkable Format

Esta página ou seção foi marcada para revisão devido a incoerências ou dados de confiabilidade duvidosa.Fevereiro de 2008) ( |
ELF (Formato Executável e de Ligação) | |
---|---|
Extensão do arquivo | nenhuma, .o, .so |
Desenvolvido por | Unix System Laboratories |
Tipo de formato | Binário, Executável, objeto, biblioteca compartilhada, core dump |

Em computação, o Executable and Linking Format (ELF, também chamado de Extensible Linking Format), em português Formato Executável e de Ligação, é um padrão comum de arquivo para executáveis, código objeto, bibliotecas compartilhadas, e core dumps. Publicado pela primeira vez na especificação para a interface binária de aplicação (Application Binary Interface - ABI) da versão denominada System V Release 4 (SVR4) do sistema operacional Unix, e posteriormente no Padrão de Interface de Ferramenta, foi rapidamente aceito entre diferentes fornecedores de sistemas Unix. Em 1999, ele foi escolhido como o formato de arquivo binário padrão para o Unix e sistemas tipo Unix em processadores x86 pelo projeto 86open. O ELF foi escrito por um desenvolvedor da Marinha dos Estados Unidos da América.[1]
Por projeto, o ELF é flexível, extensível e multiplataforma, não ligado a qualquer unidade central de processamento (UCP) determinada ou arquitetura de conjunto de instruções. Isto o possibilitou ser adotado por muitos sistemas operacionais diferentes em muitas plataformas de hardware diferentes.
Actualmente, o formato ELF já substituiu outros formatos de execução mais antigos, tais como a.out e COFF nos sistemas operacionais Linux, Solaris, IRIX, FreeBSD, NetBSD, e OpenBSD. O sistema operacional DragonFly BSD foi ramificado em FreeBSD após a mudança para o ELF. Por causa de outros tipos de formato proprietários, e da plataforma específica, ou menos extensível do que o ELF, alguns usuários defendem que o ELF tem uma melhor qualidade que outros formatos, onde os outros formatos podem o considerar-se um competidor destes. O ELF é também usado nas versões Itanium do OpenVMS, um sistema operacional não baseado no UNIX, além de substituir o Portable Executable no BeOS Revisão 4 e mais tarde na computadores baseados em x86 (computadores PPC mantêm como Preferred Executable Format, nunca usando as Portable Executable), que não são também baseadas no UNIX. Os consoles PlayStation Portable, PlayStation 2 e PlayStation 3 também usam o ELF como seu formato de execução.
O Layout do arquivo ELF
Cada arquivo ELF é composto de um cabeçalho ELF, seguido pelos dados do arquivo. Os dados podem incluir:
- Tabela de cabeçalho do programa, descrevendo zero ou mais segmentos de memória;
- Tabela de cabeçalho de seção, descrevendo zero ou mais seções;
- Dados referidos por entradas na tabela de cabeçalho do programa ou na tabela de cabeçalho de seção.
Os segmentos contêm informações que são necessárias para a execução dos arquivos em tempo de execução, enquanto as seções contêm dados importantes para ligação e relocação. Qualquer byte, no arquivo inteiro, pode ser propriedade de uma seção no máximo e pode haver bytes órfãos que não possuem proprietários por nenhuma seção.[2]
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 3e 00 01 00 00 00 c5 48 40 00 00 00 00 00 |..>......H@.....|
Ferramentas
readelf
é um utilitário para binários do UNIX que mostra informações sobre um ou mais arquivos ELF. Um implementação da GPL é disponível pelo GNU Binutils.elfdump
é um comando do Solaris para ver informações sobre os arquivos elf.objdump
mostra um grande gama de informações sobre os arquivos ELF e outros tipos de objeto.
Ver também
Referencias
- ↑ "SYSTEM V RELEASE 4 Programmer's Guide: ANSI C and Programming Support Tools", AT & T (Corporate Author), 800 paginas, 24 de Dezembro de 1992. ISBN 0-13-933706-7 ou ISBN 978-0130206299
- ↑ "Unix System V: Understanding Elf Object Files and Debugging Tools (Programmer Collection)", Mary Lou Nohr, Prentice Hall, Outubro de 1993, ISBN 0-13-933706-7
- ↑ «Available lexers — Pygments». pygments.org
Ligações Externas
- (em inglês) Manual dos formatos dos binarios do FreeBSD
- (em inglês) "Tool Interface Standard" (TIS) ferramenta de padrões dos executáveis e formatos de especificações de formatos de Linkagem (ELF) Versão 1.2 (PDF)
- (em inglês) Descrição dos formatos de arquivos binários ELF
- (em inglês) Article "LibElf e GElf - Um biblioteca para manipular arquivos ELF" por Neelakanth Nadgir
- (em inglês) biblioteca de acesso liberado para objetos de arquivos ELF
- (em inglês) elf(5) manual
- (em inglês) biblioteca de rotinas Elf
- (em inglês) ELFIO: uma biblioteca C++ para leitura e geração de arquivosno formato binario ELF.
- (em inglês) "Um tutorial gigantesco sobre a criação de pequeninos executáveis ELF para o Linux"
- (em inglês) Um herói não celebrado: O funcional ELF
- (em inglês) Perguntas mais freqüentes sobre NetBSD ELF
- (em inglês) Objeto ELF (formato de arquivo) para Dissecção
- (em inglês) ELF-64 detalhes sobre o formato do arquivo objeto
- (em inglês) ELF-64 formato de arquivo objeto: Versão 1.5 Esboço 2
- (em inglês) Sun's Linker and Libraries Guide.