Page 16 of 16

Re: Newlib

Posted: Sun May 21, 2017 1:02 pm
by ashmew2
hi,

Found this missing error reporting when a user was trying to run Netsurf and it wouldnt load.
With some debugging, and realizing that the main() function was not called, finally I figured out it's because of loading the libc.dll
With this change in contrib/toolchain/, the users who run C applications and dont have a libc.dll will see an error message in the DEBUG BOARD.

Code: Select all

Index: gcc/5x/libgcc/config/i386/kos32-app.c
===================================================================
--- gcc/5x/libgcc/config/i386/kos32-app.c	(revision 6898)
+++ gcc/5x/libgcc/config/i386/kos32-app.c	(working copy)
@@ -21,6 +21,14 @@
 
     if(!img)
     {
+        // Inform the user via BOARD that libc could not be loaded.
+        char *errormsg = "[ERROR] libc.dll failed to load. is /kolibrios folder configured?\n";
+        while (*errormsg) {
+          __asm__ __volatile__("int $0x40"::"a"(63), "b"(1), "c"(*errormsg));
+          ++errormsg;
+        }
+
+        // Exit
         asm ("int $0x40" ::"a"(-1));
     };
I've Pushed this to SVN as well.
In case you disagree with these changes, please let me know :)

Re: Newlib

Posted: Mon Jan 04, 2021 4:49 pm
by maxcodehack
CleverMouse (http://board.kolibrios.org/viewtopic.php?f=24&t=1587&p=58567#p58567) wrote: Я настроила автосборку newlib из исходников в r5132.
libc.dll входит в iso и дистрибутив. Библиотеки для разработки *.a лежат в http://builds.kolibrios.org/eng/data/contrib/sdk/lib/ .

Итого, для названий системных вызовов у нас есть схема nasm MOS_STARTREDRAW[_S], схема c-- DefineAndDrawWindow, схема мини-библиотеки msvc kos_WindowRedrawStatus, схема мини-библиотеки gcc kol_paint_start, схема menuetlibc __menuet__window_redraw и две схемы newlibc BeginDraw и check_os_event. Больше шизофрении для бога шизофрении!
Я за то, как сделано в msvc: kos_DrawWindow. Но уже переписывать kos32sys.h не получится, много программ использует, но можно добавить в него также и такой вариант как в msvc.

Re: Newlib

Posted: Fri Jan 29, 2021 7:05 pm
by pascualle
Привет всем.
- Обновил статью "Пишем на языке С/C++ в Windows под KolibriOS" на хабре https://habr.com/ru/post/229231/
- залил новый архив с исправлениями на который ссылается статья

(пришлось убрать тег "Блог компании KolibriOS", так как Хабр говорил, что не уплачено за этот самый блог)

Re: Newlib

Posted: Fri Jan 29, 2021 7:15 pm
by maxcodehack
pascualle
По c++ тоже инфа устарела
Для си ++ нужны либы так:
-lstdc++ -lsup++ -lgcc -lc.dll
Gcc_eh уже не существует
Сами эти годы не компилируются - какие то ошибки. В виде бинарников лежат в /contrib/sdk/lib

Re: Newlib

Posted: Fri Jan 29, 2021 7:25 pm
by pascualle
обновил и это

Re: Newlib

Posted: Thu Jun 24, 2021 1:35 am
by turbocat
Исправил баг с вводом в консоль. После ввода символы не удалялись.
Добавил макрос _NO_STDERR что бы можно было выключить вывод stderr в доску отладки
Пригодилось при компиляции Lua и Sqlite3
#8777

Re: Newlib

Posted: Mon Nov 29, 2021 2:51 pm
by Coldy
Исправлена ошибка некорректной работы с относительным путем. Добавлялся лишний слэш после текущей рабочей директории (см. скрин). В результате, open возвращала ошибку.
Это влияло на все программы, использовавшие newlib c относительным путем.

Теперь все должно работать правильно. Проверяйте.

Re: Newlib

Posted: Mon Nov 29, 2021 3:36 pm
by Leency
Coldy wrote:Исправлена ошибка некорректной работы с относительным путем. Добавлялся лишний слэш после текущей рабочей директории (см. скрин). В результате, open возвращала ошибку.
Это влияло на все программы, использовавшие newlib c относительным путем.

Теперь все должно работать правильно. Проверяйте.
Вот в чём похоже баг DosBox c папками!

Re: Newlib

Posted: Tue Nov 30, 2021 11:43 am
by turbocat
Здорово что поправил. Правда досбокс это не исправит. Если я не ошибаюсь он собран с menuetlibc.

Re: Newlib

Posted: Tue Nov 30, 2021 12:34 pm
by Coldy
Что то пошло не так. В общем, buildpath все еще работает некорректно если задавать подъем на более чем одну директории из текущей. Например ../../somedir будет /current_directory/../somedir. Извините, рано обрадовал, не думал, что там такая проблема закопана.
Починю это позже.