C-- Sphinx Compiler

...
  • tsdima wrote:После внесения правок Eolite компилируется и под убунтой.

    Кроме того я внёс исправление обратных слешей на прямые, это должно и для Колибри подойти.
    Отличная новость. Можешь выложить бинарник для Линукса? Я залью его на SVN.

    И можешь попробовать скомпилить версию для Колибри?
    Из хаоса в космос
  • Siemargl wrote:По обоим вопросам нет. Покажи где такое используется
    Я запускал под отладчиком, вызывается free с левым адресом. Например в toke.cpp есть addconsttotree. При переопределении элемента освобождается ptr->sbuf (если оно не нулевое), однако в новой записи это поле не устанавливается.

    Ещё исправлял такое. Есть такая глобальная переменная bufrm. Почти везде после free есть её обнуление, однако в процедуре getintoreg (tokb.cpp) она не обнуляется после free. Она, конечно, потом устанавливается, но free расположен внутри цикла, и повторный вызов не исключён.
    Siemargl wrote:Какая то заморочка в websvn diff, не могу посмотреть все исправления (
    Да, перевод строки в файлах реально бесит. Встречаются файлы и с 0x0D,0x0A,0x0D,0x0A, и с 0x0D,0x0D,0x0A и даже 0x0D,0x0D (хотя под линуксом должно быть 0xA). Сравнение в websvn глючит на таких файлах. Комментарии на руском - то в кодировке 866, то в 1251. Вобщем надо как-то облагораживать исходники. Я так полагаю, это клиент SVN гадит? Перекодирует переводы строки?
  • Leency wrote:И можешь попробовать скомпилить версию для Колибри?
    Для Колибри я ещё не устанавливал тулзы от Serge, если кто-то уже имеет настроенную среду, просьба откомпилировать. Как впрочем и для win32.
    Я сомневаюсь, правильно ли я внёс правки в port.h, я уже потом увидел, что stricmp и ещё 3 процедуры только не для _WIN32_ определяются в port.cpp, надо бы их тоже ifdef-ами окольцевать.
  • b00bl1k wrote:
    tsdima wrote:Автор явно рассчитывал на то, что память, выделяемая malloc, содержит нули. Под виндой это почти так (первые байты всё равно не нулевые), а в убунте нет.

    Code: Select all

            mem=malloc(size);
            if(mem==NULL)OutMemory();
    #ifdef _UNIX_
            else memset(mem,0,size);
    #endif
    Если это действительно так, то зачем полагаться на поведение malloc в windows? Почему бы явно не вызвать calloc?
    Goood!!!! Круто все теперь работает, скомпилировал для Ubuntu 18.04 и с помощью этого компиляотра смог я собрать Eolite без ошибок и запустить его, пришлось правда много еще в коде поисправлять, но самое главное благодаря тебе решение нашлось!!!
    Технологии меняют мир, а я - меняю технологии.
  • Leency wrote:Можешь выложить бинарник для Линукса?
    Для какой версии линукса? :) В зависимости от версии gcc, используемой в дистрибутиве, бинарник будет разный (почти всегда). Так что для линукса лучше исходники и корректный makefile, который, впрочем, тоже может отличаться для разных версий. В частности - используемые для компиляции опции. Взрослые проекты имеют возможность запускать make configure, для таких случаев.
  • pavelyakov wrote:пришлось правда много еще в коде поисправлять
    Поподробнее можно? Я и в Ubuntu 14.04 x64 собирал без ошибок, и в Ubuntu 16.04 x32. Только warnings, которых немеряно. Но это привередливость gcc - с каждой новой версией всё больше.
  • b00bl1k wrote:зачем полагаться на поведение malloc в windows? Почему бы явно не вызвать calloc?
    А может оно и было раньше так. Поди найди теперь оригинальные исходники от Peter Cellik...
    Видимо в какой-то момент кто-то бездумно поменял.
  • tsdima wrote:
    pavelyakov wrote:пришлось правда много еще в коде поисправлять
    Поподробнее можно? Я и в Ubuntu 14.04 x64 собирал без ошибок, и в Ubuntu 16.04 x32. Только warnings, которых немеряно. Но это привередливость gcc - с каждой новой версией всё больше.
    много исправлять пришлось например вместо char надо char unsigned, вместо short надо short unsigned итд
    Технологии меняют мир, а я - меняю технологии.
  • cmm.7z (454.15 KiB)
    Downloaded 331 times
    Для Ubuntu 18.04 x64 внутри бинарник скомпилированный и исходный код
    Технологии меняют мир, а я - меняю технологии.
  • Compiler from the post just above crashes on /programs/cmm/notes app on 64-bit linux.
    /programs/cmm/appearance is compiled successfully.

    Code: Select all

    $ cmm -D=AUTOBUILD -D=LANG_ENG notes.c
    notes.c(211)> Warning! Short operator 'RETURN' may be used.
    notes.c(238)#1> 'A' undefined.
    notes.c(235)> Warning! Local variable 't' possible not used.
    free(): invalid size
    Aborted (core dumped)
  • pavelyakov wrote:cmm.7z - Для Ubuntu 18.04 x64 внутри бинарник скомпилированный и исходный код
    I tried building KolibriOS using your Linux compiler, and encountered this problem:

    Code: Select all

    tup
    [ tup ] [0.000s] Scanning filesystem...
    [ tup ] [1.161s] Reading in new environment variables...
    [ tup ] [1.162s] No Tupfiles to parse.
    [ tup ] [1.162s] No files to delete.
    [ tup ] [1.450s] Executing Commands...
    * 13157) build-sp/programs/cmm/txtread: c-- /D=AUTOBUILD /D=LANG_ENG txtread.c 
    
    SPHINX C-- Compiler   Version 0.239 b26   Mar 24 2019
    Compiling Commenced . . .
    (0)#1> unable to open file '/D=AUTOBUILD.h'.
     *** tup messages ***
     *** Command ID=77977 failed with return value 2
    Spoiler:

    Code: Select all

     13156) [0.772s] build-et/contrib/sdk/sources/newlib/libc: kos32-ld -shared -s -T libcdll.lds --out-implib ../../../lib/libc.dll.a --image-base 0 -L../../../lib -o ../../../bin/libc.dll crt/crt2.o crt/pseudo-reloc.o crt/exit.o argz/buf_findstr.o argz/envz_get.o crt/console.obj crt/gthr-kos32.o crt/thread.o crt/setjmp.o crt/cpu_features.o crt/tls.o ctype/ctype_.o ctype/isascii.o ctype/isblank.o ctype/isalnum.o ctype/isalpha.o ctype/iscntrl.o ctype/isdigit.o ctype/islower.o ctype/isupper.o ctype/isprint.o ctype/ispunct.o ctype/isspace.o ctype/iswctype.o ctype/iswalnum.o ctype/iswalpha.o ctype/iswblank.o ctype/iswcntrl.o ctype/iswdigit.o ctype/iswgraph.o ctype/iswlower.o ctype/iswprint.o ctype/iswpunct.o ctype/iswspace.o ctype/iswupper.o ctype/iswxdigit.o ctype/isxdigit.o ctype/jp2uc.o ctype/toascii.o ctype/tolower.o ctype/toupper.o ctype/towctrans.o ctype/towlower.o ctype/towupper.o ctype/wctrans.o ctype/wctype.o errno/errno.o locale/locale.o locale/lctype.o locale/ldpart.o reent/closer.o reent/fstatr.o reent/getreent.o reent/gettimeofdayr.o reent/impure.o reent/init_reent.o reent/isattyr.o reent/linkr.o reent/lseekr.o reent/mutex.o reent/openr.o reent/readr.o reent/statr.o reent/timesr.o reent/unlinkr.o reent/writer.o search/qsort.o search/bsearch.o signal/signal.o sys/access.o sys/clock_gettime.o sys/close.o sys/conio.o sys/create.o sys/errno.o sys/finfo.o sys/fsize.o sys/fstat.o sys/gettod.o sys/io.o sys/ioread.o sys/iowrite.o sys/isatty.o sys/lseek.o sys/open.o sys/read.o sys/_rename.o sys/stat.o sys/unlink.o sys/write.o sys/io_alloc.o time/asctime.o time/asctime_r.o time/clock.o time/ctime.o time/ctime_r.o time/difftime.o time/gettzinfo.o time/gmtime.o time/gmtime_r.o time/mktime.o time/month_lengths.o time/lcltime.o time/lcltime_r.o time/strftime.o time/time.o time/tzcalc_limits.o time/timelocal.o time/tzlock.o time/tzset.o time/tzset_r.o time/tzvars.o stdio/asiprintf.o stdio/asniprintf.o stdio/asnprintf.o stdio/asprintf.o stdio/clearerr.o stdio/clearerr_u.o stdio/diprintf.o stdio/dprintf.o stdio/fclose.o stdio/fcloseall.o stdio/fdopen.o stdio/feof.o stdio/feof_u.o stdio/ferror.o stdio/ferror_u.o stdio/fflush.o stdio/fflush_u.o stdio/fgetc.o stdio/fgetc_u.o stdio/fgetpos.o stdio/fgets.o stdio/fgets_u.o stdio/fgetwc.o stdio/fgetwc_u.o stdio/fgetws.o stdio/fgetws_u.o stdio/fileno.o stdio/fileno_u.o stdio/findfp.o stdio/fiprintf.o stdio/fiscanf.o stdio/flags.o stdio/fmemopen.o stdio/fopen.o stdio/fopencookie.o stdio/fprintf.o stdio/fpurge.o stdio/fputc.o stdio/fputc_u.o stdio/fputs.o stdio/fputs_u.o stdio/fputwc.o stdio/fputwc_u.o stdio/fputws.o stdio/fputws_u.o stdio/fsetpos.o stdio/funopen.o stdio/fread.o stdio/fread_u.o stdio/freopen.o stdio/fscanf.o stdio/fseek.o stdio/fseeko.o stdio/fsetlocking.o stdio/ftell.o stdio/ftello.o stdio/fvwrite.o stdio/fwalk.o stdio/fwide.o stdio/fwprintf.o stdio/fwrite.o stdio/fwrite_u.o stdio/fwscanf.o stdio/getc.o stdio/getc_u.o stdio/getchar.o stdio/getchar_u.o stdio/getdelim.o stdio/getline.o stdio/gets.o stdio/getw.o stdio/getwc.o stdio/getwc_u.o stdio/getwchar.o stdio/getwchar_u.o stdio/iprintf.o stdio/iscanf.o stdio/makebuf.o stdio/mktemp.o stdio/open_memstream.o stdio/perror.o stdio/printf.o stdio/putc.o stdio/putc_u.o stdio/putchar.o stdio/putchar_u.o stdio/puts.o stdio/putw.o stdio/putwc.o stdio/putwc_u.o stdio/putwchar.o stdio/putwchar_u.o stdio/refill.o stdio/remove.o stdio/rename.o stdio/rewind.o stdio/rget.o stdio/scanf.o stdio/sccl.o stdio/setbuf.o stdio/setbuffer.o stdio/setlinebuf.o stdio/setvbuf.o stdio/siprintf.o stdio/siscanf.o stdio/sniprintf.o stdio/snprintf.o stdio/sprintf.o stdio/sscanf.o stdio/stdio.o stdio/stdio_ext.o stdio/swprintf.o stdio/swscanf.o stdio/tmpfile.o stdio/tmpnam.o stdio/ungetc.o stdio/ungetwc.o stdio/vasiprintf.o stdio/vasniprintf.o stdio/vasnprintf.o stdio/vasprintf.o stdio/vdiprintf.o stdio/vdprintf.o stdio/vfwscanf.o stdio/viprintf.o stdio/viscanf.o stdio/vprintf.o stdio/vscanf.o stdio/vsiprintf.o stdio/vsiscanf.o stdio/vsprintf.o stdio/vsniprintf.o stdio/vsnprintf.o stdio/vsscanf.o stdio/vswprintf.o stdio/vswscanf.o stdio/vwprintf.o stdio/vwscanf.o stdio/wbuf.o stdio/wprintf.o stdio/wscanf.o stdio/wsetup.o string/bcmp.o string/bcopy.o string/bzero.o string/explicit_bzero.o string/gnu_basename.o string/index.o string/memccpy.o string/memchr.o string/memcmp.o string/memcpy.o string/memmem.o string/memmove.o string/mempcpy.o string/memrchr.o string/memset.o string/rawmemchr.o string/rindex.o string/stpcpy.o string/stpncpy.o string/strcasecmp.o string/strcasestr.o string/strcat.o string/strchr.o string/strchrnul.o string/strcmp.o string/strcoll.o string/strcpy.o string/strcspn.o string/strdup.o string/strdup_r.o string/strerror.o string/strerror_r.o string/strlcat.o string/strlcpy.o string/strlen.o string/strlwr.o string/strncasecmp.o string/strncat.o string/strncmp.o string/strncpy.o string/strndup.o string/strndup_r.o string/strnlen.o string/strpbrk.o string/strrchr.o string/strsep.o string/strspn.o string/strstr.o string/strtok.o string/strtok_r.o string/strupr.o string/strxfrm.o string/swab.o string/u_strerr.o string/wcpcpy.o string/wcpncpy.o string/wcscasecmp.o string/wcscat.o string/wcschr.o string/wcscmp.o string/wcscoll.o string/wcscpy.o string/wcscspn.o string/wcsdup.o string/wcslcat.o string/wcslcpy.o string/wcslen.o string/wcsncasecmp.o string/wcsncat.o string/wcsncmp.o string/wcsncpy.o string/wcsnlen.o string/wcspbrk.o string/wcsrchr.o string/wcsspn.o string/wcsstr.o string/wcstok.o string/wcswidth.o string/wcsxfrm.o string/wcwidth.o string/wmemchr.o string/wmemcmp.o string/wmemcpy.o string/wmemmove.o string/wmemset.o stdlib/__atexit.o stdlib/__call_atexit.o stdlib/abort.o stdlib/abs.o stdlib/assert.o stdlib/atexit.o stdlib/atof.o stdlib/atoi.o stdlib/atol.o stdlib/btowc.o stdlib/calloc.o stdlib/cxa_atexit.o stdlib/cxa_finalize.o stdlib/div.o stdlib/dtoa.o stdlib/dtoastub.o stdlib/efgcvt.o stdlib/ecvtbuf.o stdlib/eprintf.o stdlib/erand48.o stdlib/exit.o stdlib/gdtoa-gethex.o stdlib/gdtoa-hexnan.o stdlib/getenv.o stdlib/getenv_r.o stdlib/itoa.o stdlib/ldiv.o stdlib/labs.o stdlib/ldtoa.o stdlib/malloc.o stdlib/mallocr.o stdlib/mblen.o stdlib/mblen_r.o stdlib/mbrlen.o stdlib/mbrtowc.o stdlib/mbsinit.o stdlib/mbsnrtowcs.o stdlib/mbsrtowcs.o stdlib/mbstowcs.o stdlib/mbstowcs_r.o stdlib/mbtowc.o stdlib/mbtowc_r.o stdlib/mlock.o stdlib/mprec.o stdlib/rand.o stdlib/rand_r.o stdlib/rand48.o stdlib/random.o stdlib/realloc.o stdlib/sb_charsets.o stdlib/seed48.o stdlib/srand48.o stdlib/strtod.o stdlib/strtodg.o stdlib/strtol.o stdlib/strtold.o stdlib/strtoll.o stdlib/strtoll_r.o stdlib/strtorx.o stdlib/strtoul.o stdlib/strtoull.o stdlib/strtoull_r.o stdlib/system.o stdlib/utoa.o stdlib/wcrtomb.o stdlib/wcsnrtombs.o stdlib/wcsrtombs.o stdlib/wcstod.o stdlib/wcstol.o stdlib/wcstold.o stdlib/wcstoll.o stdlib/wcstoll_r.o stdlib/wcstombs.o stdlib/wcstombs_r.o stdlib/wcstoul.o stdlib/wcstoull.o stdlib/wcstoull_r.o stdlib/wctob.o stdlib/wctomb.o stdlib/wctomb_r.o math/e_acos.o math/e_acosh.o math/e_asin.o math/e_atan2.o math/e_atanh.o math/e_cosh.o math/e_exp.o math/e_fmod.o math/e_hypot.o math/e_j0.o math/e_j1.o math/e_jn.o math/e_log.o math/e_log10.o math/e_pow.o math/e_rem_pio2.o math/e_remainder.o math/e_scalb.o math/e_sinh.o math/e_sqrt.o math/ef_acos.o math/ef_acosh.o math/ef_asin.o math/ef_atan2.o math/ef_atanh.o math/ef_cosh.o math/ef_exp.o math/ef_fmod.o math/ef_hypot.o math/ef_j0.o math/ef_j1.o math/ef_jn.o math/ef_log.o math/ef_log10.o math/ef_pow.o math/ef_rem_pio2.o math/ef_remainder.o math/ef_scalb.o math/ef_sinh.o math/ef_sqrt.o math/er_gamma.o math/er_lgamma.o math/erf_gamma.o math/erf_lgamma.o math/f_exp.o math/f_expf.o math/f_llrint.o math/f_llrintf.o math/f_llrintl.o math/f_lrint.o math/f_lrintf.o math/f_lrintl.o math/f_pow.o math/f_powf.o math/f_rint.o math/f_rintf.o math/f_rintl.o math/feclearexcept.o math/fetestexcept.o math/k_cos.o math/k_rem_pio2.o math/k_sin.o math/k_standard.o math/k_tan.o math/kf_cos.o math/kf_rem_pio2.o math/kf_sin.o math/kf_tan.o math/s_asinh.o math/s_atan.o math/s_cbrt.o math/s_ceil.o math/s_copysign.o math/s_cos.o math/s_erf.o math/s_exp10.o math/s_expm1.o math/s_fabs.o math/s_fdim.o math/s_finite.o math/s_floor.o math/s_fma.o math/s_fmax.o math/s_fmin.o math/s_fpclassify.o math/s_frexp.o math/s_ilogb.o math/s_infconst.o math/s_infinity.o math/s_isinf.o math/s_isinfd.o math/s_isnan.o math/s_isnand.o math/s_ldexp.o math/s_lib_ver.o math/s_llrint.o math/s_llround.o math/s_log1p.o math/s_log2.o math/s_logb.o math/s_lrint.o math/s_lround.o math/s_matherr.o math/s_modf.o math/s_nan.o math/s_nearbyint.o math/s_nextafter.o math/s_pow10.o math/s_remquo.o math/s_rint.o math/s_round.o math/s_scalbln.o math/s_scalbn.o math/s_signbit.o math/s_signif.o math/s_sin.o math/s_tan.o math/s_tanh.o math/s_trunc.o math/scalblnl.o math/scalbnl.o math/sf_asinh.o math/sf_atan.o math/sf_cbrt.o math/sf_ceil.o math/sf_copysign.o math/sf_cos.o math/sf_erf.o math/sf_exp10.o math/sf_expm1.o math/sf_fabs.o math/sf_fdim.o math/sf_finite.o math/sf_floor.o math/sf_fma.o math/sf_fmax.o math/sf_fmin.o math/sf_fpclassify.o math/sf_frexp.o math/sf_ilogb.o math/sf_infinity.o math/sf_isinf.o math/sf_isinff.o math/sf_isnan.o math/sf_isnanf.o math/sf_ldexp.o math/sf_llrint.o math/sf_llround.o math/sf_log1p.o math/sf_log2.o math/sf_logb.o math/sf_lrint.o math/sf_lround.o math/sf_modf.o math/sf_nan.o math/sf_nearbyint.o math/sf_nextafter.o math/sf_pow10.o math/sf_remquo.o math/sf_rint.o math/sf_round.o math/sf_scalbln.o math/sf_scalbn.o math/sf_signif.o math/sf_sin.o math/sf_tan.o math/sf_tanh.o math/sf_trunc.o math/w_acos.o math/w_acosh.o math/w_asin.o math/w_atan2.o math/w_atanh.o math/w_cosh.o math/w_drem.o math/w_exp.o math/w_exp2.o math/w_fmod.o math/w_gamma.o math/w_hypot.o math/w_j0.o math/w_j1.o math/w_jn.o math/w_lgamma.o math/w_log.o math/w_log10.o math/w_pow.o math/w_remainder.o math/w_scalb.o math/w_sincos.o math/w_sinh.o math/w_sqrt.o math/w_tgamma.o math/wf_acos.o math/wf_acosh.o math/wf_asin.o math/wf_atan2.o math/wf_atanh.o math/wf_cosh.o math/wf_drem.o math/wf_exp.o math/wf_exp2.o math/wf_fmod.o math/wf_gamma.o math/wf_hypot.o math/wf_j0.o math/wf_j1.o math/wf_jn.o math/wf_lgamma.o math/wf_log.o math/wf_log10.o math/wf_pow.o math/wf_remainder.o math/wf_scalb.o math/wf_sincos.o math/wf_sinh.o math/wf_sqrt.o math/wf_tgamma.o math/wr_gamma.o math/wr_lgamma.o math/wrf_gamma.o math/wrf_lgamma.o math/f_atan2.o math/f_atan2f.o math/f_frexp.o math/f_frexpf.o math/f_ldexp.o math/f_ldexpf.o math/f_log.o math/f_log10.o math/f_log10f.o math/f_logf.o math/f_tan.o math/f_tanf.o crt/crtdll.o pe/loader.o reent/renamer.o time/wcsftime.o stdio/vfprintf.o stdio/vfiprintf.o stdio/svfprintf.o stdio/svfiprintf.o stdio/vfwprintf.o stdio/vfiwprintf.o stdio/svfwprintf.o stdio/svfiwprintf.o stdio/vfscanf.o stdio/vfiscanf.o stdio/svscanf.o stdio/svfiscanf.o stdio/vfiwscanf.o stdio/svfwscanf.o stdio/svfiwscanf.o -lgcc --version-script libc.ver 
     [                   ETA~=2h  Remaining=13156 Active=0                   ]   0%
     *** tup: 1 job failed.
    
  • lev wrote:Добавил ключик для установки расширения скомпилированного файла, чтобы чуток меньше с батниками и т.п. возиться
    I'm trying to use your c--.exe under Linux with Wine. Created this c-- script:

    Code: Select all

    #!/bin/sh
    WINE=${WINE:-wine}
    $WINE /home/owner/cmm/c--.exe $@
    However I'm getting the following problem while trying to build KolibriOS :

    Code: Select all

    [ tup ] [1.549s] No Tupfiles to parse.
    [ tup ] [2.953s] No files to delete.
    [ tup ] [3.351s] Executing Commands...
    * 18315) build-et/programs/cmm/taskbar2: c-- /D=AUTOBUILD /D=LANG_ENG taskbar2.c
    Warning: could not find DOS drive for current working directory '/home/owner/kolibrios/build-et/programs/cmm/taskbar2', starting in the Windows directory.
    000f:err:menubuilder:init_xdg error looking up the desktop directory
    
    SPHINX C-- Compiler   Version 0.239c b26   Mar 23 2016
    Compiling Commenced . . .
    (0)#1> unable to open file 'taskbar2.c'.
     *** tup messages ***
     *** Command ID=116098 failed with return value 2
    * 18314) build-rus/programs/cmm/taskbar2: c-- /D=AUTOBUILD /D=LANG_ENG taskbar2.c
    
  • "could not find DOS drive for current working directory" разве ни о чём не говорит? Нужно просто сконфигурировать wine, чтобы какой-то диск указывал на /home/owner/kolibrios, например.
  • Прогнал исходник с-- через cppcheck, кое какие мелочи пофиксил.

    Похоже, что незначительные в данном случае, видимо для kos32 ошибки неактуальны. Поскольку бинарник eolite после перекомпиляции не поменялся ни на байт.

    Коммитить или нет ?
  • Who is online

    Users browsing this forum: No registered users and 6 guests