Board.KolibriOS.org
http://board.kolibrios.org/

Загрузка библиотек
http://board.kolibrios.org/viewtopic.php?f=1&t=1839
Страница 5 из 5

Автор:  Serge [ Пт апр 25, 2014 10:10 pm ]
Заголовок сообщения:  Re: Загрузка библиотек

Тогда надо сравнивать с этим http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=/kernel/trunk/core/dll.inc&peg=4421#line-701 Писалось с нуля по документации.
Я делал оба загрузчика и на асме и на Си, так что могу сравнивать. И количество найденых ошибок в загрузчиках тоже можно сравнить.

Автор:  0CodErr [ Ср окт 19, 2016 7:58 pm ]
Заголовок сообщения:  Re: Загрузка библиотек

Скопировал из чата:
Цитата:
//DG « Ср окт 19, 2016 7:03 pm » CleverMouse, как предполагается пользоваться kolibri.dll из \os? Есть какой-нибудь мануал?
CleverMouse « Ср окт 19, 2016 7:08 pm » //DG: предполагается, что она будет грузиться автоматически ядром
//DG « Ср окт 19, 2016 7:15 pm » Ок, а стандартные GetProcAddress есть или их надо тащить свои с программой? Это же PE DLL?
//DG « Ср окт 19, 2016 7:17 pm » И сейчас оно не грузится автоматом, верно? Мне нужен аллокатор, думаю прикрутить вместо kolibri.asm другой файл для формирования .obj; Динамические файлы obj шарятся между процессами как обычно?
//DG « Ср окт 19, 2016 7:19 pm » 68.19 грузит .obj бибилиотеки?
0CodErr « Ср окт 19, 2016 7:20 pm » Ну вообще, если мы планируем сохранять обратную совместимость, то должна быть возможность грузить библиотеки с помощью SysFn68.19 и получать указатель на таблицу экспорта DLL
0CodErr « Ср окт 19, 2016 7:20 pm » //DG: да, 68.19 грузит .obj
//DG « Ср окт 19, 2016 9:23 pm » Если перелицевать \os под .obj тот же функуионал останется, только ее станет возможным грузить через 19ф. Пожалуй, возьму этот аллокатор. Теперь осталось изучить ваш процесс сборки (кто-нибудь может меня ткнуть носом в документ?)
CleverMouse « Ср окт 19, 2016 9:24 pm » //DG: прямо сейчас загрузить транковым ядром kolibri.dll как есть вообще нельзя
CleverMouse « Ср окт 19, 2016 9:24 pm » когда-нибудь будет можно
//DG « Ср окт 19, 2016 9:24 pm » "получать указатель на таблицу экспорта DLL" Мне казалось, что у obj она всегда вначале... Где этот формат описан?
//DG « Ср окт 19, 2016 9:25 pm » CleverMouse: а какие там ограничения? Просто ядро не грузит еще ПЕшки или есть какие-то подводные камни, если я буду под .obj переделывать?
CleverMouse « Ср окт 19, 2016 9:30 pm » просто ядро не грузит PE, подводных камней вроде нет
0CodErr « Ср окт 19, 2016 9:31 pm » CleverMouse: а это что делает? http://websvn.kolibrios.org/filedetails ... peload.inc
CleverMouse « Ср окт 19, 2016 9:32 pm » 0CodErr: это для драйверов
0CodErr « Ср окт 19, 2016 9:32 pm » CleverMouse: :) хм, странно, PE ведь же тоже.
0CodErr « Ср окт 19, 2016 9:34 pm » CleverMouse: а что насчёт обратной совместимости при загрузке SysFn68.19 в будущем
CleverMouse « Ср окт 19, 2016 9:38 pm » 0CodErr: PE DLL не нужно грузить функцией ядра. PE DLL нужно грузить вызовом одной из функций userspace-компонента kolibri.dll
0CodErr « Ср окт 19, 2016 9:41 pm » CleverMouse: ну, хорошо, вот смотри, в той же винде можно делать loadlibrary+getprocaddress. В Колибри так нельзя будет?
CleverMouse « Ср окт 19, 2016 9:42 pm » 0CodErr: так и будет, только loadlibrary/dlopen - это не вызов ядра, а функция в userspace
0CodErr « Ср окт 19, 2016 9:43 pm » CleverMouse: а, ну понятно. То есть, 68.19 для PE работать не будет?
CleverMouse « Ср окт 19, 2016 9:44 pm » 0CodErr: нет, не будет
0CodErr « Ср окт 19, 2016 9:45 pm » CleverMouse: а останется ли поддержка MSCOFF библиотек?
CleverMouse « Ср окт 19, 2016 9:47 pm » 0CodErr: на переходный период - да, только шаринг страниц между разными процессами перестанет иметь место для COFF, его неудобно поддерживать для COFF и PE сразу

Автор:  dunkaist [ Ср ноя 01, 2017 1:04 am ]
Заголовок сообщения:  Re: Загрузка библиотек

Girls and guys,

AFAIK from forums and chat logs a patch by CleverMouse implements all we need for PE. It is also a non-breaking change for existing applications. I rebased the patch to current svn trunk, checked and attached it.

Is there any reason to not merge? Anything to discuss? We could finish transition to PE this year.

Вложения:
pe2.diff [139.78 КБ]
2 скачивания

Автор:  CleverMouse [ Чт ноя 02, 2017 6:00 pm ]
Заголовок сообщения:  Re: Загрузка библиотек

"Non-breaking change" - не совсем верно: для приложений изменения действительно прозрачны, но патч ломает разделение физической памяти под копиями COFF-библиотек в разных процессах.
"all we need for PE" - совсем неверно: то, что есть, должно работать, но некоторых важных вещей нет. В порядке убывания важности:
* вызов DllMain при загрузке/выгрузке DLL
* static TLS (__declspec(thread) в msvc / __thread в gcc / _Thread_local в стандарте C11)
* возврат из главной функции процесса должен приводить к завершению всех потоков процесса, а не только главного. Конфликтует с текущей реализацией консоли, поэтому окно консоли надо выносить в отдельный процесс - заодно позволит сделать консоль, разделяемую между несколькими процессами
* биндилка импортов для автосборки

Страница 5 из 5 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/