Board.KolibriOS.org

Official KolibriOS board
It is currently Sun May 26, 2019 8:33 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 231 posts ]  Go to page Previous 112 13 14 15 16 Next
Author Message
 Post subject: Re: Tiny C Compiler
PostPosted: Thu Oct 06, 2016 12:05 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
вряд ли, я не в курсе как оно там устроено внутри.

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


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Oct 10, 2016 2:29 am 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 141
Компилятор не может найти 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 находит без проблем. ЧЯДНТ?


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Oct 10, 2016 10:57 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Есть какая то проблема с относительными путями в КОС, ключ -B не отрабатывает. Нужно зайти в папку с tcc и оттуда запускаться

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

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


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Oct 10, 2016 6:21 pm 
Offline

Joined: Sun Oct 27, 2013 8:13 pm
Posts: 141
Siemargl wrote:
Т.е в консоли (shell)
cd /usbhd0/1/ktcc_26_161007
tcc samples/consoleio.c -o samples/consoleio -lck

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

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

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


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Oct 10, 2016 6:26 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
akron1 wrote:
Siemargl wrote:
Есть какая то проблема с относительными путями в КОС, ключ -B не отрабатывает. Нужно зайти в папку с tcc и оттуда запускаться

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

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

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


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Feb 06, 2017 9:04 pm 
Offline

Joined: Thu Mar 31, 2016 10:18 am
Posts: 11
У меня возникает ошибка, когда ktcc, собранный на Win32, при линковке приложения для KOS падает в Segmentation fault. kTcc собранный для Kolibri, и запущенный под Kolibri нормально линкует при этих же параметрах. При поиске ошибки с удивлением для себя обнаружил заголовок MENUET02 там, где должна быть BSS секция(в kex файле, собранным kTcc из-под Kolibri).
Примерно понял в чем ошибка, приведу правленный мною код, который заработал нормально на обеих платформах(tccmeos.c):
Code:
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;
}

Изменено:
Code:
      //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 может генерировать бинарники с багами.


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Feb 06, 2017 10:48 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Внес в SVN. Хотя что нулям не место в бинарнике, но мусору там точно не должно быть.
В принципе, бинарники обычно kpack-уются, так что неважно.
Но по хорошему, загрузчик должен инициализировать .bss, в чем я в Колибри не уверен.

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

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


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Sun Feb 12, 2017 8:02 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Siemargl wrote:
Но по хорошему, загрузчик должен инициализировать .bss, в чем я в Колибри не уверен.
Можешь не сомневаться. Ядро всегда обнуляет память, выделяемую для приложения.


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Wed Feb 21, 2018 11:48 am 
Offline

Joined: Wed Feb 21, 2018 11:44 am
Posts: 4
Здравствуйте, tcc не запускается на реальной машине ничего не выводя на доску отладки и не показывая ошибок.
Ноутбук очень старый, не запускает некоторые программы такие как animage ругаясь на неподдерживаемые инструкции!


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Wed Feb 21, 2018 1:12 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5048
Какй процессор, модель ноутбука?

_________________
Через тернии к звездам


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Wed Feb 21, 2018 1:19 pm 
Offline

Joined: Wed Feb 21, 2018 11:44 am
Posts: 4
Leency wrote:
Какй процессор, модель ноутбука?

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


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Wed Feb 21, 2018 6:41 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
p1a wrote:
Leency wrote:
Какй процессор, модель ноутбука?

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

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

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


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Wed Feb 21, 2018 7:37 pm 
Offline

Joined: Wed Feb 21, 2018 11:44 am
Posts: 4
Siemargl wrote:
p1a wrote:
Leency wrote:
Какй процессор, модель ноутбука?

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

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

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

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


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Tue Mar 13, 2018 12:00 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Обновленная версия - мартовская 2018, Startrek Edition.

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

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

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


Attachments:
tcc_26_181012.zip [268.24 KiB]
Downloaded 51 times


Last edited by Siemargl on Fri Oct 12, 2018 12:22 pm, edited 2 times in total.
Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Thu Oct 04, 2018 10:03 pm 
Offline

Joined: Tue Jun 24, 2008 11:12 pm
Posts: 64
Ошибка при компиляции примера
Code:
>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
Code:
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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 231 posts ]  Go to page Previous 112 13 14 15 16 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


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