GNU Binutils предоставляет поддержку нового формата «SFrame» для простой раскрутки стека
Слияние на этой неделе с GNU Binutils — это начальная поддержка чтения и записи в новые разделы «SFrame» двоичных файлов.
SFrame является сокращением от Simple Frame Format и предназначен для хранения минимального количества необходимой информации для раскручивания стека. Надежда на SFrame состоит в том, чтобы обеспечить быструю обратную трассировку в режиме онлайн с помощью простого разматывателя.
Эту работу над SFrame для GNU Binutils возглавил Инду Бхагат из Oracle. Ассемблер GNU «Gas» добавил новую опцию "--gsframe" для создания разделов .sframe.
Эта работа над SFrame в настоящее время сосредоточена на целях x86_64 и AArch64. Хотя эта первоначальная работа GNU Binutils была объединена, разматыватель SFrame еще не был обновлен.
SFrame является сокращением от Simple Frame Format и предназначен для хранения минимального количества необходимой информации для раскручивания стека. Надежда на SFrame состоит в том, чтобы обеспечить быструю обратную трассировку в режиме онлайн с помощью простого разматывателя.
Эту работу над SFrame для GNU Binutils возглавил Инду Бхагат из Oracle. Ассемблер GNU «Gas» добавил новую опцию "--gsframe" для создания разделов .sframe.
gas интерпретирует директивы CFI для генерации информации .eh_frame на основе DWARF. Эти внутренние структуры DWARF теперь используются подсистемой gen-sframe.[ch] для создания информации раскрутки SFrame. Эти внутренние структуры DWARF доступны только для чтения и предназначены для генерации информации о раскрутке SFrame.
Генерация информации раскрутки SFrame не влияет на генерацию информации раскрутки .eh_frame. И .eh_frame, и .sframe могут сосуществовать в файле ELF, если это необходимо пользователю.
Напомним, что информация раскрутки SFrame содержит только минимальную информацию, необходимую для создания обратных трассировок, и не предоставляет информацию для восстановления всех регистров, сохраненных вызываемым пользователем. Причина в том, что регистры, сохраненные вызываемым пользователем, отличные от FP, не нужны для раскручивания стека и, следовательно, не включены в раздел .sframe.
GNU Binutils также объединила libsframe в качестве библиотеки для декодирования разделов .sframe, проверки разделов .sframe и соответствующей обработки. Readelf и objdump Binutil также были обновлены: добавлена поддержка чтения новых разделов SFrame, если они присутствуют, и использования новой опции «--sframe».
Эта работа над SFrame в настоящее время сосредоточена на целях x86_64 и AArch64. Хотя эта первоначальная работа GNU Binutils была объединена, разматыватель SFrame еще не был обновлен.
Похожие публикации
Нет комментариев