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

Tiny C Compiler
http://board.kolibrios.org/viewtopic.php?f=45&t=565
Страница 15 из 16

Автор:  Siemargl [ Чт окт 06, 2016 12:05 am ]
Заголовок сообщения:  Re: Tiny C Compiler

вряд ли, я не в курсе как оно там устроено внутри.

и я не пробовал собирать его gcc 5.4. проверил, обновил версию

Автор:  akron1 [ Пн окт 10, 2016 2:29 am ]
Заголовок сообщения:  Re: Tiny C Compiler

Компилятор не может найти start.o

Запускал с помощью Run с такими параметрами:

/usbhd0/1/ktcc_26_161007/tcc /usbhd0/1/ktcc_26_161007/samples/consoleio.c -o /usbhd0/1/ktcc_26_161007/samples/consoleio -lck -B /usbhd0/1/ktcc_26_161007

Раскидал start.o по всем папкам, но безрезультатно. libck.a и conio.h находит без проблем. ЧЯДНТ?

Автор:  Siemargl [ Пн окт 10, 2016 10:57 am ]
Заголовок сообщения:  Re: Tiny C Compiler

Есть какая то проблема с относительными путями в КОС, ключ -B не отрабатывает. Нужно зайти в папку с tcc и оттуда запускаться

Т.е в консоли (shell)
cd /usbhd0/1/ktcc_26_161007
tcc samples/consoleio.c -o samples/consoleio -lck

Если верить моему readme, еще вариант положить start.o рядом с .С файлом (возможно в текущую папку)

Автор:  akron1 [ Пн окт 10, 2016 6:21 pm ]
Заголовок сообщения:  Re: Tiny C Compiler

Siemargl писал(а):
Т.е в консоли (shell)
cd /usbhd0/1/ktcc_26_161007
tcc samples/consoleio.c -o samples/consoleio -lck

Да, спасибо, это работает.

Siemargl писал(а):
Есть какая то проблема с относительными путями в КОС, ключ -B не отрабатывает. Нужно зайти в папку с tcc и оттуда запускаться

Проблема, видимо, не в KOS. Без ключа -B, компилятор не находит также conio.h, а с ключом находит.

Автор:  Siemargl [ Пн окт 10, 2016 6:26 pm ]
Заголовок сообщения:  Re: Tiny C Compiler

akron1 писал(а):
Siemargl писал(а):
Есть какая то проблема с относительными путями в КОС, ключ -B не отрабатывает. Нужно зайти в папку с tcc и оттуда запускаться

Проблема, видимо, не в KOS. Без ключа -B, компилятор не находит также conio.h, а с ключом находит.

Возможно, еще ньюансы реализации. Заголовки должны искаться по ключу -I, а -B например в Win32 версии Tcc работает.

Когда нибудь доберусь - в ридми есть целый список errata, чего бы еще поправить и улучшить.

Автор:  netryx [ Пн фев 06, 2017 9:04 pm ]
Заголовок сообщения:  Re: Tiny C Compiler

У меня возникает ошибка, когда ktcc, собранный на Win32, при линковке приложения для KOS падает в Segmentation fault. kTcc собранный для Kolibri, и запущенный под Kolibri нормально линкует при этих же параметрах. При поиске ошибки с удивлением для себя обнаружил заголовок MENUET02 там, где должна быть BSS секция(в kex файле, собранным kTcc из-под Kolibri).
Примерно понял в чем ошибка, приведу правленный мною код, который заработал нормально на обеих платформах(tccmeos.c):
Код:
int tcc_output_me(TCCState* s1,const char *filename)
{
   me_info me;
    int i;
   int offset;
    FILE* f;
    //printf("%d\n",s1->nb_sections);
   memset(&me,0,sizeof(me));
   me.s1=s1;
   relocate_common_syms();
   assign_addresses(&me);

   if (s1->do_debug)
      tcc_output_dbgme(filename, &me);

   me.header.entry_point=tcc_find_symbol_me(&me,"start");
   me.header.params= tcc_find_symbol_me(&me,"__argv"); // <--
   me.header.argv= tcc_find_symbol_me(&me,"__path"); // <--

   f=fopen(filename,"wb");
   offset=0;
    for (i=0;i<8;i++)
        me.header.magic[i]=me_magic[i];
   /*me.header.magic[0]='M';me.header.magic[1]='E';
   me.header.magic[2]='N';me.header.magic[3]='U';
   me.header.magic[4]='E';me.header.magic[5]='T';
   me.header.magic[6]='0';me.header.magic[7]='1';*/
   printf("\nHeader at:%i",offset);
   offset+=fwrite(&me.header,1,sizeof(IMAGE_MEOS_FILE_HEADER),f);
   meos_section_info* si;
   printf("\nCode at:%i",offset);
   for(si=me.code_sections;si;si=si->next)
      offset+=fwrite(si->data,1,si->data_size,f);
   printf("\nData at:%i",offset);
   for (si=me.data_sections;si;si=si->next)
      offset+=fwrite(si->data,1,si->data_size,f);
   printf("\nBSS at:%i",offset);
   for (si=me.bss_sections;si;si=si->next){
      //my mod
      if (si->data==NULL){
         printf("\nError! BSS data is NULL! size:%i",(int)si->data_size);
         si->data=calloc(si->data_size,1);
      }
      //end my mod
      offset+=fwrite(si->data,1,si->data_size,f);
   }
   printf("\nComplete! Writed %i bytes.\n",offset);
/*
    if (me.bss_sections) // Siemargl testin, what we lose
    {
        tcc_error_noabort("We lose .BSS section when linking KOS32 executable");
    }
*/
   fclose(f);
   return 0;
}

Изменено:
Код:
      //my mod
      if (si->data==NULL){
         printf("\nError! BSS data is NULL! size:%i",(int)si->data_size);
         si->data=calloc(si->data_size,1);
      }
      //end my mod

а KTCC из под Kolibri может успешно читать из NULL образ своего же запущеного процесса. И записывать в файл. Но это может привести к серьезным ошибкам, поскольку данные в BSS должны быть нулями в момент запуска процесса. То есть ktcc может генерировать бинарники с багами.

Автор:  Siemargl [ Пн фев 06, 2017 10:48 pm ]
Заголовок сообщения:  Re: Tiny C Compiler

Внес в SVN. Хотя что нулям не место в бинарнике, но мусору там точно не должно быть.
В принципе, бинарники обычно kpack-уются, так что неважно.
Но по хорошему, загрузчик должен инициализировать .bss, в чем я в Колибри не уверен.

В редакциях <=6429 BSS вообще не писался.

На самом деле, в плане работ по tcc, есть интересная другая ветка https://github.com/mirror/tinycc, с которой бы смержиться когда либо.
В ней работает __fastcall и --bounds_check, хотя сходу не захотел печатать стек при нарушении границ.

Автор:  Serge [ Вс фев 12, 2017 8:02 am ]
Заголовок сообщения:  Re: Tiny C Compiler

Siemargl писал(а):
Но по хорошему, загрузчик должен инициализировать .bss, в чем я в Колибри не уверен.
Можешь не сомневаться. Ядро всегда обнуляет память, выделяемую для приложения.

Автор:  p1a [ Ср фев 21, 2018 11:48 am ]
Заголовок сообщения:  Re: Tiny C Compiler

Здравствуйте, tcc не запускается на реальной машине ничего не выводя на доску отладки и не показывая ошибок.
Ноутбук очень старый, не запускает некоторые программы такие как animage ругаясь на неподдерживаемые инструкции!

Автор:  Leency [ Ср фев 21, 2018 1:12 pm ]
Заголовок сообщения:  Re: Tiny C Compiler

Какй процессор, модель ноутбука?

Автор:  p1a [ Ср фев 21, 2018 1:19 pm ]
Заголовок сообщения:  Re: Tiny C Compiler

Leency писал(а):
Какй процессор, модель ноутбука?

На обороте написано что satellite 1625cdt/4.3
Кажется AMD K6.

Автор:  Siemargl [ Ср фев 21, 2018 6:41 pm ]
Заголовок сообщения:  Re: Tiny C Compiler

p1a писал(а):
Leency писал(а):
Какй процессор, модель ноутбука?

На обороте написано что satellite 1625cdt/4.3
Кажется AMD K6.

запускаешь под колибри или под windows ?

можно собрать версию под старые процы, хотя с этим проблема - надо и newlib пересобирать под К6 (

Автор:  p1a [ Ср фев 21, 2018 7:37 pm ]
Заголовок сообщения:  Re: Tiny C Compiler

Siemargl писал(а):
p1a писал(а):
Leency писал(а):
Какй процессор, модель ноутбука?

На обороте написано что satellite 1625cdt/4.3
Кажется AMD K6.

запускаешь под колибри или под windows ?

можно собрать версию под старые процы, хотя с этим проблема - надо и newlib пересобирать под К6 (

Запускал только под колибри, может стоит попробовать ещё где-то.
Никогда ничего не собирал под другую архитектуру(.

Автор:  Siemargl [ Вт мар 13, 2018 12:00 am ]
Заголовок сообщения:  Re: Tiny C Compiler

Обновленная версия - мартовская 2018, Startrek Edition.

Добавлена буферизация чтения в libck - иначе Стартрек несколько минут побайтово читал хелп-файл с виртуального /fd0/1.
Также добавлены несколько функций в libck, и в ней же исправлены обнаруженные при работе ошибки.

Обновлено от сентября 2018, поправлено возвращаемое значение fwrite,
неверный импорт из coff при похожих именах (в частности вместо con_getch2 линковалась con_getch)

Обновлено октябрь 2018 - забытые исправления из транка.

Вложения:
tcc_26_181012.zip [268.24 КБ]
16 скачиваний

Автор:  b00bl1k [ Чт окт 04, 2018 10:03 pm ]
Заголовок сообщения:  Re: Tiny C Compiler

Ошибка при компиляции примера
Код:
>kos32-tcc.exe samples\winbasics.c -lck
In file included from samples/winbasics.c:10:
include/kos32sys1.h:579: error: field 'zero' has incomplete type


Ошибки при сборке libc
Код:
In file included from stdio/printf.c:3:
include/conio.h:18:23: ошибка: несовместимые типы для «dword»
 typedef unsigned long dword; /* 32-bit unsigned integer */
                       ^~~~~
In file included from include/stdlib.h:3,
                 from stdio/printf.c:1:
include/kolibrisys.h:19:22: замечание: здесь была предыдущая декларация «dword»
 typedef unsigned int dword;
                      ^~~~~
                     
string/is.c:2:16: ошибка: несовместимые типы для «__is»
 unsigned short __is[129] = {
                ^~~~
In file included from string/is.c:1:
include/ctype.h:21:23: замечание: здесь была предыдущая декларация «__is»
 extern unsigned short __is[128];

gcc-8.2.1 x86_64

Страница 15 из 16 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/