Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Jun 22, 2021 10:13 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Sat Feb 06, 2021 3:42 pm 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 409
https://github.com/turbocat2001/kolibri-libc
Уже работает, некоторые куски кода были взяты из pdclib

_________________
:arrow: Image


Top
   
PostPosted: Sat Feb 20, 2021 7:20 pm 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 409
Взята математика из menuetlibc, написан stdio, реализованы kgcc и kld (см. папку linuxtools, по аналогии как в menuetlibc)
Размер libc.a - 132,8 КБ. Примера с математикой mathtest.c - 9,4 КБ (без kpack). Пока это статическая линковка. Возможно она будет скомпилена динамически и будет в дистрибутиве в /sys/lib

_________________
:arrow: Image


Top
   
PostPosted: Thu Apr 08, 2021 11:11 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1179
Перенес тему в подфорум Прикладные библиотеки

_________________
я лишь учусь


Top
   
PostPosted: Sat May 01, 2021 1:42 am 
Offline
User avatar

Joined: Thu Jun 25, 2020 1:14 am
Posts: 66
Думаю это та вещь на которую стоит обратить внимание. Хотя библиотека не совсем протестирована и возможно в ней есть ошибки, она отличается от всех libc в кос. Ведь она использует нативных формат библиотек колибри, то-есть MS COFF. Никакого перегруженного PE или ELF или уж тем более статической линковки! LIBC.OBJ весит 16 КБ и её можно использовать вместе с FASM.(Для этого она и создавалась). В данный момент libc.obj уже находится в минимальной сборке. Так что юзайте и сообщайте о проблемах.

_________________
За tcc и двор стреляю в упор!


Top
   
PostPosted: Sat May 01, 2021 10:28 am 
Offline

Joined: Tue Apr 09, 2019 8:57 pm
Posts: 56
Поддерживаю на 100%. Такой библиотеки не хватало в \LIB, libс была только на CD. Со временем прошу также добавить в эту библиотеку поддержку автозагрузки библиотек.


Top
   
PostPosted: Wed May 05, 2021 1:24 am 
Offline
User avatar

Joined: Thu Jun 25, 2020 1:14 am
Posts: 66
Для tcc библиотека является "автозагружаемой". Боппан создал отличный загрузчик. Но всё же формат самих библиотек мне не нравится. Зачем в таблице экспорта ТЕКСТ! Почему бы не иметь просто массив указателей. Всё равно файл является объектным и все символы можно и так просмотреть... Вообщем время покажет...

_________________
За tcc и двор стреляю в упор!


Top
   
PostPosted: Wed May 05, 2021 10:00 am 
Offline

Joined: Tue Apr 09, 2019 8:57 pm
Posts: 56
Привет!
Чтобы было понятно, что я имел в виду, лучше показать на примере. Для этого я модифицировал код crt0.asm (во вложении), при HDR_VER = 2 не нужно больше всовывать в каждое приложение загрузчик библиотек. В результате crt0.o, легче в 1,5 раза становится, соответственно все приложения, которые будут с ним линковаться тоже будут меньше по размеру. Т.е. все, что раньше было в dll.inc и, соответственно, в приложениях, теперь живет в dll.obj, которая грузится ядром автоматически если версия заголовка = 2. Dll.obj делает всю работу по загрузке библиотек и связыванию импортов. Следом за стандартным заголовком надо добавить заголовок KX (это совершенно другой формат, не тот, что предложил Kenshin), о котором знает пока только dll.obj. Описание заголовка KX см. тут http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fprograms%2Fdevelop%2Flibraries%2Fdll%2FReadMe.txt
Единственное, в crt0.asm я пока прописал __i_ptr__ как внешний символ. На самом деле это - адрес таблицы экспорта (т.е. по сути это метка если писать на fasm), аналогично как в случае применения dll.inc. Т.е. чтобы собрать итоговое приложение вместо символа __i_ptr__ надо просто прописать адрес начала таблицы импорта.

Еще комментарии по коду:
1. сисфункцию 68.11 не нужно вызывать, т.к. сисфункции 68.18 и 68.19 делают это неявно
2. memmove наверное тоже можно отключить если HDR_VER = 2, тогда размер будет еще меньше
3. Комментарии рекомендую писать на английском языке. На русском у меня текст в одном редакторе не распознал кодировку.

И да, dll.obj в дистибутиве будет понимать KX заголовок, когда заработает автосборка, пока все так, как описывал в топике про автозагрузку библиотек. Но никто не мешает собрать dll.obj самостоятельно :)


Attachments:
crt0.asm [7.02 KiB]
Downloaded 32 times


Last edited by Coldy on Wed May 05, 2021 5:12 pm, edited 1 time in total.
Top
   
PostPosted: Wed May 05, 2021 11:46 am 
Offline
User avatar

Joined: Thu Jun 25, 2020 1:14 am
Posts: 66
Круто! Нужно попробовать запустить это чудо! Что касается memmove эта функция которая используется tcc для работы с юнионами. По какой то неизвестной причине прога крашилась при её вызове. А вот при статической линковке всё норм!

_________________
За tcc и двор стреляю в упор!


Top
   
PostPosted: Wed May 05, 2021 11:47 am 
Offline
User avatar

Joined: Thu Jun 25, 2020 1:14 am
Posts: 66
Если внезапно это заработает то memmove будет удалён....

_________________
За tcc и двор стреляю в упор!


Top
   
PostPosted: Wed May 05, 2021 11:54 am 
Offline

Joined: Tue Apr 09, 2019 8:57 pm
Posts: 56
Заработает :) Если будут проблемы, могу помочь с интеграцией.


Top
   
PostPosted: Wed May 05, 2021 11:57 am 
Offline
User avatar

Joined: Thu Jun 25, 2020 1:14 am
Posts: 66
Автоимпорт это круто! Но какая то каша из заголовков. Можно ли пологать что в будущем это будет один формат KX(если вы договоритесь с Kenshin)

_________________
За tcc и двор стреляю в упор!


Top
   
PostPosted: Wed May 05, 2021 1:37 pm 
Offline
User avatar

Joined: Thu Jun 25, 2020 1:14 am
Posts: 66
А ты можешь пожалуйста свой код из crt0.asm переместить в отдельную crt0_dll.asm например. Хочется всё таки сохранить возможность использовать то и то.

_________________
За tcc и двор стреляю в упор!


Top
   
PostPosted: Wed May 05, 2021 4:53 pm 
Offline

Joined: Tue Apr 09, 2019 8:57 pm
Posts: 56
Ты сначала попробуй это прикрутить, чтоб все линковалось нормально и работало. Для старого варианта надо просто указать HDR_VER=1. Как вариант до сборки создавать отдельный файл (и подключать его из crt0.asm) сначала с HDR_VER=1, а потом с HDR_VER=2.


Top
   
PostPosted: Wed May 05, 2021 7:39 pm 
Offline
User avatar

Joined: Thu Jun 25, 2020 1:14 am
Posts: 66
Ты есть в телеге?

_________________
За tcc и двор стреляю в упор!


Top
   
PostPosted: Wed May 05, 2021 7:42 pm 
Offline
User avatar

Joined: Thu Jun 25, 2020 1:14 am
Posts: 66
Начинаю тыкать.... А откуда я возьму __i_ptr__?
Я так понимаю что в crt0.asm по приколу написан заголовок...
На самом деле в исполняемом файле заголовок генерирует tcc и ему на crt0.o пофиг

_________________
За tcc и двор стреляю в упор!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 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