[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Problem(s) with cross-compiler
From: |
Philip Munts |
Subject: |
Problem(s) with cross-compiler |
Date: |
Mon, 11 Dec 2023 20:14:34 -0800 |
User-agent: |
Mozilla Thunderbird |
I have built GCC 13.2.0 cross-toolchains, including GM2, with the recent
Crosstool-NG release 1.26.0, on Debian 12 (Bookworm):
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/aarch64-muntsos-linux-gnu-gm2
--version
aarch64-muntsos-linux-gnu-gm2 (crosstool-NG 1.26.0) 13.2.0
The following test program compiles and run successfully with the Debian 12
native compiler:
MODULE test_hello;
FROM STextIO IMPORT WriteString, WriteLn;
BEGIN
WriteLn;
WriteString("Hello, World!");
WriteLn;
WriteLn;
END test_hello.
gm2 --version
gm2 (Debian 10.2.1-6) 10.2.1 20210110
gm2 -fiso -fsoft-check-all -Wpedantic -otest_hello test_hello.mod
./test_hello
Hello, World!
But when I try to compile the same program with the cross-compiler I get the
following errors and warnings:
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/aarch64-muntsos-linux-gnu-gm2
-fiso -fsoft-check-all -Wpedantic -otest_hello test_hello.mod
cc1gm2: warning: command-line option '-isysroot
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../aarch64-muntsos-linux-gnu/libc'
is valid for C/C++/D/Fortran/ObjC/ObjC++ but not for Modula-2
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/SYSTEM.mod:31:1:
error: In implementation module 'SYSTEM': symbol (memcpy) has already been
imported
31 | CONST
| ^~~~~
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/M2RTS.mod:35:1:
error: In implementation module 'M2RTS': symbol (ADDRESS) has already been
imported
35 | FROM ASCII IMPORT nl, nul ;
| ^~~~
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/TextIO.mod:31:1:
error: In implementation module 'TextIO': symbol (IOChan) has already been
imported
31 | FROM SYSTEM IMPORT ADR ;
| ^~~~
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/IOChan.mod:32:1:
error: In implementation module 'IOChan': symbol (IOConsts) has already been
imported
32 | FROM EXCEPTIONS IMPORT ExceptionSource, RAISE, AllocateSource,
| ^~~~
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/IOLink.mod:31:1:
error: In implementation module 'IOLink': symbol (SYSTEM) has already been
imported
31 | FROM Storage IMPORT ALLOCATE, DEALLOCATE ;
| ^~~~
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/IOLink.mod:31:1:
error: symbol (IOChan) has already been imported
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/RTfio.mod:30:1:
error: In implementation module 'RTfio': symbol (DeviceTablePtr) has already
been imported
30 | FROM RTio IMPORT GetFile ;
| ^~~~
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/RTgen.mod:35:1:
error: In implementation module 'RTgen': symbol (DeviceTablePtr) has already
been imported
35 | IMPORT ChanConsts ;
| ^~~~~~
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/RTgen.mod:46:1:
error: symbol (doWBytes) has already been imported
46 | FROM ChanConsts IMPORT FlagSet, readFlag, writeFlag, rawFlag,
| ^~~~
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/RTgen.mod:46:1:
error: symbol (GenDevIF) has already been imported
/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2pim/Indexing.mod:33:1:
error: In implementation module 'Indexing': symbol (ADDRESS) has already been
imported
33 | CONST
| ^~~~~
The warning appears to be annoying but harmless. The errors though are
blocking.
I have tried various combinations of -I, -flibs=, -fno-libs=-, and
-fm2-whole-program to no avail.
I thought maybe the cross-compiler was either compiling the native SYSTEM.def
and SYSTEM.mod instead of the cross, or both, or mixing up iso and pim, or
something like that. But strace only shows opening the proper cross SYSTEM.def
and SYSTEM.mod:
[pid 551] openat(AT_FDCWD, "./SYSTEM.def", O_RDONLY) = -1 ENOENT (No such
file or directory)
[pid 551] openat(AT_FDCWD, "./SYSTEM.def", O_RDONLY) = -1 ENOENT (No such
file or directory)
[pid 551] openat(AT_FDCWD,
"/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/SYSTEM.def",
O_RDONLY) = 5
[pid 551] openat(AT_FDCWD,
"/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/SYSTEM.def",
O_RDONLY) = 5
[pid 551] openat(AT_FDCWD, "./SYSTEM.mod", O_RDONLY) = -1 ENOENT (No such
file or directory)
[pid 551] openat(AT_FDCWD, "./SYSTEM.mod", O_RDONLY) = -1 ENOENT (No such
file or directory)
[pid 551] openat(AT_FDCWD,
"/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/SYSTEM.mod",
O_RDONLY) = 6
[pid 551] openat(AT_FDCWD,
"/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/SYSTEM.mod",
O_RDONLY) = 6
[pid 551] openat(AT_FDCWD,
"/usr/local/gcc-aarch64-muntsos-linux-gnu-ctng/bin/../lib/gcc/aarch64-muntsos-linux-gnu/13.2.0/m2/m2iso/SYSTEM.mod",
O_RDONLY) = 72
Then I tried comparing the native SYSTEM.def with the cross SYSTEM.def, but
they are essentially the same except for comments.
So now I'm stumped. My ARM64 cross toolchain is available online at:
http://repo.munts.com/debian12/amd64/gcc-aarch64-muntsos-linux-gnu-ctng-13.2.0-2023.340-debian12-amd64.deb
- Problem(s) with cross-compiler,
Philip Munts <=