Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс дек 17, 2017 5:00 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 46 сообщений ]  На страницу Пред. 1 2 3 4 След.
Автор Сообщение
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Вт сен 20, 2016 5:11 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 269
какая замечательная бяка https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52991

tldr для всех программ, использующих невыровненные структуры __attribute__((packed)), нужно обязательно компилировать с опцией -mno-ms-bitfields.

например, в колибри файловые операции, предполагают указатель на имя с 25го байта

4.8.2, 4.9.2 подвержены - и написано в багрепорте, что и 5.3.0 тоже


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Вт сен 20, 2016 5:45 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Я столкнулся с этим при декодировании EDID в видеодрайверах.


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Пт окт 28, 2016 1:45 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
gcc-5.4.0 для windows. Содержимое архива распаковать в /home/autubuild/tools
Статические библиотеки и библиотеки импорта. Распаковать в /home/autubuild/tools/win32
готовые dll
Основные отличия от предыдущего gcc-4.8:
портирована libgcc
libstdc++ поддерживает wide char функции
исправлена обработка исключений С++
синхронизация переписана с использованием фьютексов


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Сб окт 29, 2016 7:06 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
gcc-5.4.0 для linux


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Ср ноя 02, 2016 5:27 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 443
Такая проблемка возникла. Программа компилируется, линкуется, но после запуска появляется консоль и всё, ничего не выводится(код простой хелловорлд). mingw скачал версии 5.4, линковал с последними либами следующими командами:
kos32-gcc -c -D_KOS_ main.cpp
kos32-ld -o cmm.kex -static -nostdlib -T -app-static.lds --stack 0x100000 $(Path_Libs) main.o -lc -lgcc
kos32-objcopy cmm.kex -O binary
Все файлы он точно нашёл и они точно для Колибри. Как выяснилось, выполнение до main(..) не доходит(делал там деление на 0, вылетов не происходило).

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Ср ноя 02, 2016 6:09 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
GerdtR
У меня нет хрустального шара :( . Нужен бинарник, мап-файл и исходник чтобы сравнить.
-nostdlib лишнее. Из-за него библиотеки могут не оттуда прилинковаться.


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Ср ноя 02, 2016 7:14 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 443
Перед компиляцией скачал mingw5.4, содержимое msys-kos32-5.4.0 скопировал поверх с заменой(только либы скопировал в mingw5.4\lib\kos), добавил в PATH путь до папки bin. Всё, дальше make (да, переименовал mingw32-make в make, а то не удобно) и вот. Тестил в qemu. Ну только раздел /kolibrios не настраивал, но я же статическую libc линковал, не критично, я так думаю.


Вложения:
1.ZIP [71.16 КБ]
24 скачивания

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Ср ноя 02, 2016 8:22 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 269
GerdtR писал(а):
Такая проблемка возникла. Программа компилируется, линкуется, но после запуска появляется консоль и всё, ничего не выводится(код простой хелловорлд). mingw скачал версии 5.4, линковал с последними либами следующими командами:
kos32-gcc -c -D_KOS_ main.cpp
kos32-ld -o cmm.kex -static -nostdlib -T -app-static.lds --stack 0x100000 $(Path_Libs) main.o -lc -lgcc
kos32-objcopy cmm.kex -O binary
Все файлы он точно нашёл и они точно для Колибри. Как выяснилось, выполнение до main(..) не доходит(делал там деление на 0, вылетов не происходило).
Я когда корректировал makefile для сборки cmm под 5.4, потом перепроверил, что cmm работает и компилит в рабочие программы. Попробуй собрать make'om.
Но там (и вообще в моих тестах) ключики немного другие.


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Ср ноя 02, 2016 11:47 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 443
Siemargl, совсем забыл про твои правки. Скачал с свн весь каталог с cmm, компильнул - тоже самое - ни надписей, только пустая консоль. Обновил образ КолибриОС - не помогло. Скинул с свн инклудники(я с виндовыми всегда компилил, проблем не было), что в Makefile указаны, чисто с ними компилил - ругался, что stddef.h не найден, скопировал его и всё что он потянул с собой из виндовых, потом отругался на отсутствующий stdarg.h, опять тоже самое(причём с более старого mingw пришлось копировать, так как в новом его тоже нет), потом выругался так, что просто закрыл консоль :D Функций не понаходил типа strlen и другие со стандартной библиотеки. Дурь полная, короче. Завтра буду дальше шаманить, но что-то я недопонимаю.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Чт ноя 03, 2016 12:24 am 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 269
У тебя какая то проблема инициализации libc - вылетает __main() в процессе инициализации.
Похоже не находит функцию при загрузке dll (адрес -1) и завершается.

Проверь, что у тебя libc.dll верная.

А про не найденные strlen, stddef - должны быть настроены пути к sdk (newlib там живет) внутри makefile


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Чт ноя 03, 2016 6:55 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
GerdtR
Ничего удивительного. __main вызывает __do_global_ctors (void), которая регистрирует обработчики исключений и выполняет конструкторы глобальных объектов, а также вызывает atexit (__do_global_dtors), которую ты переопределил как
Код:
int atexit (void (*function) (void)) 
{
   //function();
   
   exit(0);
}
что в результате и происходит. У libc и libgcc перекрёстные зависимости, поэтому надо линковать -lc -lgcc -lc


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Чт ноя 03, 2016 6:25 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 443
Siemargl, я линкую libc.a, то есть libc.dll мне не нужен. А библиотеки последние скачал.
И так. Исправил я свой main.cpp, теперь без переопределений, функции все нашлись. Однако запустил и опять пустая консоль. В отладчике смотрел, до моего main действительно доходит, и printf вызывается, он вызывает _fputc_r, потом _putc_r, но почему-то на консоли ничего. В процессе работы никакой функции из console.obj не вызывается. Толком не разобрался ещё, но в _putc_r сначала вызывается mutex_lock, потом mutex_init_function, потом он как-то прыгает, точно не понял как и куда и уже mutex_unlock. То есть кроме работы с мьютексами ничего не вызывается, никаких функций больше. Ну указатель на мою строку там мелькает как положено и буквы все прокручивает в цикле, но вот вывод не проиходит.

Попробовал поставить брэкпоинт на con_write_string (других функций вывода из ряда con_... не увидел), отладчик не останавливался, то есть функция не вызывается.


Вложения:
2.ZIP [71.2 КБ]
27 скачиваний

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Чт ноя 03, 2016 6:59 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
потому что надо printf("Hello World\n")


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Чт ноя 03, 2016 7:15 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1082
Цитата:
потому что надо printf("Hello World\n")
Ну это что-то странное :)
Или чудит этот ваш gcc.
Проверил на Delphi два варианта
Код:
   printf('Hello!');
и
Код:
   printf('Hello!'#10);
и оба работают.


Вернуться к началу
 Заголовок сообщения: Re: gcc и kolibri
СообщениеДобавлено: Чт ноя 03, 2016 10:25 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 443
Ура! printf("Hello World\n") заработало, Serge спасибо) Теперь с cmm осталось разобраться и всё.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 46 сообщений ]  На страницу Пред. 1 2 3 4 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB