Articles of abi

Como evitar símbolos STT_GNU_IFUNC no seu binário?

Eu preciso implantar em uma checkbox do Red Hat 4.1.2 (que possui o gcc 4.1.2). Eu uso o GCC 4.6.1 no Ubuntu 11.10 para desenvolvimento. Infelizmente alguns dos binários que meu processo de criação cria não são utilizáveis ​​na máquina RedHat. O motivo parece ser uma alteração da ABI, que, de acordo com outra questão […]

C tem uma ABI padrão?

De uma discussão em outro lugar : C ++ não possui ABI padrão Mas nem C, certo? Em qualquer plataforma, praticamente faz. Não seria útil como língua franca para comunicação inter-lingüística se faltasse uma. Qual é a sua opinião sobre isso?

Por que essa function empurra o RAX para a pilha como a primeira operação?

Na assembly da fonte C ++ abaixo. Por que o RAX é empurrado para a pilha? RAX, como eu entendo da ABI poderia conter qualquer coisa da function de chamada. Mas nós o salvamos aqui e depois movemos a pilha de volta em 8 bytes. Então o RAX na pilha é, acho relevante apenas para […]

Qual é o formato da estrutura x86_64 va_list?

Alguém tem uma referência para a representação de va_list na ABI x86_64 (aquela usada no Linux)? Eu estou tentando depurar algum código onde a pilha ou os argumentos parecem corruptos e realmente ajudaria a entender o que eu deveria estar vendo …

Qual é a diferença de seção e segmento no formato de arquivo ELF

Do formato executável e vinculável do wiki: Os segmentos contêm informações necessárias para a execução do tempo de execução do arquivo, enquanto as seções contêm dados importantes para vinculação e realocação. Qualquer byte no arquivo inteiro pode ser de propriedade de no máximo uma seção, e pode haver bytes órfãos que não pertencem a nenhuma […]

É necessário um sinal ou extensão zero ao adicionar um deslocamento de 32 bits a um ponteiro para o ABI x86-64?

Resumo: Eu estava olhando o código assembly para orientar minhas otimizações e ver muitas extensões de sinal ou zero ao adicionar int32 a um ponteiro. void Test(int *out, int offset) { out[offset] = 1; } ————————————- movslq %esi, %rsi movl $1, (%rdi,%rsi,4) ret No começo, achei que meu compilador foi desafiado a adicionar inteiros de […]

O que é uma interface binária de aplicativo (ABI)?

Eu nunca entendi claramente o que é uma ABI. Por favor, não me aponte para um artigo da Wikipedia. Se eu pudesse entender, não estaria aqui postando um post tão longo. Esta é a minha mentalidade sobre diferentes interfaces: Um controle remoto da TV é uma interface entre o usuário e a TV. É uma […]

Onde está documentado o ABI System V x86-64?

A ABI x86-64 System V (usada em tudo, exceto no Windows) costumava ser usada em http://x86-64.org/documentation/abi.pdf , mas esse site agora caiu da Internet. Existe um novo lar autoritativo para o documento?

Como faço para passar com segurança objects, especialmente objects STL, para e de uma DLL?

Como faço para passar objects de class, especialmente objects STL, para e de uma DLL de C ++? Meu aplicativo tem que interagir com plug-ins de terceiros na forma de arquivos DLL, e não posso controlar com qual compilador esses plug-ins são criados. Estou ciente de que não há garantia de ABI para objects STL […]

O que acontece se você usar o int de 0x bits Linux ABI de 80 bits no código de 64 bits?

int 0x80 no Linux sempre invoca a ABI de 32 bits, independentemente de qual modo ela é chamada: args em ebx , ecx , … e syscall em /usr/include/asm/unistd_32.h . (Ou falha em kernels de 64 bits compilados sem CONFIG_IA32_EMULATION ). O código de 64 bits deve usar syscall , com números de chamada de […]