msys2 / MSYS2-packages

Package scripts for MSYS2.
https://packages.msys2.org
BSD 3-Clause "New" or "Revised" License
1.27k stars 483 forks source link

Add aarch64-w64-mingw32 target to mingw-w64-cross-gcc package #4001

Open Blackhex opened 10 months ago

Blackhex commented 10 months ago

This issue serves for tracking progress and documenting issues needed to be overcome while adding aarch64-w64-mingw32 target to mingw-w64-cross-gcc package.

This is a subtask of https://github.com/msys2/MSYS2-packages/issues/3834, for broader discussions, please, head there.

The development is happening in this branch.

Blackhex commented 10 months ago

Issue

make\[2\]: Entering directory '/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/gcc'  
g++  -fno-PIE -c  -DIN\_GCC\_FRONTEND -DIN\_GCC\_FRONTEND -g -O2     -DIN\_GCC  -DCROSS\_DIRECTORY\_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE\_CONFIG\_H -I. -Ic-family -I../../gcc/gcc -I../../gcc/gcc/c-family -I../../gcc/gcc/../include -I./../intl -I../../gcc/gcc/../libcpp/include -I../../gcc/gcc/../libcody -I/usr/include -I/usr/include -I/usr/include  -I../../gcc/gcc/../libdecnumber -I../../gcc/gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc/gcc/../libbacktrace -I/usr/include  -o c-family/c-cppbuiltin.o -MT c-family/c-cppbuiltin.o -MMD -MP -MF c-family/.deps/c-cppbuiltin.TPo ../../gcc/gcc/c-family/c-cppbuiltin.cc  
In file included from ./tm.h:25,  
                from ../../gcc/gcc/target.h:52,  
                from ../../gcc/gcc/c-family/c-cppbuiltin.cc:23:  
../../gcc/gcc/c-family/c-cppbuiltin.cc: In function ‘void c\_cpp\_builtins(cpp\_reader\*)’:  
../../gcc/gcc/config/aarch64/mingw32.h:51:27: error: ‘ix86\_abi’ was not declared in this scope  
  51 |       if (TARGET\_64BIT && ix86\_abi == MS\_ABI)                   \\  
     |                           ^~~~~~~~  
../../gcc/gcc/config/aarch64/cygming.h:80:7: note: in expansion of macro ‘EXTRA\_OS\_CPP\_BUILTINS’  
  80 |       EXTRA\_OS\_CPP\_BUILTINS (); \\  
     |       ^~~~~~~~~~~~~~~~~~~~~  
../../gcc/gcc/c-family/c-cppbuiltin.cc:1624:3: note: in expansion of macro ‘TARGET\_OS\_CPP\_BUILTINS’  
1624 |   TARGET\_OS\_CPP\_BUILTINS ();  
     |   ^~~~~~~~~~~~~~~~~~~~~~  
make\[2\]: \*\*\* \[Makefile:1175: c-family/c-cppbuiltin.o\] Error 1  

Workaround

--- a/gcc/config/aarch64/mingw32.h
+++ b/gcc/config/aarch64/mingw32.h
@@ -44,7 +48,7 @@ along with GCC; see the file COPYING3.  If not see
       builtin_define_std ("WINNT");                \
       builtin_define_with_int_value ("_INTEGRAL_MAX_BITS", \
                     TYPE_PRECISION (intmax_type_node));\
-      if (TARGET_64BIT && ix86_abi == MS_ABI)          \
+      if (TARGET_64BIT) \
    {                           \
      builtin_define ("__MINGW64__");           \
      builtin_define_std ("WIN64");             \
@@ -57,7 +63,7 @@ along with GCC; see the file COPYING3.  If not see
   do                               \
     {                              \
       builtin_version ("MinGW");               \
-      if (TARGET_64BIT && ix86_abi == MS_ABI)          \
+      if (TARGET_64BIT) \
    builtin_version ("Win64");              \
       else if (!TARGET_64BIT)                  \
    builtin_version ("Win32");  
Blackhex commented 10 months ago

Issue

make[2]: Entering directory '/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libgcc'
# If this is the top-level multilib, build all the other
# multilibs.
/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    -g -O2 -O2 -I../../../gcc/libgcc/../winsup/w32api/include -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE  -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -Dinhibit_libc  -I. -I. -I../.././gcc -I../../../gcc/libgcc -I../../../gcc/libgcc/. -I../../../gcc/libgcc/../gcc -I../../../gcc/libgcc/../include -I../../../gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_EMUTLS  -o bid_binarydecimal.o -MT bid_binarydecimal.o -MD -MP -MF bid_binarydecimal.dep -c ../../../gcc/libgcc/config/libbid/bid_binarydecimal.c
/tmp/ccNGcjDe.s: Assembler messages:
/tmp/ccNGcjDe.s:3447: Error: relocation overflow
/tmp/ccNGcjDe.s:3484: Error: relocation overflow
/tmp/ccNGcjDe.s:4201: Error: relocation overflow
/tmp/ccNGcjDe.s:4381: Error: relocation overflow
/tmp/ccNGcjDe.s:4409: Error: relocation overflow
/tmp/ccNGcjDe.s:5135: Error: relocation overflow
/tmp/ccNGcjDe.s:5327: Error: relocation overflow
/tmp/ccNGcjDe.s:5361: Error: relocation overflow
/tmp/ccNGcjDe.s:6180: Error: relocation overflow
/tmp/ccNGcjDe.s:6575: Error: relocation overflow
/tmp/ccNGcjDe.s:6582: Error: relocation overflow
/tmp/ccNGcjDe.s:6610: Error: relocation overflow
/tmp/ccNGcjDe.s:7097: Error: relocation overflow
/tmp/ccNGcjDe.s:7258: Error: relocation overflow
/tmp/ccNGcjDe.s:7447: Error: relocation overflow
/tmp/ccNGcjDe.s:7583: Error: relocation overflow
/tmp/ccNGcjDe.s:7763: Error: relocation overflow
/tmp/ccNGcjDe.s:7767: Error: relocation overflow
/tmp/ccNGcjDe.s:7795: Error: relocation overflow
/tmp/ccNGcjDe.s:8402: Error: relocation overflow
/tmp/ccNGcjDe.s:8545: Error: relocation overflow
/tmp/ccNGcjDe.s:9017: Error: relocation overflow
/tmp/ccNGcjDe.s:9185: Error: relocation overflow
/tmp/ccNGcjDe.s:9188: Error: relocation overflow
/tmp/ccNGcjDe.s:9215: Error: relocation overflow
/tmp/ccNGcjDe.s:9842: Error: relocation overflow
/tmp/ccNGcjDe.s:9923: Error: relocation overflow
/tmp/ccNGcjDe.s:9951: Error: relocation overflow
/tmp/ccNGcjDe.s:10470: Error: relocation overflow
make[2]: *** [Makefile:646: bid_binarydecimal.o] Error 1
make[2]: Leaving directory '/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libgcc'
make[1]: *** [Makefile:14015: all-target-libgcc] Error 2

Solution

Add --enable-decimal-float=no to configure options until ZacWalk/mingw-woarm64-build#13 will be fixed.

Blackhex commented 10 months ago

Issue

make[2]: Entering directory '/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libgcc'
# If this is the top-level multilib, build all the other
# multilibs.
/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    -g -O2 -O2 -I../../../gcc/libgcc/../winsup/w32api/include -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE  -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -Dinhibit_libc  -I. -I. -I../.././gcc -I../../../gcc/libgcc -I../../../gcc/libgcc/. -I../../../gcc/libgcc/../gcc -I../../../gcc/libgcc/../include  -DHAVE_CC_TLS -DUSE_EMUTLS  -o unwind-dw2.o -MT unwind-dw2.o -MD -MP -MF unwind-dw2.dep -fexceptions -c ../../../gcc/libgcc/unwind-dw2.c
In file included from ../../../gcc/libgcc/unwind-dw2.c:410:
./md-unwind-support.h: In function ‘aarch64_cie_signed_with_b_key’:
./md-unwind-support.h:43:27: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
   43 |           char *aug_str = cie->augmentation;
      |                           ^~~
In file included from ../../../gcc/libgcc/unwind-dw2.c:1471:
../../../gcc/libgcc/unwind.inc: In function ‘_Unwind_RaiseException_Phase2’:
../../../gcc/libgcc/unwind.inc:53:62: error: ‘struct _Unwind_Exception’ has no member named ‘private_2’; did you mean ‘private_’?
   53 |       match_handler = (uw_identify_context (context) == exc->private_2
      |                                                              ^~~~~~~~~
      |                                                              private_
../../../gcc/libgcc/unwind.inc: In function ‘_Unwind_RaiseException’:
../../../gcc/libgcc/unwind.inc:132:8: error: ‘struct _Unwind_Exception’ has no member named ‘private_1’; did you mean ‘private_’?
  132 |   exc->private_1 = 0;
      |        ^~~~~~~~~
      |        private_
../../../gcc/libgcc/unwind.inc:133:8: error: ‘struct _Unwind_Exception’ has no member named ‘private_2’; did you mean ‘private_’?
  133 |   exc->private_2 = uw_identify_context (&cur_context);
      |        ^~~~~~~~~
      |        private_
../../../gcc/libgcc/unwind.inc: In function ‘_Unwind_ForcedUnwind_Phase2’:
../../../gcc/libgcc/unwind.inc:151:63: error: ‘struct _Unwind_Exception’ has no member named ‘private_1’; did you mean ‘private_’?
  151 |   _Unwind_Stop_Fn stop = (_Unwind_Stop_Fn) (_Unwind_Ptr) exc->private_1;
      |                                                               ^~~~~~~~~
      |                                                               private_
../../../gcc/libgcc/unwind.inc:152:53: error: ‘struct _Unwind_Exception’ has no member named ‘private_2’; did you mean ‘private_’?
  152 |   void *stop_argument = (void *) (_Unwind_Ptr) exc->private_2;
      |                                                     ^~~~~~~~~
      |                                                     private_
../../../gcc/libgcc/unwind.inc: In function ‘_Unwind_ForcedUnwind’:
../../../gcc/libgcc/unwind.inc:215:8: error: ‘struct _Unwind_Exception’ has no member named ‘private_1’; did you mean ‘private_’?
  215 |   exc->private_1 = (_Unwind_Ptr) stop;
      |        ^~~~~~~~~
      |        private_
../../../gcc/libgcc/unwind.inc:216:8: error: ‘struct _Unwind_Exception’ has no member named ‘private_2’; did you mean ‘private_’?
  216 |   exc->private_2 = (_Unwind_Ptr) stop_argument;
      |        ^~~~~~~~~
      |        private_
../../../gcc/libgcc/unwind.inc: In function ‘_Unwind_Resume’:
../../../gcc/libgcc/unwind.inc:241:12: error: ‘struct _Unwind_Exception’ has no member named ‘private_1’; did you mean ‘private_’?
  241 |   if (exc->private_1 == 0)
      |            ^~~~~~~~~
      |            private_
../../../gcc/libgcc/unwind.inc: In function ‘_Unwind_Resume_or_Rethrow’:
../../../gcc/libgcc/unwind.inc:264:12: error: ‘struct _Unwind_Exception’ has no member named ‘private_1’; did you mean ‘private_’?
  264 |   if (exc->private_1 == 0)
      |            ^~~~~~~~~
      |            private_
make[2]: *** [../../../gcc/libgcc/static-object.mk:17: unwind-dw2.o] Error 1
make[2]: Leaving directory '/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libgcc'

Workaround

--- a/libgcc/unwind-generic.h
+++ b/libgcc/unwind-generic.h
@@ -93,12 +93,9 @@ struct _Unwind_Exception
   _Unwind_Exception_Class exception_class;
   _Unwind_Exception_Cleanup_Fn exception_cleanup;

-#if !defined (__USING_SJLJ_EXCEPTIONS__) && defined (__SEH__)
   _Unwind_Word private_[6];
-#else
   _Unwind_Word private_1;
   _Unwind_Word private_2;
-#endif

   /* @@@ The IA-64 ABI says that this structure must be double-word aligned.
      Taking that literally does not make much sense generically.  Instead we

Solution

Actually, this was caused by using missing tmake_eh_file="aarch64/t-sjlj-eh" in the libgcc/config.host. Using tmake_eh_file="i386/t-sjlj-eh" (at least for now) fixed the build issue.

Blackhex commented 10 months ago

Issue

make[2]: Leaving directory '/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libgcc'
Checking multilib configuration for libgomp...
Configuring in aarch64-w64-mingw32/libgomp
configure: loading cache ./config.cache
checking for --enable-version-specific-runtime-libs... yes
checking for --enable-generated-files-in-srcdir... no
checking build system type... x86_64-pc-msys
checking host system type... aarch64-w64-mingw32
checking target system type... aarch64-w64-mingw32
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for aarch64-w64-mingw32-strip... /opt/aarch64-w64-mingw32/bin/strip
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for aarch64-w64-mingw32-gcc... /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    accepts -g... yes
checking for /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    option to accept ISO C89... none needed
checking whether /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include   ... gcc3
checking for aarch64-w64-mingw32-ar... /opt/aarch64-w64-mingw32/bin/ar
checking for aarch64-w64-mingw32-ranlib... /opt/aarch64-w64-mingw32/bin/ranlib
checking whether make sets $(MAKE)... (cached) yes
checking for makeinfo... makeinfo --split-size=5000000
checking for modern makeinfo... yes
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include   ... /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/collect-ld
checking if the linker (/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/collect-ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/nm
checking the name lister (/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/nm) interface... BSD nm
checking whether ln -s works... no, using cp -pR
checking the maximum length of command line arguments... 8192
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/collect-ld option to reload object files... -r
checking for aarch64-w64-mingw32-objdump... /opt/aarch64-w64-mingw32/bin/objdump
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
checking for aarch64-w64-mingw32-ar... (cached) /opt/aarch64-w64-mingw32/bin/ar
checking for aarch64-w64-mingw32-strip... (cached) /opt/aarch64-w64-mingw32/bin/strip
checking for aarch64-w64-mingw32-ranlib... (cached) /opt/aarch64-w64-mingw32/bin/ranlib
checking command to parse /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/nm output from /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    object... ok
checking how to run the C preprocessor... /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... no
checking for objdir... .libs
checking if /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    supports -fno-rtti -fno-exceptions... no
checking for /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    option to produce PIC... -DDLL_EXPORT -DPIC
checking if /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    PIC flag -DDLL_EXPORT -DPIC works... yes
checking if /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    static flag -static works... yes
checking if /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    supports -c -o file.o... yes
checking if /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    supports -c -o file.o... (cached) yes
checking whether the /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/ -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    linker (/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/collect-ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for aarch64-w64-mingw32-gfortran... no
checking whether we are using the GNU Fortran compiler... no
checking whether no accepts -g... no
checking for ANSI C header files... (cached) yes
checking whether time.h and sys/time.h may both be included... yes
checking whether string.h and strings.h may both be included... yes
checking pthread.h usability... no
checking pthread.h presence... no
checking for pthread.h... no
checking for unistd.h... (cached) yes
checking semaphore.h usability... no
checking semaphore.h presence... no
checking for semaphore.h... no
checking sys/loadavg.h usability... no
checking sys/loadavg.h presence... no
checking for sys/loadavg.h... no
checking sys/sysctl.h usability... no
checking sys/sysctl.h presence... no
checking for sys/sysctl.h... no
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
configure: error: Pthreads are required to build libgomp
make[1]: *** [Makefile:16048: configure-target-libgomp] Error 1
make[1]: Leaving directory '/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32'
make: *** [Makefile:1048: all] Error 2

Solution

Build and install mingw-w64-cross-winpthreads package after having mingw-w64-cross-crt build and installed first.

MehdiChinoune commented 10 months ago

You could disable building openmp (libgomp) as a first step.

Blackhex commented 10 months ago

Issue

make[5]: Entering directory '/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src'
/bin/sh ../libtool --tag CXX   --mode=link /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -shared-libgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc -nostdinc++ -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/.libs -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include     -Wl,-O1  -no-undefined -bindir "/opt/lib/gcc/aarch64-w64-mingw32/14.0.0" -Wl,--gc-sections  -std=gnu++98 -DDLL_EXPORT -DPIC -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2 -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=libstdc++.la   -o libstdc++.la -version-info 6:33:0  -lm -no-undefined -bindir "/opt/lib/gcc/aarch64-w64-mingw32/14.0.0" -rpath /opt/lib/gcc/aarch64-w64-mingw32/14.0.0 compatibility.lo compatibility-debug_list.lo compatibility-debug_list-2.lo  compatibility-atomic-c++0x.lo compatibility-c++0x.lo compatibility-chrono.lo compatibility-condvar.lo compatibility-thread-c++0x.lo   ../libsupc++/libsupc++convenience.la ../src/c++98/libc++98convenience.la ../src/c++11/libc++11convenience.la ../src/c++17/libc++17convenience.la ../src/c++20/libc++20convenience.la
libtool: link: rm -fr  .libs/libstdc++.dll.a
libtool: link:  /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -shared-libgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc -nostdinc++ -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/.libs -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    -shared -nostdlib /opt/aarch64-w64-mingw32/lib/dllcrt2.o /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/crtbegin.o  .libs/compatibility.o .libs/compatibility-debug_list.o .libs/compatibility-debug_list-2.o .libs/compatibility-atomic-c++0x.o .libs/compatibility-c++0x.o .libs/compatibility-chrono.o .libs/compatibility-condvar.o .libs/compatibility-thread-c++0x.o  -Wl,--whole-archive ../libsupc++/.libs/libsupc++convenience.a ../src/c++98/.libs/libc++98convenience.a ../src/c++11/.libs/libc++11convenience.a ../src/c++17/.libs/libc++17convenience.a ../src/c++20/.libs/libc++20convenience.a -Wl,--no-whole-archive  -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/.libs -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc -L/opt/aarch64-w64-mingw32/bin -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/crtend.o  -Wl,-O1 -Wl,--gc-sections   -o .libs/libstdc++-6.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libstdc++.dll.a
/opt/aarch64-w64-mingw32/bin/ld: ../libsupc++/.libs/libsupc++convenience.a(eh_personality.o):(.rdata$.refptr._GCC_specific_handler[.refptr._GCC_specific_handler]+0x0): undefined reference to `_GCC_specific_handler'
/opt/aarch64-w64-mingw32/bin/ld: .libs/compatibility-atomic-c++0x.o:(.rdata$.refptr.__gthr_win32_mutex_unlock[.refptr.__gthr_win32_mutex_unlock]+0x0): undefined reference to `__gthr_win32_mutex_unlock'
/opt/aarch64-w64-mingw32/bin/ld: .libs/compatibility-atomic-c++0x.o:(.rdata$.refptr.__gthr_win32_mutex_lock[.refptr.__gthr_win32_mutex_lock]+0x0): undefined reference to `__gthr_win32_mutex_lock'
/opt/aarch64-w64-mingw32/bin/ld: .libs/compatibility-atomic-c++0x.o:(.rdata$.refptr.__gthr_win32_mutex_init_function[.refptr.__gthr_win32_mutex_init_function]+0x0): undefined reference to `__gthr_win32_mutex_init_function'       
/opt/aarch64-w64-mingw32/bin/ld: .libs/compatibility-atomic-c++0x.o:(.rdata$.refptr.__gthr_win32_mutex_destroy[.refptr.__gthr_win32_mutex_destroy]+0x0): undefined reference to `__gthr_win32_mutex_destroy'
/opt/aarch64-w64-mingw32/bin/ld: ../libsupc++/.libs/libsupc++convenience.a(atexit_thread.o):(.rdata$.refptr.__gthr_win32_setspecific[.refptr.__gthr_win32_setspecific]+0x0): undefined reference to `__gthr_win32_setspecific'       
/opt/aarch64-w64-mingw32/bin/ld: ../libsupc++/.libs/libsupc++convenience.a(atexit_thread.o):(.rdata$.refptr.__gthr_win32_getspecific[.refptr.__gthr_win32_getspecific]+0x0): undefined reference to `__gthr_win32_getspecific'
/opt/aarch64-w64-mingw32/bin/ld: ../libsupc++/.libs/libsupc++convenience.a(atexit_thread.o):(.rdata$.refptr.__gthr_win32_key_create[.refptr.__gthr_win32_key_create]+0x0): undefined reference to `__gthr_win32_key_create'
/opt/aarch64-w64-mingw32/bin/ld: ../libsupc++/.libs/libsupc++convenience.a(atexit_thread.o):(.rdata$.refptr.__gthr_win32_key_delete[.refptr.__gthr_win32_key_delete]+0x0): undefined reference to `__gthr_win32_key_delete'
/opt/aarch64-w64-mingw32/bin/ld: ../libsupc++/.libs/libsupc++convenience.a(guard.o):(.rdata$.refptr.__gthr_win32_cond_broadcast[.refptr.__gthr_win32_cond_broadcast]+0x0): undefined reference to `__gthr_win32_cond_broadcast'      
/opt/aarch64-w64-mingw32/bin/ld: ../libsupc++/.libs/libsupc++convenience.a(guard.o):(.rdata$.refptr.__gthr_win32_cond_wait[.refptr.__gthr_win32_cond_wait]+0x0): undefined reference to `__gthr_win32_cond_wait'
/opt/aarch64-w64-mingw32/bin/ld: ../libsupc++/.libs/libsupc++convenience.a(guard.o):(.rdata$.refptr.__gthr_win32_cond_init_function[.refptr.__gthr_win32_cond_init_function]+0x0): undefined reference to `__gthr_win32_cond_init_function'
../src/c++20/.libs/libc++20convenience.a(tzdb.o): in function `zoneinfo_file':
/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/c++20/../../../../../gcc/libstdc++-v3/src/c++20/tzdb.cc:1061:(.text$_ZNSt6chrono12_GLOBAL__N_113zoneinfo_fileESt17basic_string_viewIcSt11char_traitsIcEE+0x8): relocation truncated to fit: IMAGE_REL_ARM64_PAGEOFFSET_12L against undefined symbol `__gnu_cxx::zoneinfo_dir_override()'
/opt/aarch64-w64-mingw32/bin/ld: ../src/c++20/.libs/libc++20convenience.a(tzdb.o):(.rdata$.refptr.__gthr_win32_yield[.refptr.__gthr_win32_yield]+0x0): undefined reference to `__gthr_win32_yield'
/opt/aarch64-w64-mingw32/bin/ld: ../src/c++11/.libs/libc++11convenience.a(thread.o):(.rdata$.refptr.__gthr_win32_create[.refptr.__gthr_win32_create]+0x0): undefined reference to `__gthr_win32_create'
/opt/aarch64-w64-mingw32/bin/ld: ../src/c++11/.libs/libc++11convenience.a(thread.o):(.rdata$.refptr.__gthr_win32_detach[.refptr.__gthr_win32_detach]+0x0): undefined reference to `__gthr_win32_detach'
/opt/aarch64-w64-mingw32/bin/ld: ../src/c++11/.libs/libc++11convenience.a(thread.o):(.rdata$.refptr.__gthr_win32_join[.refptr.__gthr_win32_join]+0x0): undefined reference to `__gthr_win32_join'
/opt/aarch64-w64-mingw32/bin/ld: ../src/c++11/.libs/libc++11convenience.a(condition_variable.o):(.rdata$.refptr.__gthr_win32_cond_signal[.refptr.__gthr_win32_cond_signal]+0x0): undefined reference to `__gthr_win32_cond_signal'   
/opt/aarch64-w64-mingw32/bin/ld: .libs/compatibility-thread-c++0x.o:(.rdata$.refptr.__gthr_win32_once[.refptr.__gthr_win32_once]+0x0): undefined reference to `__gthr_win32_once'
collect2: error: ld returned 1 exit status
make[5]: *** [Makefile:759: libstdc++.la] Error 1

Partial Workaround

Related to gcc-mirror/gcc@9149a5bc commit.

--- a/libstdc++-v3/config/os/mingw32/os\_defines.h  
+++ b/libstdc++-v3/config/os/mingw32/os\_defines.h  
@@ -36,7 +36,7 @@  
 //  Define as 0, if you want, to enable inlining of gthread functions.  
 //  By default, don't pollute libstdc++ with win32api names.  
 #if !defined (\_\_GTHREAD\_HIDE\_WIN32API)  
-# define \_\_GTHREAD\_HIDE\_WIN32API 1  
+# define \_\_GTHREAD\_HIDE\_WIN32API 0  
 #endif  

 // Don't let win32api windef.h define min and max as macros  
--- a/libstdc++-v3/config/os/mingw32-w64/os\_defines.h  
+++ b/libstdc++-v3/config/os/mingw32-w64/os\_defines.h  
@@ -36,7 +36,7 @@  
 //  Define as 0, if you want, to enable inlining of gthread functions.  
 //  By default, don't pollute libstdc++ with win32api names.  
 #if !defined (\_\_GTHREAD\_HIDE\_WIN32API)  
-# define \_\_GTHREAD\_HIDE\_WIN32API 1  
+# define \_\_GTHREAD\_HIDE\_WIN32API 0  
 #endif  

 // Don't let win32api windef.h define min and max as macros  

after that this issue remains:

make[5]: Entering directory '/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src'
/bin/sh ../libtool --tag CXX   --mode=link /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -shared-libgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc -nostdinc++ -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/.libs -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include     -Wl,-O1  -no-undefined -bindir "/opt/lib/gcc/aarch64-w64-mingw32/14.0.0" -Wl,--gc-sections  -std=gnu++98 -DDLL_EXPORT -DPIC -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2 -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=libstdc++.la   -o libstdc++.la -version-info 6:33:0  -lm -no-undefined -bindir "/opt/lib/gcc/aarch64-w64-mingw32/14.0.0" -rpath /opt/lib/gcc/aarch64-w64-mingw32/14.0.0 compatibility.lo compatibility-debug_list.lo compatibility-debug_list-2.lo  compatibility-atomic-c++0x.lo compatibility-c++0x.lo compatibility-chrono.lo compatibility-condvar.lo compatibility-thread-c++0x.lo   ../libsupc++/libsupc++convenience.la ../src/c++98/libc++98convenience.la ../src/c++11/libc++11convenience.la ../src/c++17/libc++17convenience.la ../src/c++20/libc++20convenience.la
libtool: link: rm -fr  .libs/libstdc++.dll.a
libtool: link:  /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -shared-libgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc -nostdinc++ -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/.libs -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    -shared -nostdlib /opt/aarch64-w64-mingw32/lib/dllcrt2.o /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/crtbegin.o  .libs/compatibility.o .libs/compatibility-debug_list.o .libs/compatibility-debug_list-2.o .libs/compatibility-atomic-c++0x.o .libs/compatibility-c++0x.o .libs/compatibility-chrono.o .libs/compatibility-condvar.o .libs/compatibility-thread-c++0x.o  -Wl,--whole-archive ../libsupc++/.libs/libsupc++convenience.a ../src/c++98/.libs/libc++98convenience.a ../src/c++11/.libs/libc++11convenience.a ../src/c++17/.libs/libc++17convenience.a ../src/c++20/.libs/libc++20convenience.a -Wl,--no-whole-archive  -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/.libs -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc -L/opt/aarch64-w64-mingw32/bin -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/crtend.o  -Wl,-O1 -Wl,--gc-sections   -o .libs/libstdc++-6.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libstdc++.dll.a
/opt/aarch64-w64-mingw32/bin/ld: ../libsupc++/.libs/libsupc++convenience.a(eh_personality.o):(.rdata$.refptr._GCC_specific_handler[.refptr._GCC_specific_handler]+0x0): undefined reference to `_GCC_specific_handler'
../src/c++20/.libs/libc++20convenience.a(tzdb.o): in function `zoneinfo_file':
/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/c++20/../../../../../gcc/libstdc++-v3/src/c++20/tzdb.cc:1061:(.text$_ZNSt6chrono12_GLOBAL__N_113zoneinfo_fileESt17basic_string_viewIcSt11char_traitsIcEE+0x8): relocation truncated to fit: IMAGE_REL_ARM64_PAGEOFFSET_12L against undefined symbol `__gnu_cxx::zoneinfo_dir_override()'
/opt/aarch64-w64-mingw32/bin/ld: ../src/c++11/.libs/libc++11convenience.a(thread.o):(.rdata$.refptr.__gthr_win32_create[.refptr.__gthr_win32_create]+0x0): undefined reference to `__gthr_win32_create'
/opt/aarch64-w64-mingw32/bin/ld: ../src/c++11/.libs/libc++11convenience.a(thread.o):(.rdata$.refptr.__gthr_win32_join[.refptr.__gthr_win32_join]+0x0): undefined reference to `__gthr_win32_join'
collect2: error: ld returned 1 exit status
make[5]: *** [Makefile:759: libstdc++.la] Error 1

Workaround

Does not happen with --disable-shared configure option.

Solution

TODO

mati865 commented 10 months ago

Workaround

--- a/libgcc/unwind-generic.h
+++ b/libgcc/unwind-generic.h
@@ -93,12 +93,9 @@ struct _Unwind_Exception
   _Unwind_Exception_Class exception_class;
   _Unwind_Exception_Cleanup_Fn exception_cleanup;

-#if !defined (__USING_SJLJ_EXCEPTIONS__) && defined (__SEH__)
   _Unwind_Word private_[6];
-#else
   _Unwind_Word private_1;
   _Unwind_Word private_2;
-#endif

   /* @@@ The IA-64 ABI says that this structure must be double-word aligned.
      Taking that literally does not make much sense generically.  Instead we

This will allow the build to proceed but the exceptions handling will be broken.

Blackhex commented 10 months ago

This will allow the build to proceed but the exceptions handling will be broken.

Thank you for the insight. Certainly this, needs to be investigated further and fixed properly. For now, passing the build is a priority.

Blackhex commented 10 months ago

Issue

make[5]: Entering directory '/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/c++11'
/bin/sh ../../libtool --tag CXX --tag disable-shared   --mode=compile /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -shared-libgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc -nostdinc++ -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/.libs -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include    -I/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/gcc/libstdc++-v3/../libgcc -I/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/include/aarch64-w64-mingw32 -I/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/include -I/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/gcc/libstdc++-v3/libsupc++ -D_WIN32_WINNT=0x0600 -D_WIN32_WINNT=0x0600 -std=gnu++11 -prefer-pic -D_GLIBCXX_SHARED -fno-implicit-templates  -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2  -fdiagnostics-show-location=once   -ffunction-sections -fdata-sections  -frandom-seed=cow-wstring-inst.lo  -g -O2  -c -o cow-wstring-inst.lo ../../../../../gcc/libstdc++-v3/src/c++11/cow-wstring-inst.cc
libtool: compile:  /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc/xgcc -shared-libgcc -B/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/./gcc -nostdinc++ -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/src/.libs -L/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/opt/aarch64-w64-mingw32/lib -L/opt/mingw/lib -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/mingw/include -B/opt/aarch64-w64-mingw32/bin/ -B/opt/aarch64-w64-mingw32/lib/ -isystem /opt/aarch64-w64-mingw32/include -isystem /opt/aarch64-w64-mingw32/sys-include -I/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/gcc/libstdc++-v3/../libgcc -I/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/include/aarch64-w64-mingw32 -I/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/include -I/c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/gcc/libstdc++-v3/libsupc++ -D_WIN32_WINNT=0x0600 -D_WIN32_WINNT=0x0600 -std=gnu++11 -D_GLIBCXX_SHARED -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2 -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=cow-wstring-inst.lo -g -O2 -c ../../../../../gcc/libstdc++-v3/src/c++11/cow-wstring-inst.cc -o cow-wstring-inst.o
In file included from /opt/aarch64-w64-mingw32/include/minwindef.h:163,
                 from /opt/aarch64-w64-mingw32/include/windef.h:9,
                 from /opt/aarch64-w64-mingw32/include/windows.h:69,
                 from /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/include/aarch64-w64-mingw32/bits/gthr-default.h:615,
                 from /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/include/aarch64-w64-mingw32/bits/gthr.h:148,
                 from /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/include/ext/atomicity.h:35,
                 from /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/include/bits/cow_string.h:37,
                 from /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/include/bits/basic_string.h:51,
                 from /c/Projekty/MSYS2-packages/mingw-w64-cross-gcc/src/build-aarch64-w64-mingw32/aarch64-w64-mingw32/libstdc++-v3/include/string:54,
                 from ../../../../../gcc/libstdc++-v3/src/c++11/string-inst.cc:46,
                 from ../../../../../gcc/libstdc++-v3/src/c++11/cow-wstring-inst.cc:34:
/opt/aarch64-w64-mingw32/include/winnt.h:8499:11: error: two or more data types in declaration of ‘type name’
 8499 |           DWORD C : 1;
      |           ^~~~~
make[5]: *** [Makefile:669: cow-wstring-inst.lo] Error 1

Workaround

Comment out or delete _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY structure from /opt/aarch64-w64-mingw32/include/winnt.h and /opt/x86_64-w64-mingw32/include/winnt.h files.

This happens also for x64 build so it's either a regression from the previous changes made, regression in the upstream master GCC, Zac's changes to the upstream GCC, or msys/mingw-w64-cross-headers package where those files come from.

Solution

TODO