OberonCore https://forum.oberoncore.ru/ |
|
XDS 2.6 beta release https://forum.oberoncore.ru/viewtopic.php?f=30&t=3739 |
Страница 2 из 6 |
Автор: | igor [ Пятница, 30 Декабрь, 2011 18:30 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
Александр Ильин писал(а): Знать бы, что такого хорошего и полезного добавилось... Могу преположить, что Ваши DLL (и мои тоже) теперь всегда будут на всякий случай ( ) импортировать дополнительные библиотеки. В пользу этой версии говорит и одинаковый прирост в 23КБ. Точно можно выяснить, если прогнать dll-ку через какой-нибудь PE-explorer. Особый интерес здесь представляют секции импорта и экспорта. Думаю, что различия в размере PE-файла из-за них.
|
Автор: | Александр Ильин [ Пятница, 30 Декабрь, 2011 18:32 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
igor писал(а): Как и следовало ожидать, в основном (хоть и не во всём) изменения заключаются в расширении уже существующей системы. Я подозреваю, что в основном включение XDS-C и TSCP сыграло роль в распухании базы. ООП такое ООП.Собственно, для меня эти расширения не актуальны. Я решил перейти на новую версию, потому что на официальном сайте заявлено, что в ней "bug fixes". С другой стороны, раз есть расширения, то есть и новые баги. :) Насчёт bugs fixed у меня есть подтверждения, я готовлю материал на эту тему. Например, больше не воспроизводится "type guard bug" - это когда при применении охраны типа к результату функции эта функция вызывалась дважды. Теперь на моём тестовом примере этого не происходит. |
Автор: | Александр Ильин [ Пятница, 30 Декабрь, 2011 18:38 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
igor писал(а): Александр Ильин писал(а): Знать бы, что такого хорошего и полезного добавилось... Могу преположить, что Ваши DLL теперь всегда будут на всякий случай ( :) ) импортировать дополнительные библиотеки.Код: Error (54): Name 'X2C_TRAP_INDEX_C' not found (referenced in file ***.ob2) Суффикс "C" подсказывает мне, что речь идёт о функциях, доставшихся нам вместе с XDS-C. Раньше ведь они назывались просто X2C_TRAP_INDEX, X2C_TRAP_NIL и X2C_ASSERT_F соответственно. В новой версии libxds.lib есть и старые имена функций, и новые. Неудивительно, что сам этот файл распух с 314 Кб до 746 Кб!Error (54): Name 'X2C_TRAP_NIL_C' not found (referenced in file ***.ob2) Error (54): Name 'X2C_ASSERT_FC' not found (referenced in file ***.ob2) Интересно, есть ли какая-то опция, чтобы использовать старые функции (раз уж они по-прежнему есть в наличии)? Может быть, удастся вернуть размер dll-ок на прежний уровень. В diff'ах документации я видел, что появилось несколько новых опций компилятора. |
Автор: | igor [ Пятница, 30 Декабрь, 2011 18:41 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
Александр Ильин писал(а): Насчёт bugs fixed у меня есть подтверждения Это хорошие новости Что касается разбухания PE-файлов, то можно попробовать использовать старую версию компоновщика. Прям сейчас этим и займусь. |
Автор: | Александр Ильин [ Пятница, 30 Декабрь, 2011 18:43 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
В примерах появился интересный проект samples/mixed, который, как будто, демонстрирует проект, написанный совместно на Modula-2 и C. Или там два проекта, использующие общую часть исходников? я ещё не разбирался. В общем, добавление XDS-C может облегчить взаимодействие с сишными программами, что может быть весьма актуально. Надо посмотреть. |
Автор: | Александр Ильин [ Пятница, 30 Декабрь, 2011 18:45 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
igor писал(а): Что касается разбухания PE-файлов, то можно попробовать использовать старую версию компоновщика. Прям сейчас этим и займусь. :) Обязательно напишите о результатах!
|
Автор: | igor [ Пятница, 30 Декабрь, 2011 18:50 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
Александр Ильин писал(а): igor писал(а): Прям сейчас этим и займусь. Обязательно напишите о результатах!Со старой версией компоновщика (v2.6) прирост составил 107КБ против 111КБ с новым компоновщиком (v2.13.3). Ну, то есть сам компоновщик не слишком-то "виноват". |
Автор: | igor [ Пятница, 30 Декабрь, 2011 19:05 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
igor писал(а): Ну, то есть сам компоновщик не слишком-то "виноват". Старый компоновщик ничего не знает про новые библиотечные расширения. Значит "зараза" прёт из объектных файлов.
|
Автор: | Александр Ильин [ Пятница, 30 Декабрь, 2011 19:07 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
igor писал(а): igor писал(а): Ну, то есть сам компоновщик не слишком-то "виноват". Старый компоновщик ничего не знает про новые библиотечные расширения. Значит "зараза" :) прёт из объектных файлов. |
Автор: | igor [ Пятница, 30 Декабрь, 2011 19:27 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
На всякий случай прогнал свой икзешничег через утилиту dumpbin.exe с ключами /imports и /exports. Никакого криминала не обнаружил. Экспорт, как и следовало ожидать, вообще пустой. А импорт только из KERNEL32.DLL и USER32.DLL. Ничего "левого". |
Автор: | Александр Ильин [ Пятница, 30 Декабрь, 2011 20:18 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
Внутри компилятора строка "X2C_TRAP_NIL" без суффикса тоже не встречается, так что вряд ли есть такая опция компиляции. Хекс-редактором поправил obj-файлы после компиляции: убрал суффиксы "C", поправил длины строк, добавил нулей для компенсации смещения, после чего скомпилировал WebEdit.dll новым компилятором/линкером XDS 2.60. Размер dll-файла после компиляции в XDS 2.51: 59'392; в XDS 2.60 с использованием старого libxds.lib (от 2.51) размер: 61'952, при использовании нового libxds.lib пропатченные объектники всё равно дают больший размер: 72'704. Вывод: имя функции, с префиксом оно или без, роли не играет. Просто в новой либе больше кода под эти рантаймовые функции. Дублирование имён внутри libxds.lib, скорее всего, сделано для совместимости с предыдущей версией. |
Автор: | GameHunter [ Пятница, 30 Декабрь, 2011 22:40 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
Опробовал новый XDS на своих расчётах. У меня 2 основных режима компиляции: проверочный (со всеми проверками без оптимизации) и рабочий (без проверок с оптимизацией). В проверочном режиме всё работает как и раньше. А вот в рабочем режиме почти сразу появляется floating overflow. Так что, кажется, в целом надёжность компилятора не слишком увеличилась Я уже сталкивался с похожими floating overflow'ами в рабочем режиме (в проверочном они у меня не воспроизводятся) в версии 2.50 - они устраняются только танцами с бубном, если, конечно, не хочется считать в проверочном режиме (это в 1.5 раза медленнее). |
Автор: | Александр Ильин [ Пятница, 30 Декабрь, 2011 23:14 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
А есть тестовый проект, на котором бы воспроизводилась ошибка? |
Автор: | igor [ Суббота, 31 Декабрь, 2011 00:13 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
Отчёт dumpbin.exe для проекта, собранного в XDS v2.51: Код: Microsoft (R) COFF/PE Dumper Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file xxxx.exe File Type: EXECUTABLE IMAGE Summary 1B000 .bss 3000 .data 1000 .debug 1000 .idata 2000 .reloc 1B000 .text Аналогичный отчёт для того же проекта, собранного в XDS v2.60: Код: Microsoft (R) COFF/PE Dumper Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file xxxx.exe File Type: EXECUTABLE IMAGE Summary 3B000 .bss 4000 .data 1000 .debug 1000 .idata 3000 .reloc 1F000 .text Как видно из отчётов, увеличилась секция инициализированных данных (.data), секция перемещаемых данных (.reloc) и собственно секция кода (.text). Размер секции отладки (.debug) и импорта из внешних библиотек (.idata) не изменился (по крайней мере в памяти, в файле мог и измениться). Секцию неинициализированных данных (.bss) в расчёт можно не принимать, так как её размер в файле всегда равен нулю. По большому счёту я готов мириться с этим увеличением размера файла. А вот то обстоятельство, что исправлены ошибки, для меня важнее Осталось разобраться что там с floating overflow. |
Автор: | GameHunter [ Понедельник, 02 Январь, 2012 15:58 ] | ||
Заголовок сообщения: | Re: XDS 2.6 beta release | ||
Пожалуйста, попробуйте разобраться. Во вложении моя (чуть модифицированная) программа. На входе принимает файл V.txt - уже лежит в каталоге EXE, куда программа будет компилироваться. Про режимы компиляции Debug и Run читайте комментарии в проектном файле. В режиме Run в XDS 2.51 всё работает, в XDS 2.60 beta почти сразу вылетает real overflow, он не воспроизводится в режиме Debug. При подготовке этого сообщения нашёлся ещё один "бубнотанцевый" баг: если в файле Flow\fDynamicParticle.ob2 закомментировать строчки No. 50 или 57 (там стоят никчёмные, ничего не значащие операторы), то в режиме Run программа вылетает с сообщением invalid location. Это, опять-таки, не воспроизводится в отладочном режиме. Этот баг присутствует как в старой, так и в новой версиях XDS. Ну как жить с такими багами ? С уважением, GH.
|
Автор: | Александр Ильин [ Вторник, 03 Январь, 2012 02:21 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
GameHunter писал(а): Пожалуйста, попробуйте разобраться. Подобные ошибки кодогенератора встречались и мне, да только всё не удавалось создать минимальный проект для их воспроизведения. Решались они иной раз изменением текстовой константы в соседней строке. : )При подготовке этого сообщения нашёлся ещё один "бубнотанцевый" баг Ну как жить с такими багами :( ? Что там с real overflow я не знаю, а вот до invalid location я докопался с помощью IDA Pro и XD. Дело в том, что там генерируется PUSH, после чего из стека достаётся сохранённое значение указателя. Вот так это выглядит: Код: .text:00419130 call Space_NewFloatArray Команды PUSH - это уже задвигаются в стек параметры для следующего вызова Space.NewFloatArray. По адресу [esp+1Ch] находится значение указателя f, полученного ранее в результате выполнения NEW. Да только вот незачада: смещение 1Ch было бы правильным, если бы не был сделан перед этим "push 0". После выполнения push значение регистра ESP изменилось, и теперь правильное смещение = 20h. Соответственно, из стека достаётся не запомненное значение указателя, а какое-то постороннее значение (в данном случае = 1), что и приводит к ошибке доступа к памяти, аналогичной разыменованию нулевого указателя..text:00419135 mov ecx, [esp+10h] ; Сюда не обращайте внимания .text:00419139 push 0 ; злополучный push .text:0041913B mov edx, [esp+1Ch] ; Get local variable 'f' from stack .text:0041913F push 0 .text:00419141 mov [edx], eax ; f.Vz := 'result of Space_NewFloatArray' Если пропатчить exe-файл, заменив смещение 1Ch на 20h, то программа работает нормально и завершается в совершенно другом месте с real overflow, как от неё и ожидается : ) Вот знаю я это всё. И что мне теперь со всем этим делать? : ) |
Автор: | Александр Ильин [ Вторник, 03 Январь, 2012 02:34 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
По поводу real overflow могу сказать, что это исключение возникает скорее всего в результате выполнения инструкции fscale. Но в каком месте исходников - не знаю. |
Автор: | igor [ Вторник, 03 Январь, 2012 10:03 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
GameHunter писал(а): Пожалуйста, попробуйте разобраться. Вроде, не все модули представлены: Во вложении моя (чуть модифицированная) программа. Код: * [Environment\SymThreads\SymThreads.ob2 18.09 F425] * file open error: "Processes.sym" no such file IMHO, начинать нужно с выделения минимального тестового проекта, на котором воспроизводится ошибка. Лучше Вас это никто не сделает. |
Автор: | igor [ Вторник, 03 Январь, 2012 10:16 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
Александр Ильин писал(а): до invalid location я докопался с помощью IDA Pro и XD. Респект и уважуха! . А XD что за инструмент, HxD что ли?Александр Ильин писал(а): Вот знаю я это всё. И что мне теперь со всем этим делать? : ) А вот это "mailto:support@excelsior-usa.com" не помогает решить проблему?
|
Автор: | GameHunter [ Вторник, 03 Январь, 2012 11:48 ] |
Заголовок сообщения: | Re: XDS 2.6 beta release |
Processes - стандартный модуль XDS'а. Странно что его у Вас нет... |
Страница 2 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |