Я знаю, что при использовании языков, поддерживающих исключения, например С++, в среду выполнения должна быть предоставлена дополнительная информация для описания кадров вызовов, которые необходимо разматывать во время обработки исключения. Эта информация содержится в специальных разделах объектных файлов, таких как .eh_frame
и .eh_frame_hdr
.
Но какие структуры данных хранятся в этих разделах? Я имею в виду, их можно прочитать с помощью любой C-структуры? Имеют ли они какое-либо отношение к операторам .cfi
(например, .cfi_startproc
, .cfi_endproc
, .cfi_offset
, .cfi_def_cfa_offset
, .cfi_personality
и .cfi_lsda
) в коде сборки GNU? Если они это сделают, что каждый из этих статей вызывает в этих разделах? Что раздел .eh_frame_hdr
связан с .eh_frame
одним?
Я был бы благодарен за объяснения, используя C-структуры как можно больше. Спасибо.