O que as seções .eh_frame e .eh_frame_hdr armazenam exatamente?
Eu sei que, ao usar linguagens que suportam exceções, como C ++, informações adicionais devem ser fornecidas ao ambiente de tempo de execução para descrever os quadros de chamada que devem ser desenrolados durante o processamento de uma exceção. Essas informações estão contidas em seções especiais dos arquivos de objeto, como.eh_frame
e.eh_frame_hdr
.
Mas, que tipo de estruturas de dados são armazenadas nessas seções? Quero dizer, eles podem ser lidos usando qualquer estrutura C? Eles têm alguma coisa a ver com o.cfi
declarações (como.cfi_startproc
, .cfi_endproc
, .cfi_offset
, .cfi_def_cfa_offset
, .cfi_personality
e.cfi_lsda
) no código de montagem GNU? Se sim, o que cada uma dessas cláusulas causa nessas seções? O que faz o.eh_frame_hdr
seção tem a ver com o.eh_frame
1?
Eu apreciaria explicações usando structs C, tanto quanto possível. Obrigado.