Onde o arquivo frame.h (ou seu equivalente) está localizado nos sistemas operacionais Linux modernos?

4

Um livro que estou lendo se refere a um arquivo de inclusão que mostra como um quadro de pilha parece em seu sistema UNIX.

Em particular: /usr/include/sys/frame.h

Estou tendo problemas para encontrar o equivalente moderno. Alguém tem uma ideia? Estou no Ubuntu 12.10.

By the way, é uma descrição de quadros de pilha e registros de ativação que eu quero - não necessariamente aquela relíquia de um arquivo. Essa informação foi armazenada nesse arquivo, "de volta no dia ", embora.

    
por d0rmLife 07.03.2013 / 06:02

1 resposta

2

Você pode querer dar uma olhada nos arquivos ptrace.h e calling.h , que têm algumas estruturas C que definem o layout do quadro da pilha e as convenções de chamada (elas podem ser encontradas nas mesmas pastas que frame.h ). Além disso, o arquivo de cabeçalho elfcore.h incluído com o projeto do gperftools pode fornecer algumas informações úteis sobre os quadros de pilha de chamadas.

Além disso, se você quiser, pode querer olhar para a Assembleia x86 e x86 Desmontagem livros sobre Wikilivros. Eles têm muitas informações úteis (alto e baixo nível) sobre frames de pilha e detalhes da convenção de chamadas.

Em termos de frame.h , chamar sudo find / -name "frame.h" na minha instalação do Xubuntu 12.04 retorna o seguinte:

/usr/src/linux-headers-3.2.0-23/arch/x86/include/asm/frame.h
/usr/src/linux-headers-3.2.0-33/arch/x86/include/asm/frame.h
/usr/src/linux-headers-3.2.0-35/arch/x86/include/asm/frame.h
/usr/src/linux-headers-3.2.0-34/arch/x86/include/asm/frame.h
Não surpreendentemente, não há nenhuma alteração no arquivo entre as versões do kernel listadas acima, e é improvável que você veja quaisquer alterações por razões de compatibilidade (claro, isso depende da arquitetura do seu sistema).

    
por 07.03.2013 / 20:48