A proper ARM64EC implementation would be tricky, as it would need to handle a different calling convention and possibly use exit thunks for imported functions. Instead, we can simply use the x86_64 version. --- This series, together with setjmp/longjmp, finally allow building unmodified mingw-w64-crt as ARM64EC.
mingw-w64-crt/Makefile.am | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index b4712cda8..4a3aff664 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am @@ -306,7 +306,6 @@ src_msvcrt_commonarm64=\ $(src_msvcrt_common_add_arm64) src_msvcrt_add_vscanf=\ - stdio/scanf.S \ stdio/scanf2-argcount-char.c \ stdio/scanf2-argcount-wchar.c \ stdio/vfscanf.c \ @@ -383,7 +382,8 @@ src_msvcrt_add_x86=\ secapi/rand_s.c \ secapi/sprintf_s.c \ secapi/strerror_s.c \ - secapi/vsprintf_s.c + secapi/vsprintf_s.c \ + stdio/scanf.S # Files included in libucrt*.a src_ucrtbase=\ @@ -635,7 +635,8 @@ src_msvcrtarm32=\ misc/__winitenv.c \ stdio/_fstat64i32.c \ stdio/_setmaxstdio.c \ - stdio/gets.c + stdio/gets.c \ + stdio/scanf.S if !ENABLE_SOFTMATH src_msvcrtarm32+=\ @@ -755,6 +756,12 @@ src_msvcrtarm64=\ stdio/_setmaxstdio.c \ stdio/gets.c +if ARM64EC +src_msvcrtarm64_x64=libarm64/stdio/scanf.x86_64.o +else +src_msvcrtarm64+=stdio/scanf.S +endif + src_pre_msvcrt20=\ misc/__daylight.c \ misc/__initenv.c \ @@ -854,7 +861,8 @@ src_pre_msvcr120=\ misc/isblank.c \ misc/iswblank.c \ misc/wctrans.c \ - misc/wctype.c + misc/wctype.c \ + stdio/scanf.S src_pre_msvcr120_post_msvcr71=\ misc/_isblank_l.c \ @@ -2337,6 +2345,9 @@ libarm64/gcrt2.o: libarm64/gcrt0.o libarm64/%.o: crt/%.c $(AM_V_CC)$(COMPILE) $(CPPFLAGSARM64) -c $< -o $@ +libarm64/%.x86_64.o: %.S + $(AM_V_CC)$(MKDIR_P) $(@D) && $(COMPILE) $(CPPFLAGSARM64) -target x86_64-windows-gnu -c $< -o $@ + # These source files aren't compiled in to any library yet. I'm not sure how / where to do so. # The source files that I did compile somewhere I just guessed at anyway. # @@ -2552,6 +2563,7 @@ libarm64_libmsvcrt_common_a_SOURCES = $(src_msvcrt_commonarm64) libarm64_libmsvcrt_common_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ $(extra_include) $(sysincludes) libarm64_libmsvcrt_extra_a_SOURCES = $(src_msvcrtarm64) libarm64_libmsvcrt_extra_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ -D__LIBMSVCRT_OS__ $(extra_include) $(sysincludes) +libarm64_libmsvcrt_extra_a_LIBADD=$(src_msvcrtarm64_x64) libarm64_libucrt_extra_a_SOURCES = $(src_ucrtbasearm64) libarm64_libucrt_extra_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ $(extra_include) $(sysincludes) libarm64_libucrtapp_extra_a_SOURCES = $(src_ucrtapp) $(src_ucrtapp_arm64) -- 2.49.0 _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public