Você só terá uma imagem clara da pilha assim que o kernel passar para ld.so
, o vinculador dinâmico. Você pode encontrar uma foto básica aqui . Isso mostra argc
, argv
e envp
, os 3 argumentos tradicionais para int main(int argc, char **argv, char **envp)
de um programa em C.
Essa visão é um pouco simplista. Um vetor auxiliar ELF também existe na pilha e transmite muitas informações para ld.so
Depois que ld.so
é executado, o tempo de execução da libc entra e complica as coisas. Construtores de C ++ podem ser executados, todos os tipos de coisas malucas podem acabar na pilha. Depende do que compilou o programa. Até mesmo programas C simples podem fazer coisas diferentes com base na biblioteca que eles foi compilado com .