I thought it would be useful to be able to reach from tcc 0.9.27 to the current mob HEAD cleanly, and I've encountered several issues:
1. On Ubuntu 64 22.04 LTS (gcc 11.3), tcc 0.9.27 does not build. git clean -xfd git checkout release_0_9_27 ./configure --prefix=$PWD/../tcc0927 make # ends with this error: ../tcc -c bcheck.c -o bcheck.o -B.. bcheck.c:738: error: '__malloc_hook' undeclared make[1]: *** [Makefile:64: bcheck.o] Error 1 I could not find a configure option to disable bcheck, so I edited lib/Makefile and hardcoded "BCHECK_O =" (not only with uclibc/musl). And now "make" works, but "make test" fails: ------------ asm-c-connect-test ------------ ./asm-c-connect > asm-c-connect.out1 && cat asm-c-connect.out1 Segmentation fault make[1]: *** [Makefile:245: asm-c-connect-test] Error 139 Disabling asm-c-connect-test (deleting line 19 at tests/Makefile), and now "make test" succeeds. I did not try to fix the test. Now run "make install", and keep this install (at $PWD/../tcc0927) FWIW, gentoo bumped into the same issue, and their solution was to ditch 0.9.27 in favor of mob from 20211022: https://bugs.gentoo.org/806511 https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=717eba5b5cfb78b1438c348882b34c88b3dc173a 2. Building mob using 0.9.27 works, but tests fail test3: As far as I can tell, because in test3, tcc 0.9.27 fails to compile the reference in tests/tcctest.c in various cases where the test file expects gcc or other working compiler to succeed, but 0.9.27 fails. I did my best with a crude axe to at least allow it to compile, and then test3 failed some diffs with about 7 sub-tests, so I disabled it completely (delete line 16 of tests/Makefile). test1b: failed too, so I disabled it too, without looking into it. dlltest: fails with: ------------ dlltest with PIC ------------ ./tcc2: symbol lookup error: ./libtcc2.so: undefined symbol: __va_start make[2]: *** [Makefile:164: dlltest] Error 127 Disabled it too (deleted at tests/Makefile) With test3, test1b, dlltest disabled at tests/Makefile, this works with mob: git clean -xfd ./configure --cc=$PWD/../tcc0927/bin/tcc --prefix=$PWD/../mob-pre make make test make install 3. Finally, with this new mob-pre, we can build+test mob proper: git reset --hard # restore stock mob (with test3, test1b, dlltest) git clean -xfd ./configure --cc=$PWD/../mob-pre/bin/tcc --prefix=$PWD/../mob make make test -------------------- Conclusions: - This is not ideal. It's hard to build 0.9.27 these days, and even once built, it fails some tests, and ignoring that, it can build current mob but some tests fail. - Luckily, using this last "broken tests mob" build it is possible to build mob-proper with all tests passing. What might be be ideal, IMVHO, is: - A new release 0.9.27.1 with minimal diff from 0.9.27, which: - Could be built with modern compilers and pass (enabled) tests. - Preferably can be built and pass tests with tcc 0.9.26 too. - Or at least have a documented path to build from 0.9.26. - E.g. maybe just disable bcheck and asm-c-connect-test. - That mob is modified to allow to be built and pass (Enabled) tests using a newly built tcc 0.9.27[.1]. This could be tricky, as I think it would have to be detected in configure tests or options, because tcc version has not changed for years, so hard to test... - maybe add a configure option --with-tcc-0-9-27 or some such. - Finally, a new release (0.9.28 or 1.0, which can be built and pass tests using 0.9.27[.1]), because it's been years, and to serve as a new baseline to build future tcc versions. Cheers, - avih _______________________________________________ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel