segunda-feira, 26 de julho de 2010

Comando ELF

Em computação, o Executable and Linking Format (ELF, também chamado de Extensible Linking Format) pode ser traduzido como Formato Executável e de Ligação é um padrão comum de arquivo para executáveis, código objeto, bibliotecas compartilhadas, e core dumps. O ELF foi escrito por um desenvolvedor da Marinha dos Estados Unidos da América.

Publicado pela primeira vez na especificação da interface binária de aplicação do System V, e mais tarde no Padrão de ferramentas de interface, foi rapidamente aceito entre diferentes desenvolvedores de sistemas Unix. Em 1999, foi escolhido como padrão de arquivo binário para os sistemas Unix e similares ao Unix pelo projeto 86open.

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.
Índice

O Layout do arquivo ELF

Cada arquivo ELF tem um cabeçalho, seguido por arquivos de dados. O arquivo contém os seguintes seções:

* modulo de cabeçalho do programa, descrevendo o zero ou mais segmentos;
* modulo de cabeçalho das seção, descrevendo zero ou mais seções;
* dados referidos pela entrada no programa ou modulo de cabeçalho das seções.

Os segmentos contem informações que são necessárias para a execução dos arquivos, enquanto a seção importantes dados para a ligação e recolocação. Cada byte no arquivo inteiro e não mais do que uma seção por vez, mas pode haver bytes órfão, que não são cobertos pela seção. No caso de um executável do UNIX um ou mais seções são encapsuladas em cada segmento.

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.

0 comentários:

Enviar um comentário