Le 13/06/2011 20:48, Waldek Hebisch a écrit :
I did some work on updating gpc to newer gcc versions. You can find it at GitHub:
https://github.com/hebisch/gpc
This is experimental work. 4.2 and 4.3 ports (on "master" Git branch)
Native building of the gpc compiler with 4.23 backend for DJGPP 2.04 / winXP works well, when following recommendations of Andris Pavenis (recompiling stubify for 1024k default stack size, and 32k transfer buffer for sh and make) and those of Waldek for gpc 4.x.x. (plus a djgpp-only patch for libgpc mirrored from the equivalent in libobjc) Running the tests gives)
---------------------------------------------------- Test Run By maurice on 2011-06-28 12:12:42 Native configuration is djgpp (BOUVARDIE)
=== gpc tests ===
Running target any Running testsuite ...
UNSUPPORTED: agettext2test.pas FAIL: fjf1042b.pas FAIL: fjf1042c.pas FAIL: fjf1102.pas UNSUPPORTED: fjf165a.pas FAIL: fjf403b.pas FAIL: fjf563e.pas UNSUPPORTED: longr2.pas FAIL: pcerroro.pas FAIL: reset.pas FAIL: y2k.pas
=== gpc Summary ===
# of tests 5111 # of expected passes 5100 # of unexpected failures 8 # of unsupported tests 3
c:/DJGPP/gnu/build.gcc/gcc/xgpc version 20070904, based on gcc-4.2.3 ---------------------------------------------------------------------
i.e. two failures _less_ than with the previous 20070904 with 4.1.2 backend.
When trying with gcc 4.3.2 it seems that we already stumble into the problems of djgpp limitations described recently by Andris
http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp-workers/2011/0...
Native building of C and C++ compilers with gcc432s2 and FSF sources work as expected. But when trying to compile gpc, even starting whith the precompiled sources gcc432s, depending on the settings of transfer buffer compiling the gpc rts (string1.pas) fails with either ----------------------------------------------------------- `echo /dev/c/djgpp/gnu/build.gcc/./gcc/xgcc -B/dev/c/djgpp/gnu/build.gcc/./gcc/ -B/dev/env/DJDIR/djgpp/bin/ -B/dev/env/DJDIR/djgpp/lib/ -isystem /dev/env/DJDIR/djgpp/include -isystem /dev/env/DJDIR/djgpp/sys-include | sed 's,^([^ ]*[/][^/]*)gcc,\1gpc,;s/^gcc$/gpc/' ` -c -I. -W -Wall -Wmissing-prototypes -Wmissing-declarations -O2 -g -g -O2 --unit-path=/dev/c/djgpp/gnu/gcc-4.32/gcc/p/rts --automake -DRTS_RELEASE_STRING="'`cat /dev/c/djgpp/gnu/gcc-4.32/gcc/p/rts/rts-version`'" -DGCC_VERSION="'unknown'" "/dev/c/djgpp/gnu/gcc-4.32/gcc/p/rts/string1.pas" Load error: no DOS memory gpc1.exe: c:/djgpp/gnu/build.gcc/gcc/xgpc.exe exited with status 105 make.exe[4]: *** [string1.o] Error 1 make.exe[4]: Leaving directory `c:/djgpp/gnu/build.gcc/djgpp/libgpc/p/rts' make.exe[3]: *** [pascal.rts] Error 2 make.exe[3]: Leaving directory `c:/djgpp/gnu/build.gcc/djgpp/libgpc' make.exe[2]: *** [do_multidirs] Error 2 make.exe[2]: Leaving directory `c:/djgpp/gnu/build.gcc/djgpp/libgpc' make.exe[1]: *** [all-target-libgpc] Error 2 make.exe[1]: Leaving directory `c:/djgpp/gnu/build.gcc' make.exe: *** [all] Error 2 ------------------------------------------------------------------ or ------------------------------------------------------------ `echo /dev/c/djgpp/gnu/build.gcc/./gcc/xgcc -B/dev/c/djgpp/gnu/build.gcc/./gcc/ -B/dev/env/DJDIR/djgpp/bin/ -B/dev/env/DJDIR/djgpp/lib/ -isystem /dev/env/DJDIR/djgpp/include -isystem /dev/env/DJDIR/djgpp/sys-include | sed 's,^([^ ]*[/][^/]*)gcc,\1gpc,;s/^gcc$/gpc/' ` -c -I. -W -Wall -Wmissing-prototypes -Wmissing-declarations -O2 -g -g -O2 --unit-path=/dev/c/djgpp/gnu/gcc-4.32/gcc/p/rts --automake -DRTS_RELEASE_STRING="'`cat /dev/c/djgpp/gnu/gcc-4.32/gcc/p/rts/rts-version`'" -DGCC_VERSION="'unknown'" "/dev/c/djgpp/gnu/gcc-4.32/gcc/p/rts/string1.pas" <snip> /dev/c/djgpp/gnu/gcc-4.32/gcc/p/rts/string1.pas: In function `CStringLastPos': /dev/c/djgpp/gnu/gcc-4.32/gcc/p/rts/string1.pas:604: internal compiler error: in ggc_set_mark, at ggc-page.c:1285 Please submit a full bug report, with preprocessed source if appropriate. See unsupported for instructions. make.exe[4]: *** [string1.o] Error 1 make.exe[4]: Leaving directory `c:/djgpp/gnu/build.gcc/djgpp/libgpc/p/rts' make.exe[3]: *** [pascal.rts] Error 2 make.exe[3]: Leaving directory `c:/djgpp/gnu/build.gcc/djgpp/libgpc' make.exe[2]: *** [do_multidirs] Error 2 make.exe[2]: Leaving directory `c:/djgpp/gnu/build.gcc/djgpp/libgpc' make.exe[1]: *** [all-target-libgpc] Error 2 make.exe[1]: Leaving directory `c:/djgpp/gnu/build.gcc' make.exe: *** [all] Error 2 --------------------------------------------------------------------- I doubt the last message (a failed assertion) be really significant since compiler works with gcc423 Unless somebody have an idea, the only way out seems to follow the Andris route, i.e. cross compiling gpc. But I have no experience on that, so that it will take some time.
Maurice