Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Sep 22, 2020 11:45 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 68 posts ]  Go to page Previous 1 2 3 4 5
Author Message
PostPosted: Fri Apr 25, 2014 10:10 pm 
Offline
Kernel Developer

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


Top
   
PostPosted: Wed Oct 19, 2016 7:58 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Скопировал из чата:
Quote:
//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 сразу


Top
   
PostPosted: Wed Nov 01, 2017 1:04 am 
Offline
Mentor
User avatar

Joined: Mon Oct 19, 2009 10:58 am
Posts: 498
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.


Attachments:
pe2.diff [139.78 KiB]
Downloaded 134 times
Top
   
PostPosted: Thu Nov 02, 2017 6:00 pm 
Offline
Kernel Developer
User avatar

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

_________________
Сделаем мир лучше!


Top
   
PostPosted: Wed Sep 19, 2018 5:34 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Интересный вопрос насчёт иконок в StrippedPE.
Директория ресурсов, как я понял, предусмотрена.
Если хранить иконки там, то чтобы их оттуда достать(чтобы отобразить где-то) придётся сначала распаковать файл.
Так как приложения у нас в данный момент не имеют расширения, то может получиться, что пред нами не приложение, а файл с какими-то данными(не важно), размером эдак 100Мб.
В той теме viewtopic.php?f=26&t=3621 я пытался кое-что придумать, но видимо никому больше это не нужно.

Просто интересно, как планируется работа с ресурсами, в частности с иконками.


Top
   
PostPosted: Sun Apr 26, 2020 5:10 pm 
Offline
User avatar

Joined: Mon Aug 26, 2019 10:14 pm
Posts: 36
Q for masters: how can OS share DLL between processes if in different ones the DLL may be loaded in different base addresses (and relocated, so that code of DLL in address space of App1 differs from code of DLL in App2's address space).

I get the result on Windows: if some conditions are met, HMODULE of the same DLL in different apps may be different. Does it mean that Windows does not share DLL between apps or may sometimes have several instances of it loaded?

_________________
Если программа не юзабельна под ХРюшей с 128МБ памяти и IDE винчестером, она отстой


Top
   
PostPosted: Sun Apr 26, 2020 5:42 pm 
Offline
User avatar

Joined: Tue Jul 04, 2017 5:14 pm
Posts: 21
Yep, sometimes you can't map existing in memory DLL where is supposed to be (mb, the memory in process address space is already in use), so you have to make one more copy of DLL and relocate it again.


Top
   
PostPosted: Thu Apr 30, 2020 2:50 pm 
Offline
User avatar

Joined: Mon Aug 26, 2019 10:14 pm
Posts: 36
Ok, what's conclusion? Do we need new executable and library formats or kernel developers desided leave it as is?

If kernel devs have any roadmap, let me see it, I'l try to help to imeplement anything in that direction.

_________________
Если программа не юзабельна под ХРюшей с 128МБ памяти и IDE винчестером, она отстой


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 68 posts ]  Go to page Previous 1 2 3 4 5

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited