Page 7 of 9

Re: C-- Sphinx Compiler

Posted: Mon Dec 05, 2016 11:03 pm
by Pathoswithin
revision #6787

Re: C-- Sphinx Compiler

Posted: Tue Dec 06, 2016 1:23 am
by Leency
Проверил, строка "/sys/lib/../calc" запускает calc.

Вот это viewtopic.php?f=31&t=659&p=67590#p67589 правилось или нет?

Re: C-- Sphinx Compiler

Posted: Tue Dec 06, 2016 2:48 am
by Pathoswithin
Должно, теперь это делается до файловых систем.

Re: C-- Sphinx Compiler

Posted: Wed Oct 11, 2017 8:23 pm
by 0CodErr
При сборке некоторых программ(например, Eolite) падает с General protection fault.
Может быть, попробовать стек побольше сделать?
Или может какая-то функция в libc недоработана?

Забавный факт, для сборки под винду достаточно bat-ника, содержащего только одну строку:

Code: Select all

gcc -fno-exceptions -D_WIN32_ -D__CONSOLE__ -o cmm.exe *.cpp
Сравните с содержимым Makefile
Spoiler:

Code: Select all

Compiler                = gcc

#Compiler_Options       = -c -fno-exceptions -D_UNIX_
Compiler_Options       = -c -fno-exceptions -D_WIN32_ -D__CONSOLE__

#-D: _WIN32_ or _UNIX_
#-D: for _WIN32_ add -D__CONSOLE__

Exe_file                = cmm

All_Libs	 	= main.o toka.o tokb.o tokc.o toke.o tokr.o errors.o debug.o outobj.o outpe.o disasm.o switch.o outle.o pointer.o new_type.o class.o res.o optreg.o libobj.o port.o

####################
## Makefile rules ##
####################

all        : $(Exe_file)

$(Exe_file) : $(All_Libs)
	$(Compiler)  -o $(Exe_file) $(All_Libs)
clean:
	rm *.o


# next are the exceptions that don't have to be compiled with the /zu option
# since they will never be called from a interrupt. hey.. I _tried_ to find
# a clean solution..

main.o :  main.cpp
	$(Compiler) $(Compiler_Options) $<

toka.o :  toka.cpp
	$(Compiler) $(Compiler_Options) $<

tokb.o :  tokb.cpp
	$(Compiler) $(Compiler_Options) $<

tokc.o :  tokc.cpp
	$(Compiler) $(Compiler_Options) $<

toke.o :  toke.cpp
	$(Compiler) $(Compiler_Options) $<

tokr.o :  tokr.cpp
	$(Compiler) $(Compiler_Options) $<

errors.o :errors.cpp
	$(Compiler) $(Compiler_Options) $<

debug.o : debug.cpp
	$(Compiler) $(Compiler_Options) $<

outobj.o : outobj.cpp
	$(Compiler) $(Compiler_Options) $<

outpe.o : outpe.cpp
	$(Compiler) $(Compiler_Options) $<

disasm.o : disasm.cpp
	$(Compiler) $(Compiler_Options) $<

switch.o : switch.cpp
	$(Compiler) $(Compiler_Options) $<

outle.o : outle.cpp
	$(Compiler) $(Compiler_Options) $<

pointer.o : pointer.cpp
	$(Compiler) $(Compiler_Options) $<

new_type.o : new_type.cpp
	$(Compiler) $(Compiler_Options) $<

class.o : class.cpp
	$(Compiler) $(Compiler_Options) $<

res.o : res.cpp
	$(Compiler) $(Compiler_Options) $<

optreg.o : optreg.cpp
	$(Compiler) $(Compiler_Options) $<

libobj.o : libobj.cpp
	$(Compiler) $(Compiler_Options) $<

port.o: port.cpp
	$(Compiler) $(Compiler_Options) $<

.cpp.o:
	$(Compiler) $(Compiler_Options) $<

.asm.o:
	fasm $<

Re: C-- Sphinx Compiler

Posted: Wed Oct 11, 2017 9:32 pm
by Leency
0CodErr
Невероятно, работает (залил на SVN).
Может быть еще есть скрипт для компиляции Колибри бинарника из-под Windows?

Re: C-- Sphinx Compiler

Posted: Sun Nov 04, 2018 9:04 pm
by paulcodeman
Пытался собрать для Ubuntu 16.04. В итоге кое-как собрал, компилятор CMM работает не стабильно, легкие примеры компилирует, но бинарник не запускается к колибриос. Может кто нибудь сможет довести его до конца.
cmm.tar.gz (925.99 KiB)
Downloaded 318 times
Spoiler:
Снимок экрана от 2018-11-04 20-22-37.png
Снимок экрана от 2018-11-04 20-22-37.png (315.71 KiB)
Viewed 12020 times

Re: C-- Sphinx Compiler

Posted: Mon Nov 05, 2018 12:00 pm
by tsdima
Тоже пытался собрать под Убунтой, и тоже неудачно. 64-битная версия компилирует нечто левое. 32-битная версия вроде работает, простые примеры тоже вроде запускаются в Колибри (в моём случае в эмуляторе kex). Но на более сложных проектах (к примеру Eolite) cmm вылетает в sigsegv. Те же самые исходники компилируются виндовой версией под wine без проблем. Печалька.

Re: C-- Sphinx Compiler

Posted: Tue Nov 06, 2018 12:41 am
by paulcodeman
Довел компилятор для Ubuntu 16.04 x64 до корректной компиляции бинарников для KolibriOS. Но остался один баг, при компиляции тяжелых программ (например Eolite) - крэшиться.
Перед компиляцией исходников прикрепленных в этом сообщении не забудьте установить.

Code: Select all

sudo apt-get install gcc-multilib

Re: C-- Sphinx Compiler

Posted: Tue Nov 06, 2018 1:33 am
by paulcodeman
Для Ubuntu. Более новее версия компилятора взятого с SVN, еще крэшится

Re: C-- Sphinx Compiler

Posted: Wed Nov 07, 2018 2:07 am
by Leency
pavelyakov
Можешь собрать нормальный компилятор под Колибри?
Тот что есть, ничерта не компилит из-за проблем с путями.

Re: C-- Sphinx Compiler

Posted: Thu Nov 08, 2018 3:28 am
by lev
0CodErr wrote:Забавный факт, для сборки под винду достаточно bat-ника, содержащего только одну строку:

Code: Select all

gcc -fno-exceptions -D_WIN32_ -D__CONSOLE__ -o cmm.exe *.cpp
а не надо добавить -D_WС_ ?
Проверьте на компиляции конструкций типа (E)AX, (E)BX и т.п.

Re: C-- Sphinx Compiler

Posted: Thu Nov 08, 2018 8:57 am
by paulcodeman
Дебагер показывает, где в стеке вызовов произошла ошибка сигментации, но я так её и не нашел.
(gdb) backtrace
#0 0xf7e4ad7b in malloc () from /lib/i386-linux-gnu/libc.so.6
#1 0x5655af74 in MALLOC(int) ()
#2 0x565b6020 in BackString(char*) ()
#3 0x5655f7f6 in CheckMassiv(char*&, int, int, int*, int*, long*) ()
#4 0x5655ef0b in CheckAllMassiv(char*&, int, _SINFO_*, _ITOK_*, int, int) ()
#5 0x5657a98e in getinto_e_ax(int, int, _ITOK_*, char*&, _SINFO_*, int, int)
()
#6 0x5657bd14 in do_e_axmath(int, int, char**) ()
#7 0x565a0173 in constructcompare(int, unsigned int, LVIC*) ()
#8 0x565a0e5f in compare(int, unsigned int*, REGISTERSTAT**, REGISTERSTAT**, LVIC*) ()
#9 0x565a5639 in dofor(unsigned int) ()
#10 0x5659951d in docommand() ()
#11 0x565990d7 in doblock2() ()
#12 0x5659909e in doblock() ()
#13 0x565a58e0 in dofor(unsigned int) ()
#14 0x5659951d in docommand() ()
#15 0x565990d7 in doblock2() ()
#16 0x565a9239 in setproc(int) ()
#17 0x565b2dc1 in insert_dynamic(int) ()
#18 0x56564ad3 in docalls() ()
#19 0x56558ab0 in compile() ()
#20 0x565587ec in main ()

Re: C-- Sphinx Compiler

Posted: Thu Nov 08, 2018 9:29 am
by Siemargl
посмотри параметр - размер, с которым вызван malloc

и количество выделенной памяти на тот момент процессу

Re: C-- Sphinx Compiler

Posted: Fri Nov 09, 2018 10:43 pm
by tsdima
revision #7545

Кажется я нашёл, почему под линуксом cmm вылетал. Автор явно рассчитывал на то, что память, выделяемая malloc, содержит нули. Под виндой это почти так (первые байты всё равно не нулевые), а в убунте нет. К тому-же, под виндой, free обычно весьма толерантно относится к левому указателю, а линукс безжалостно генерирует сигнал, после чего программа завершается.

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

Кроме того я внёс исправление обратных слешей на прямые, это должно и для Колибри подойти.

Re: C-- Sphinx Compiler

Posted: Fri Nov 09, 2018 11:02 pm
by Siemargl
tsdima wrote:revision #7545

Кажется я нашёл, почему под линуксом cmm вылетал. Автор явно рассчитывал на то, что память, выделяемая malloc, содержит нули. Под виндой это почти так (первые байты всё равно не нулевые), а в убунте нет. К тому-же, под виндой, free обычно весьма толерантно относится к левому указателю, а линукс безжалостно генерирует сигнал, после чего программа завершается.
...
По обоим вопросам нет. Покажи где такое используется

Какая то заморочка в websvn diff, не могу посмотреть все исправления (