As diferenças do GNU Linker entre os diferentes modos de emulação de 32 bits?

0

Qual é a diferença entre as opções de 386 e 32 bits em ld -V ?

  • elf32_x86_64
  • elf_i386
  • i386linux
  • i386pep
  • i386pe

E onde posso encontrar a documentação sobre esses "modos de emulação"

    
por Evan Carroll 24.09.2018 / 12:59

1 resposta

4

A "emulação" seleciona diferentes scripts de vinculação ; você encontrará os próprios scripts em /usr/lib/ldscripts em seu sistema. As emulações que você listou correspondem a

  • elf32_x86_64 : ELF para x64-32, também conhecido como x32 - binários x86-64 de 32 bits
  • elf_i386 : ELF para i386 - binários i386 de 32 bits
  • i386linux : a.out para i386
  • i386pep : PE + para x86-64 - binários de 64 bits no formato Windows
  • i386pe : PE para i386 - binários de 32 bits no formato Windows

Os scripts de linker definem o formato e a arquitetura de saída, os diretórios de pesquisa (onde ld procura por bibliotecas), as seções do binário, entre outras coisas.

O formato do script de vinculação está bem documentado (veja acima), mas os scripts disponíveis não são; na maioria dos casos, o GCC especificará o caminho certo, portanto, você não precisa se preocupar com isso e, em outros casos, acaba precisando ler os próprios scripts de vinculação para descobrir o que eles fazem.

    
por 24.09.2018 / 13:25

Tags