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

Kolibri libc - своя libc
https://board.kolibrios.org/viewtopic.php?f=24&t=4391
Page 1 of 2

Author:  maxcodehack [ Sat Feb 06, 2021 3:42 pm ]
Post subject:  Kolibri libc - своя libc

https://github.com/turbocat2001/kolibri-libc
Уже работает, некоторые куски кода были взяты из pdclib

Author:  maxcodehack [ Sat Feb 20, 2021 7:20 pm ]
Post subject:  Re: Kolibri libc - своя libc

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

Author:  punk_joker [ Thu Apr 08, 2021 11:11 pm ]
Post subject:  Re: Kolibri libc - своя libc

Перенес тему в подфорум Прикладные библиотеки

Author:  turbocat [ Sat May 01, 2021 1:42 am ]
Post subject:  Re: Kolibri libc - своя libc

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

Author:  Coldy [ Sat May 01, 2021 10:28 am ]
Post subject:  Re: Kolibri libc - своя libc

Поддерживаю на 100%. Такой библиотеки не хватало в \LIB, libс была только на CD. Со временем прошу также добавить в эту библиотеку поддержку автозагрузки библиотек.

Author:  turbocat [ Wed May 05, 2021 1:24 am ]
Post subject:  Re: Kolibri libc - своя libc

Для tcc библиотека является "автозагружаемой". Боппан создал отличный загрузчик. Но всё же формат самих библиотек мне не нравится. Зачем в таблице экспорта ТЕКСТ! Почему бы не иметь просто массив указателей. Всё равно файл является объектным и все символы можно и так просмотреть... Вообщем время покажет...

Author:  Coldy [ Wed May 05, 2021 10:00 am ]
Post subject:  Re: Kolibri libc - своя libc

Привет!
Чтобы было понятно, что я имел в виду, лучше показать на примере. Для этого я модифицировал код 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 40 times

Author:  turbocat [ Wed May 05, 2021 11:46 am ]
Post subject:  Re: Kolibri libc - своя libc

Круто! Нужно попробовать запустить это чудо! Что касается memmove эта функция которая используется tcc для работы с юнионами. По какой то неизвестной причине прога крашилась при её вызове. А вот при статической линковке всё норм!

Author:  turbocat [ Wed May 05, 2021 11:47 am ]
Post subject:  Re: Kolibri libc - своя libc

Если внезапно это заработает то memmove будет удалён....

Author:  Coldy [ Wed May 05, 2021 11:54 am ]
Post subject:  Re: Kolibri libc - своя libc

Заработает :) Если будут проблемы, могу помочь с интеграцией.

Author:  turbocat [ Wed May 05, 2021 11:57 am ]
Post subject:  Re: Kolibri libc - своя libc

Автоимпорт это круто! Но какая то каша из заголовков. Можно ли пологать что в будущем это будет один формат KX(если вы договоритесь с Kenshin)

Author:  turbocat [ Wed May 05, 2021 1:37 pm ]
Post subject:  Re: Kolibri libc - своя libc

А ты можешь пожалуйста свой код из crt0.asm переместить в отдельную crt0_dll.asm например. Хочется всё таки сохранить возможность использовать то и то.

Author:  Coldy [ Wed May 05, 2021 4:53 pm ]
Post subject:  Re: Kolibri libc - своя libc

Ты сначала попробуй это прикрутить, чтоб все линковалось нормально и работало. Для старого варианта надо просто указать HDR_VER=1. Как вариант до сборки создавать отдельный файл (и подключать его из crt0.asm) сначала с HDR_VER=1, а потом с HDR_VER=2.

Author:  turbocat [ Wed May 05, 2021 7:39 pm ]
Post subject:  Re: Kolibri libc - своя libc

Ты есть в телеге?

Author:  turbocat [ Wed May 05, 2021 7:42 pm ]
Post subject:  Re: Kolibri libc - своя libc

Начинаю тыкать.... А откуда я возьму __i_ptr__?
Я так понимаю что в crt0.asm по приколу написан заголовок...
На самом деле в исполняемом файле заголовок генерирует tcc и ему на crt0.o пофиг

Page 1 of 2 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/