failure to compile GNU smalltalk 3.2.91 on Linux/Debian
Basile Starynkevitch <[email protected]> Wed, 08 Oct 2025 16:50:50 +0200
| Newsgroups | gmane.comp.lang.smalltalk.gnu.general |
|---|---|
| Message-ID | <[email protected]> |
Hello all,
I am French and worked at CEA on GCC, see https://arxiv.org/abs/1109.0779 .=
..
On a Linux desktop (AMD Ryzen Threadripper 2970WX Debian/trixie with 64Gbyt=
es RAM and
6.16.10+deb14-rt-amd64) I downloaded smalltalk-3.2.91 and configured it wi=
th
./configure --enable-jit --disable-silent-rules --enable-gtk CC=3Dgcc CFL=
AGS=3D'-O2 -g'
the gcc is a snapshot compiled by me:
Using built-in specs.
COLLECT_GCC=3Dgcc
COLLECT_LTO_WRAPPER=3D/usr/local/libexec/gcc/x86_64-linux-gnu/16/lto-wrappe=
r
Target: x86_64-linux-gnu
Configured with: /usr/src/Lang/gcc-16snap/configure -v --prefix=3D/usr/loca=
l --with-gcc-major-version-
only --program-suffix=3D-16 --enable-shared --enable-plugin --enable-defaul=
t-pie --with-system-zlib --
disable-multilib --with-tune=3Dnative --enable-checking=3Drelease --enable-=
host-shared --build=3Dx86_64-
linux-gnu --host=3Dx86_64-linux-gnu --target=3Dx86_64-linux-gnu CFLAGS=3D'-=
g -O2' CXXFLAGS=3D'-g -O2' --
enable-werror build_alias=3Dx86_64-linux-gnu host_alias=3Dx86_64-linux-gnu =
target_alias=3Dx86_64-linux-gnu
--enable-languages=3Dc,c++,jit,lto
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 16.0.0 20250907 (experimental) (GCC)=20
(FWIW, GNU lightning is also installed under /usr/local ...)
GNU smalltalk failed to compile with:
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -O2 -g -Wall -Wdeclaration-=
after-statement -Wno-
format -Wpointer-arith -Wno-pointer-sign -Wno-switch -Wwrite-strings -Wno-s=
trict-aliasing -fno-gcse
-fstrict-aliasing -MT regex.lo -MD -MP -MF .deps/regex.Tpo -c regex.c -fPI=
C -DPIC -o .libs/regex.o
regex.c: In function 'pre_set_casetable':
regex.c:197:1: warning: old-style function definition [-Wold-style-definiti=
on]
197 | pre_set_casetable (table)
| ^~~~~~~~~~~~~~~~~
regex.c: In function 'calculate_must_string':
regex.c:768:1: warning: old-style function definition [-Wold-style-definiti=
on]
768 | calculate_must_string (start, end)
| ^~~~~~~~~~~~~~~~~~~~~
regex.c: In function 'read_backslash':
regex.c:891:1: warning: old-style function definition [-Wold-style-definiti=
on]
891 | read_backslash (c)
| ^~~~~~~~~~~~~~
regex.c: In function 'read_special':
regex.c:924:1: warning: old-style function definition [-Wold-style-definiti=
on]
924 | read_special (p, pend, pp)
| ^~~~~~~~~~~~
regex.c: In function 'scan_oct':
regex.c:974:1: warning: old-style function definition [-Wold-style-definiti=
on]
974 | scan_oct (start, len, retlen)
| ^~~~~~~~
regex.c: In function 'scan_hex':
regex.c:992:1: warning: old-style function definition [-Wold-style-definiti=
on]
992 | scan_hex (start, len, retlen)
| ^~~~~~~~
regex.c: In function 'pre_compile_pattern':
regex.c:1028:1: warning: old-style function definition [-Wold-style-definit=
ion]
1028 | pre_compile_pattern (pattern, size, bufp)
| ^~~~~~~~~~~~~~~~~~~
regex.c:1243:15: error: too many arguments to function 'store_jump'; expect=
ed 0, have 3
1243 | store_jump (b, greedy ? maybe_finalize_jump : finaliz=
e_push,
| ^~~~~~~~~~ ~
regex.c:153:13: note: declared here
153 | static void store_jump _((char *, int, char *));
| ^~~~~~~~~~
regex.c:1251:11: error: too many arguments to function 'insert_jump'; expec=
ted 0, have 4
1251 | insert_jump (on_failure_jump, laststart, b + 3, b);
| ^~~~~~~~~~~ ~~~~~~~~~~~~~~~
regex.c:154:13: note: declared here
154 | static void insert_jump _((int, char *, char *, char *));
| ^~~~~~~~~~~
regex.c:1259:19: error: too many arguments to function 'insert_jump'; expec=
ted 0, have 4
1259 | insert_jump (try_next, laststart, b + 3, b);
| ^~~~~~~~~~~ ~~~~~~~~
regex.c:154:13: note: declared here
154 | static void insert_jump _((int, char *, char *, char *));
| ^~~~~~~~~~~
regex.c:1271:15: error: too many arguments to function 'insert_jump'; expec=
ted 0, have 4
1271 | insert_jump (dummy_failure_jump, laststart, laststart=
+ 6, b);
| ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
regex.c:154:13: note: declared here
154 | static void insert_jump _((int, char *, char *, char *));
| ^~~~~~~~~~~
regex.c:1392:27: error: too many arguments to function 'scan_hex'; expected=
0, have 3
1392 | c =3D scan_hex (p, 2, &numlen);
| ^~~~~~~~ ~
regex.c:992:1: note: declared here
992 | scan_hex (start, len, retlen)
| ^~~~~~~~
regex.c:1408:27: error: too many arguments to function 'scan_oct'; expected=
0, have 3
1408 | c =3D scan_oct (p, 3, &numlen);
| ^~~~~~~~ ~
regex.c:974:1: note: declared here
974 | scan_oct (start, len, retlen)
| ^~~~~~~~
regex.c:1742:15: error: too many arguments to function 'store_jump'; expect=
ed 0, have 3
1742 | store_jump (fixup_alt_jump, jump, b);
| ^~~~~~~~~~ ~~~~~~~~~~~~~~
regex.c:153:13: note: declared here
153 | static void store_jump _((char *, int, char *));
| ^~~~~~~~~~
regex.c:1805:11: error: too many arguments to function 'insert_jump'; expec=
ted 0, have 4
1805 | insert_jump (on_failure_jump, begalt, b + 6, b);
| ^~~~~~~~~~~ ~~~~~~~~~~~~~~~
regex.c:154:13: note: declared here
154 | static void insert_jump _((int, char *, char *, char *));
| ^~~~~~~~~~~
regex.c:1825:13: error: too many arguments to function 'store_jump'; expect=
ed 0, have 3
1825 | store_jump (fixup_alt_jump, jump_past_alt, b);
| ^~~~~~~~~~ ~~~~~~~~~~~~~~
regex.c:153:13: note: declared here
153 | static void store_jump _((char *, int, char *));
| ^~~~~~~~~~
regex.c:1923:15: error: too many arguments to function 'insert_jump'; expec=
ted 0, have 4
1923 | insert_jump (jump, laststart, b + 3, b);
| ^~~~~~~~~~~ ~~~~
regex.c:154:13: note: declared here
154 | static void insert_jump _((int, char *, char *, char *));
| ^~~~~~~~~~~
regex.c:1994:13: error: too many arguments to function 'insert_jump_n'; exp=
ected 0, have 5
1994 | insert_jump_n (succeed_n, laststart, b + (nbytes / 2),
| ^~~~~~~~~~~~~ ~~~~~~~~~
regex.c:156:13: note: declared here
156 | static void insert_jump_n _((int, char *, char *, char *, unsigned)=
);
| ^~~~~~~~~~~~~
regex.c:2002:13: error: too many arguments to function 'insert_op_2'; expec=
ted 0, have 5
2002 | insert_op_2 (set_number_at, laststart, b, 5, lower_boun=
d);
| ^~~~~~~~~~~ ~~~~~~~~~~~~~
regex.c:157:13: note: declared here
157 | static void insert_op_2 _((int, char *, char *, int, int));
What did I do wrongly?
By the way, can I reuse some of the C code of GNU smalltalk in a GPL licens=
ed=C2=A0
inference engine project (RefPerSys on github, C++ mostly)
--=20
Basile STARYNKEVITCH <[email protected]>
8 rue de la Fa=C3=AFencerie http://starynkevitch.net/=
Basile/ =20
92340 Bourg-la-Reine https://github.com/bstarynk
France https://github.com/RefPerSys/RefPerSy=
s