The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск языка программирования Rust 1.33"
Отправлено Аноним, 03-Мрт-19 18:09 
>> По стековым фреймам в *nix см. red zone, кадры не всегда организуются даже когда нужны.
> И что? Стековый фрейм начинается адресом возврата, и продолжается до следующего адреса
> возврата.

Обычно под кадром понимают аргументы (если они сохранены на стэке) и локальные переменные функции. Адрес возврата это адрес возврата - его рисуют на картинках в книжках для пущего понимания и целостности картины. Эти данные не относятся к исключениям.

> То что ты называешь "организацией кадра" -- это лишь специальные
> телодвижения сводящиеся к тому, чтобы положить в известное и доступное место
> адрес этого самого стекового фрейма.

Организация кадра выполняется модификацией регистра процессора "указатель стека" (иногда используется регистр "базы стека"). Действительно, упомянутый регистр - известное место.

>> Стандарт С++ определяет семантику исключений и приходится соответствовать. То есть перевод разговора на уровень имплементации рантайма трактуются лишь в ключе "я (не) знаю как".
> Ах, так ты о C++ говоришь?

Ну да. Выше кто-то заявил, что в С++ с этим нет проблем.

> И чё, бектрейсы в C++ пишут
> и про заинлайненные функции? Вот если я напишу C++ программу, скомпилирую
> её с -O2, стрипну всю дебаг-инфу из файла, то я смогу
> получить полный список вложенных вызовов в бектрейсе?

Уверен, сможешь. Возможно, не с первой попытки, но сможешь. Ты специалист весьма грамотный и упорный, другое дело, что больше интересуешься высоким уровнем, а не всякими rop-гаджетами.

Тут надо понимать, что дебажная инфа не относится к исключениям. Для них генерируются отдельные таблицы адресов try-блоков. То есть эти вещи ортогональны. Дебажная инфа по большому счёту нужна для сопоставления адресов машинных команд строчкам с исходниках. Ну и при построении графа вызовов не всегда получается гарантировано однозначно раскрутить стек, если не используется регистр базы стека.

>> Скажу прямо: это не моя забота знать, как там в Rust и почему inline стало проблемой, когда в С++ таковой не является.
> Ты сам с собой разговариваешь? Где тут ты видишь проблему?

Я просто поверил тебе, как специалисту по Rust. Ты же сам сообщил, что из-за инлайна не будет стекового фрейма и потому в итоге вываливается паника, а иначе сделать нельзя.


 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру