FERRAMENTAS LINUX: O GNU Binutils lança um novo suporte ao formato "SFrame" para o Simple Stack Unwinding

quinta-feira, 17 de novembro de 2022

O GNU Binutils lança um novo suporte ao formato "SFrame" para o Simple Stack Unwinding


 A fusão desta semana com o GNU Binutils é o suporte inicial para leitura e gravação em novas seções "SFrame" de binários.


O SFrame é a abreviação de Simple Frame Format e serve para manter a quantidade mínima de informações necessárias para o desenrolamento da pilha. A esperança com o SFrame é permitir um rastreamento on-line rápido usando um desbobinador simples.

Este trabalho Sframe para GNU Binutils foi liderado por Indu Bhagat da Oracle. O GNU Assembler "Gas" adicionou uma nova opção "--gsframe" para gerar seções .sframe .

gas interpreta as diretivas CFI para gerar informações .eh_frame baseadas em DWARF. Essas estruturas DWARF internas agora são consumidas pelo subsistema gen-sframe.[ch] para, por sua vez, criar as informações de desenrolamento do SFrame. Essas estruturas DWARF internas são somente leitura para fins de geração de informações de desenrolamento do SFrame.

A geração de informações de desenrolamento Sframe não afeta a geração de informações de desenrolamento .eh_frame. Ambos .eh_frame e .sframe podem coexistir em um arquivo ELF, se assim for desejado pelo usuário.

Lembre-se de que as informações de desenrolamento do SFrame contêm apenas as informações mínimas necessárias para gerar backtraces e não fornecem informações para recuperar todos os registros salvos pelo chamado. A razão é que os registradores salvos pelo callee, exceto FP, não são necessários para o desenrolamento da pilha e, portanto, não são incluídos na seção .sframe.

O GNU Binutils também fundiu libsframe como a biblioteca para decodificar as seções .sframe, inspecionar seções .sframe e manipulação relacionada. Readelf e objdump do Binutil também foram atualizados com suporte para leitura das novas seções SFrame quando presentes e usando a nova opção "--sframe".

Este trabalho SFrame está atualmente focado em alvos x86_64 e AArch64. Embora esse trabalho inicial do GNU Binutils tenha sido mesclado, o desbobinador SFrame ainda não foi upstream.


Consulte os novos commits do SFrame para obter mais detalhes sobre este trabalho para desenrolar pilha simples e, em particular, é o novo arquivo de especificações do SFrame para os interessados ​​no formato.






Fonte

Até a próxima !!


Nenhum comentário:

Postar um comentário