Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Nov 25, 2020 10:56 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 86 posts ]  Go to page Previous 1 2 3 4 5 6 Next
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: 570
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 155 times
Top
   
PostPosted: Thu Nov 02, 2017 6:00 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1625
"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: 38
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: 38
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
   
PostPosted: Sun Oct 18, 2020 1:27 am 
Offline
Mentor
User avatar

Joined: Mon Oct 19, 2009 10:58 am
Posts: 570
Hi again,

I merged the patch manually to the current master main trunk. It still works.

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

CleverMouse,
you listed the tasks in priority order. Is it also the order to implement them?

Could you describe the steps above in more detail in case somebody wants to work on PE.


Attachments:
pe3.diff [145.12 KiB]
Downloaded 17 times
Top
   
PostPosted: Fri Nov 06, 2020 11:40 pm 
Offline
User avatar

Joined: Mon Aug 26, 2019 10:14 pm
Posts: 38
Do you really want PE executables and libraries in KolibriOS? And no one aganist making system calls more indirect? And aganist a little executable files bloating? And aganist kernel-mode PE loader?

If no kernel developer minds that, IT'S FRICKING GREAT!

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


Top
   
PostPosted: Fri Nov 06, 2020 11:45 pm 
Offline
User avatar

Joined: Mon Aug 26, 2019 10:14 pm
Posts: 38
0CodErr wrote:
Интересный вопрос насчёт иконок в StrippedPE.
Директория ресурсов, как я понял, предусмотрена.
Если хранить иконки там, то чтобы их оттуда достать(чтобы отобразить где-то) придётся сначала распаковать файл.


Не обязательно сжимать весь файл - можно научиться сжимать и распаковывать отдельные секции, как это реализовано в эльфах.

И изменения в формате PE лучше не слишком большие делать, шоб не было гемора с переписыванием кода существующих тулзов.

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


Top
   
PostPosted: Sat Nov 07, 2020 12:56 pm 
Offline
Mentor
User avatar

Joined: Mon Oct 19, 2009 10:58 am
Posts: 570
Boppan,

It was agreed that (Stripped)PE will replace MENUETxx format for binaries and COFF for libraries.
Afaik, nobody is working on it. You are welcome.

PE examples are here. Things to implement are here.


Top
   
PostPosted: Sun Nov 22, 2020 7:02 pm 
Offline
User avatar

Joined: Thu Aug 04, 2016 10:43 am
Posts: 42
IgorA wrote:
rev 8236, 8237
Программы free3d, use_mb, fasm, h2d2b, heed и несколько примеров перевел на новый макрос.

да не балуйся уже с этим макросом, я озадачился загрузчик в ядро поместить.
Совместимость с менуэтом00,01,02 будет сохранена, в отношении всех этих версий формата система научится грузить либы автоматом, но и если они не готовы грузить импорты автоматом такого происходить не будет.
Code:
struct  APP_HEADER_IMPORTS
        banner          dq ?
        version         dd ?    ;+8
        start           dd ?    ;+12
        i_end           dd ?    ;+16
        mem_size        dd ?    ;+20
                        dd ?    ;+24
                        dd ?    ;+28
                        dd ?    ;+32
        imports         dd ?
ends

no matter what menuet version,
will be tested content of [imports] field
for imports take place will be tested
that content of [imports] is non zero, content fits in initialized size stored in [i_end],
and finaly that content of [imports] points to special marker.
Если все условия будут соблюдены система сама раскрутит импорты.
Если нет - поведение будет старое - т.е. совместимое.


Top
   
PostPosted: Sun Nov 22, 2020 8:33 pm 
Offline
Mentor
User avatar

Joined: Mon Oct 19, 2009 10:58 am
Posts: 570
ProMiNick wrote:
да не балуйся уже с этим макросом, я озадачился загрузчик в ядро поместить.
Coldy already implemented this about a year ago.
It wasn't merged to trunk. May be because automatic loading of libraries was also implemented for PE.
When somebody will implement features of this list, loading of libraries will be merged to trunk automatically.
Your approach looks like a double work which you are free to do of course.


Top
   
PostPosted: Sun Nov 22, 2020 10:01 pm 
Offline
User avatar

Joined: Thu Aug 04, 2016 10:43 am
Posts: 42
I have no idea how to implement features in the list. so if for a year PE couldn`t be released so it could be never released.
But what i going to do now will make coding simplier already now, but not in abstraction future.


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

All times are UTC+03:00


Who is online

Users browsing this forum: Google [Bot] and 3 guests


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