Stackframes и Win64

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Stackframes и Win64

Сообщение Max Rusov » 16.07.2012 16:31:00

Неожиданно для себя открыл, что в Win64 stackframe's деляются совершенно иначе чем в Win32 - без использования регистра RBP, как я наивно ожидал, по аналогии с EBP. А для трассировки callstack под Win64 предлагается использовать API-шный вызов CaptureStackBackTrace. Но под FPC у меня это не заработало, хотя под delphi 64 - все Ok.

Вопрос: соблюдаются ли в FPC спецификации win64 по формату StackFrame'ов, или он генерит их "по своему"?

Я использую довольно старую версию (2.4.0) и если в новых версиях ситуация изменилась - заранее извиняюсь. Но сейчас проводить эксперименты с новой версией у меня нет возможности - если кто нибудь знает точно были ли правки в этом аспекте - буду очень признателен за информацию.
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: Stackframes и Win64

Сообщение Sergei I. Gorelkin » 16.07.2012 17:30:39

Эти спецификации соблюдаются только в 2.7.1, собранном с опцией -dTEST_WIN64_SEH.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Stackframes и Win64

Сообщение Max Rusov » 16.07.2012 17:57:53

Спасибо. А можете примерно подсказать - насколько это отлажено? Рисковано ли браться за перевод довольно крупного проекта на эту версию? А то как то слово TEST внушает опасения...
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: Stackframes и Win64

Сообщение Sergei I. Gorelkin » 16.07.2012 18:54:36

Часть "TEST" не настолько страшна, насколько часть "2.7.1". С одними строками можно огрести выше крыши...

А обработка исключений в стиле Win64 не дружит в внешними ассемблером/линкером - собственно поэтому она до сих пор в статусе "тест".
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru
cron