<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">diff -rupN gcc/configure gcc.patched/configure
--- gcc/configure	2023-08-09 16:02:00.350796380 +0100
+++ gcc.patched/configure	2023-08-09 16:03:06.675669438 +0100
@@ -3558,7 +3558,7 @@ case "${target}" in
   i[3456789]86-*-mingw*)
     noconfigdirs="$noconfigdirs target-libffi"
     ;;
-  x86_64-*-mingw*)
+  x86_64-*-mingw* | aarch64-*-mingw*)
     noconfigdirs="$noconfigdirs target-libffi"
     ;;
   mmix-*-*)
@@ -10231,7 +10231,7 @@ case " $target_configdirs " in
 esac
 
 case "$target" in
-  x86_64-*mingw* | *-w64-mingw*)
+  x86_64-*mingw* | aarch64-*mingw* | *-w64-mingw*)
   # MinGW-w64 does not use newlib, nor does it use winsup. It may,
   # however, use a symlink named 'mingw' in ${prefix} .
     FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L${prefix}/${target}/lib -L${prefix}/mingw/lib -isystem ${prefix}/${target}/include -isystem ${prefix}/mingw/include'
diff -rupN gcc/fixincludes/configure gcc.patched/fixincludes/configure
--- gcc/fixincludes/configure	2023-08-09 16:01:43.938580375 +0100
+++ gcc.patched/fixincludes/configure	2023-08-09 16:03:06.703669807 +0100
@@ -4815,7 +4815,7 @@ else
   case $host in
 	i?86-*-msdosdjgpp* | \
 	i?86-*-mingw32* | \
-	x86_64-*-mingw32* | \
+	x86_64-*-mingw32* | aarch64-*-mingw32* | \
 	*-*-beos* | \
         *-*-*vms*)
 		TARGET=twoprocess
diff -rupN gcc/gcc/config/aarch64/aarch64.cc gcc.patched/gcc/config/aarch64/aarch64.cc
--- gcc/gcc/config/aarch64/aarch64.cc	2023-08-09 16:01:44.078582218 +0100
+++ gcc.patched/gcc/config/aarch64/aarch64.cc	2023-08-09 16:03:06.719670018 +0100
@@ -18235,6 +18235,37 @@ aarch64_convert_sve_vector_bits (aarch64
     return (int) value / 64;
 }
 
+const char *aarch64_text_section = "\t" AARCH64_DEFAULT_TEXT_SECTION_NAME;
+const char *aarch64_data_section = "\t" AARCH64_DEFAULT_DATA_SECTION_NAME;
+const char *aarch64_readonly_data_section = "\t.section " AARCH64_DEFAULT_READONLY_DATA_SECTION_NAME;
+const char *aarch64_bss_section = "\t" AARCH64_DEFAULT_BSS_SECTION_NAME;
+
+void aarch64_asm_named_section (const char *name, unsigned int flags, tree t)
+{
+  char local[1024 * 16];
+  if (strstr(name, AARCH64_DEFAULT_TEXT_SECTION_NAME ".")==name)
+    {
+      sprintf(local, "%s%s", aarch64_text_string, name+sizeof(AARCH64_DEFAULT_TEXT_SECTION_NAME)-1);
+      name = local;
+    }
+  else if (strstr(name, AARCH64_DEFAULT_DATA_SECTION_NAME ".")==name)
+    {
+      sprintf(local, "%s%s", aarch64_data_string, name+sizeof(AARCH64_DEFAULT_DATA_SECTION_NAME)-1);
+      name = local;
+    }
+  else if (strstr(name, AARCH64_DEFAULT_BSS_SECTION_NAME ".")==name)
+    {
+      sprintf(local, "%s%s", aarch64_bss_string, name+sizeof(AARCH64_DEFAULT_BSS_SECTION_NAME)-1);
+      name = local;
+    }
+  else if (strstr(name, AARCH64_DEFAULT_READONLY_DATA_SECTION_NAME ".")==name)
+    {
+      sprintf(local, "%s%s", aarch64_readonly_data_string, name+sizeof(AARCH64_DEFAULT_READONLY_DATA_SECTION_NAME)-1);
+      name = local;
+    }
+  default_elf_asm_named_section(name, flags, t);
+}
+
 /* Implement TARGET_OPTION_OVERRIDE.  This is called once in the beginning
    and is used to parse the -m{cpu,tune,arch} strings and setup the initial
    tuning structs.  In particular it must set selected_tune and
@@ -18394,6 +18425,35 @@ aarch64_override_options (void)
      while processing functions with potential target attributes.  */
   target_option_default_node = target_option_current_node
     = build_target_option_node (&amp;global_options, &amp;global_options_set);
+
+  if (strcmp(aarch64_text_string, AARCH64_DEFAULT_TEXT_SECTION_NAME))
+    {
+      #define AARCH64_TEXT_SECTION_FORMAT "\t.section\t%s,\"ax\",%%progbits\n"
+      char *tmp = XNEWVEC (char, strlen (aarch64_text_string) + sizeof (AARCH64_TEXT_SECTION_FORMAT) + 1);
+      sprintf (tmp, AARCH64_TEXT_SECTION_FORMAT, aarch64_text_string);
+      aarch64_text_section = tmp;
+    }
+  if (strcmp(aarch64_data_string, AARCH64_DEFAULT_DATA_SECTION_NAME))
+    {
+      #define AARCH64_DATA_SECTION_FORMAT "\t.section\t%s,\"aw\",%%progbits\n"
+      char *tmp = XNEWVEC (char, strlen (aarch64_data_string) + sizeof (AARCH64_DATA_SECTION_FORMAT) + 1);
+      sprintf (tmp, AARCH64_DATA_SECTION_FORMAT, aarch64_data_string);
+      aarch64_data_section = tmp;
+    }
+  if (strcmp(aarch64_readonly_data_string, AARCH64_DEFAULT_READONLY_DATA_SECTION_NAME))
+    {
+      #define AARCH64_READONLY_DATA_SECTION_FORMAT "\t.section\t%s,\"a\",%%progbits\n"
+      char *tmp = XNEWVEC (char, strlen (aarch64_readonly_data_string) + sizeof (AARCH64_READONLY_DATA_SECTION_FORMAT) + 1);
+      sprintf (tmp, AARCH64_READONLY_DATA_SECTION_FORMAT, aarch64_readonly_data_string);
+      aarch64_readonly_data_section = tmp;
+    }
+  if (strcmp(aarch64_bss_string, AARCH64_DEFAULT_BSS_SECTION_NAME))
+    {
+      #define AARCH64_BSS_SECTION_FORMAT "\t.section\t%s,\"aw\",%%nobits\n"
+      char *tmp = XNEWVEC (char, strlen (aarch64_bss_string) + sizeof (AARCH64_BSS_SECTION_FORMAT) + 1);
+      sprintf (tmp, AARCH64_BSS_SECTION_FORMAT, aarch64_bss_string);
+      aarch64_bss_section = tmp;
+    }
 }
 
 /* Implement targetm.override_options_after_change.  */
diff -rupN gcc/gcc/config/aarch64/aarch64-elf.h gcc.patched/gcc/config/aarch64/aarch64-elf.h
--- gcc/gcc/config/aarch64/aarch64-elf.h	2023-08-09 16:01:44.078582218 +0100
+++ gcc.patched/gcc/config/aarch64/aarch64-elf.h	2023-08-09 16:03:06.719670018 +0100
@@ -25,9 +25,22 @@
 #define ASM_OUTPUT_LABELREF(FILE, NAME) \
   aarch64_asm_output_labelref (FILE, NAME)
 
-#define TEXT_SECTION_ASM_OP	"\t.text"
-#define DATA_SECTION_ASM_OP	"\t.data"
-#define BSS_SECTION_ASM_OP	"\t.bss"
+#define TEXT_SECTION_ASM_OP aarch64_text_section
+#define DATA_SECTION_ASM_OP aarch64_data_section
+#undef READONLY_DATA_SECTION_ASM_OP
+#define READONLY_DATA_SECTION_ASM_OP aarch64_readonly_data_section
+#define BSS_SECTION_ASM_OP aarch64_bss_section
+#undef TARGET_ASM_NAMED_SECTION
+#define TARGET_ASM_NAMED_SECTION aarch64_asm_named_section
+#define AARCH64_DEFAULT_TEXT_SECTION_NAME  ".text"
+#define AARCH64_DEFAULT_DATA_SECTION_NAME  ".data"
+#define AARCH64_DEFAULT_READONLY_DATA_SECTION_NAME  ".rodata"
+#define AARCH64_DEFAULT_BSS_SECTION_NAME ".bss"
+extern const char *aarch64_text_section;
+extern const char *aarch64_data_section;
+extern const char *aarch64_readonly_data_section;
+extern const char *aarch64_bss_section;
+void aarch64_asm_named_section (const char *name, unsigned int flags, tree t);
 
 #define CTORS_SECTION_ASM_OP "\t.section\t.init_array,\"aw\",%init_array"
 #define DTORS_SECTION_ASM_OP "\t.section\t.fini_array,\"aw\",%fini_array"
diff -rupN gcc/gcc/config/aarch64/aarch64.h gcc.patched/gcc/config/aarch64/aarch64.h
--- gcc/gcc/config/aarch64/aarch64.h	2023-08-09 16:01:44.074582165 +0100
+++ gcc.patched/gcc/config/aarch64/aarch64.h	2023-08-09 16:03:06.723670070 +0100
@@ -1293,7 +1293,7 @@ extern const char *aarch64_rewrite_mcpu
 #define MCPU_TO_MARCH_SPEC_FUNCTIONS \
   { "rewrite_mcpu", aarch64_rewrite_mcpu },
 
-#if defined(__aarch64__)
+#if defined(__aarch64__) &amp;&amp; !defined(__APPLE__) &amp;&amp; !defined(__MINGW32__)
 extern const char *host_detect_local_cpu (int argc, const char **argv);
 #define HAVE_LOCAL_CPU_DETECT
 # define EXTRA_SPEC_FUNCTIONS						\
diff -rupN gcc/gcc/config/aarch64/aarch64.opt gcc.patched/gcc/config/aarch64/aarch64.opt
--- gcc/gcc/config/aarch64/aarch64.opt	2023-08-09 16:01:44.082582270 +0100
+++ gcc.patched/gcc/config/aarch64/aarch64.opt	2023-08-09 16:03:06.727670123 +0100
@@ -281,6 +281,22 @@ Target Joined UInteger Var(aarch64_autov
 -param=aarch64-loop-vect-issue-rate-niters=
 Target Joined UInteger Var(aarch64_loop_vect_issue_rate_niters) Init(6) IntegerRange(0, 65536) Param
 
+mtext=
+Target RejectNegative Joined Var(aarch64_text_string) Init(AARCH64_DEFAULT_TEXT_SECTION_NAME)
+-mtext=SECTION Put functions in SECTION
+
+mdata=
+Target RejectNegative Joined Var(aarch64_data_string) Init(AARCH64_DEFAULT_DATA_SECTION_NAME)
+-mdata=SECTION Put data in SECTION
+
+mrodata=
+Target RejectNegative Joined Var(aarch64_readonly_data_string) Init(AARCH64_DEFAULT_READONLY_DATA_SECTION_NAME)
+-mrodata=SECTION Put read-only data in SECTION
+
+mbss=
+Target RejectNegative Joined Var(aarch64_bss_string) Init(AARCH64_DEFAULT_BSS_SECTION_NAME)
+-mbss=SECTION Put zeroed data in SECTION
+
 -param=aarch64-mops-memcpy-size-threshold=
 Target Joined UInteger Var(aarch64_mops_memcpy_size_threshold) Init(256) Param
 Constant memcpy size in bytes above which to start using MOPS sequence.
diff -rupN gcc/gcc/config/arm/aout.h gcc.patched/gcc/config/arm/aout.h
--- gcc/gcc/config/arm/aout.h	2023-08-09 16:01:44.218584060 +0100
+++ gcc.patched/gcc/config/arm/aout.h	2023-08-09 16:03:06.739670281 +0100
@@ -31,9 +31,13 @@
 #endif
 
 /* Switch to the text or data segment.  */
-#define TEXT_SECTION_ASM_OP  	"\t.text"
-#define DATA_SECTION_ASM_OP  	"\t.data"
-#define BSS_SECTION_ASM_OP   	"\t.bss"
+#define TEXT_SECTION_ASM_OP arm_text_section
+#define DATA_SECTION_ASM_OP arm_data_section
+#undef READONLY_DATA_SECTION_ASM_OP
+#define READONLY_DATA_SECTION_ASM_OP arm_readonly_data_section
+#define BSS_SECTION_ASM_OP arm_bss_section
+#undef TARGET_ASM_NAMED_SECTION
+#define TARGET_ASM_NAMED_SECTION arm_asm_named_section
 
 /* Note: If USER_LABEL_PREFIX or LOCAL_LABEL_PREFIX are changed,
    make sure that this change is reflected in the function
diff -rupN gcc/gcc/config/arm/arm.cc gcc.patched/gcc/config/arm/arm.cc
--- gcc/gcc/config/arm/arm.cc	2023-08-09 16:01:44.202583850 +0100
+++ gcc.patched/gcc/config/arm/arm.cc	2023-08-09 16:03:06.759670544 +0100
@@ -2447,6 +2447,11 @@ arm_constant_limit (bool size_p)
   return size_p ? 1 : current_tune-&gt;constant_limit;
 }
 
+const char *arm_text_section = "\t" ARM_DEFAULT_TEXT_SECTION_NAME;
+const char *arm_data_section = "\t" ARM_DEFAULT_DATA_SECTION_NAME;
+const char *arm_readonly_data_section = "\t.section " ARM_DEFAULT_READONLY_DATA_SECTION_NAME;
+const char *arm_bss_section = "\t" ARM_DEFAULT_BSS_SECTION_NAME;
+
 /* Emit an insn that's a simple single-set.  Both the operands must be known
    to be valid.  */
 inline static rtx_insn *
@@ -3684,6 +3689,35 @@ arm_option_override (void)
       flag_reorder_blocks = 1;
     }
 
+  if (strcmp(arm_text_string, ARM_DEFAULT_TEXT_SECTION_NAME))
+    {
+      #define ARM_TEXT_SECTION_FORMAT "\t.section\t%s,\"ax\",%%progbits\n"
+      char *tmp = XNEWVEC (char, strlen (arm_text_string) + sizeof (ARM_TEXT_SECTION_FORMAT) + 1);
+      sprintf (tmp, ARM_TEXT_SECTION_FORMAT, arm_text_string);
+      arm_text_section = tmp;
+    }
+  if (strcmp(arm_data_string, ARM_DEFAULT_DATA_SECTION_NAME))
+    {
+      #define ARM_DATA_SECTION_FORMAT "\t.section\t%s,\"aw\",%%progbits\n"
+      char *tmp = XNEWVEC (char, strlen (arm_data_string) + sizeof (ARM_DATA_SECTION_FORMAT) + 1);
+      sprintf (tmp, ARM_DATA_SECTION_FORMAT, arm_data_string);
+      arm_data_section = tmp;
+    }
+  if (strcmp(arm_readonly_data_string, ARM_DEFAULT_READONLY_DATA_SECTION_NAME))
+    {
+      #define ARM_READONLY_DATA_SECTION_FORMAT "\t.section\t%s,\"a\",%%progbits\n"
+      char *tmp = XNEWVEC (char, strlen (arm_readonly_data_string) + sizeof (ARM_READONLY_DATA_SECTION_FORMAT) + 1);
+      sprintf (tmp, ARM_READONLY_DATA_SECTION_FORMAT, arm_readonly_data_string);
+      arm_readonly_data_section = tmp;
+    }
+  if (strcmp(arm_bss_string, ARM_DEFAULT_BSS_SECTION_NAME))
+    {
+      #define ARM_BSS_SECTION_FORMAT "\t.section\t%s,\"aw\",%%nobits\n"
+      char *tmp = XNEWVEC (char, strlen (arm_bss_string) + sizeof (ARM_BSS_SECTION_FORMAT) + 1);
+      sprintf (tmp, ARM_BSS_SECTION_FORMAT, arm_bss_string);
+      arm_bss_section = tmp;
+    }
+
   if (flag_pic)
     /* Hoisting PIC address calculations more aggressively provides a small,
        but measurable, size reduction for PIC code.  Therefore, we decrease
@@ -4005,6 +4039,32 @@ arm_fdpic_local_funcdesc_p (rtx fnx)
   return ret;
 }
 
+void arm_asm_named_section (const char *name, unsigned int flags, tree t)
+{
+  char local[1024 * 16];
+  if (strstr(name, ARM_DEFAULT_TEXT_SECTION_NAME ".")==name)
+    {
+      sprintf(local, "%s%s", arm_text_string, name+sizeof(ARM_DEFAULT_TEXT_SECTION_NAME)-1);
+      name = local;
+    }
+  else if (strstr(name, ARM_DEFAULT_DATA_SECTION_NAME ".")==name)
+    {
+      sprintf(local, "%s%s", arm_data_string, name+sizeof(ARM_DEFAULT_DATA_SECTION_NAME)-1);
+      name = local;
+    }
+  else if (strstr(name, ARM_DEFAULT_BSS_SECTION_NAME ".")==name)
+    {
+      sprintf(local, "%s%s", arm_bss_string, name+sizeof(ARM_DEFAULT_BSS_SECTION_NAME)-1);
+      name = local;
+    }
+  else if (strstr(name, ARM_DEFAULT_READONLY_DATA_SECTION_NAME ".")==name)
+    {
+      sprintf(local, "%s%s", arm_readonly_data_string, name+sizeof(ARM_DEFAULT_READONLY_DATA_SECTION_NAME)-1);
+      name = local;
+    }
+  default_elf_asm_named_section(name, flags, t);
+}
+
 static void
 arm_add_gc_roots (void)
 {
diff -rupN gcc/gcc/config/arm/arm.h gcc.patched/gcc/config/arm/arm.h
--- gcc/gcc/config/arm/arm.h	2023-08-09 16:01:44.206583902 +0100
+++ gcc.patched/gcc/config/arm/arm.h	2023-08-09 16:03:06.763670597 +0100
@@ -1929,6 +1929,17 @@ enum arm_auto_incmodes
   if (TARGET_THUMB2)			\
     thumb2_asm_output_opcode (STREAM);
 
+#define ARM_DEFAULT_TEXT_SECTION_NAME  ".text"
+#define ARM_DEFAULT_DATA_SECTION_NAME  ".data"
+#define ARM_DEFAULT_READONLY_DATA_SECTION_NAME  ".rodata"
+#define ARM_DEFAULT_BSS_SECTION_NAME ".bss"
+
+extern const char *arm_text_section;
+extern const char *arm_data_section;
+extern const char *arm_readonly_data_section;
+extern const char *arm_bss_section;
+void arm_asm_named_section (const char *name, unsigned int flags, tree t);
+
 /* The EABI specifies that constructors should go in .init_array.
    Other targets use .ctors for compatibility.  */
 #ifndef ARM_EABI_CTORS_SECTION_OP
diff -rupN gcc/gcc/config/arm/arm.opt gcc.patched/gcc/config/arm/arm.opt
--- gcc/gcc/config/arm/arm.opt	2023-08-09 16:01:44.202583850 +0100
+++ gcc.patched/gcc/config/arm/arm.opt	2023-08-09 16:03:06.767670650 +0100
@@ -286,6 +286,22 @@ munaligned-access
 Target Var(unaligned_access) Init(2) Save
 Enable unaligned word and halfword accesses to packed data.
 
+mtext=
+Target RejectNegative Joined Var(arm_text_string) Init(ARM_DEFAULT_TEXT_SECTION_NAME)
+-mtext=SECTION Put functions in SECTION
+
+mdata=
+Target RejectNegative Joined Var(arm_data_string) Init(ARM_DEFAULT_DATA_SECTION_NAME)
+-mdata=SECTION Put data in SECTION
+
+mrodata=
+Target RejectNegative Joined Var(arm_readonly_data_string) Init(ARM_DEFAULT_READONLY_DATA_SECTION_NAME)
+-mrodata=SECTION Put read-only data in SECTION
+
+mbss=
+Target RejectNegative Joined Var(arm_bss_string) Init(ARM_DEFAULT_BSS_SECTION_NAME)
+-mbss=SECTION Put zeroed data in SECTION
+
 mneon-for-64bits
 Target WarnRemoved
 This option is deprecated and has no effect.
diff -rupN gcc/gcc/config.host gcc.patched/gcc/config.host
--- gcc/gcc/config.host	2023-08-09 16:01:53.158701721 +0100
+++ gcc.patched/gcc/config.host	2023-08-09 16:03:06.767670650 +0100
@@ -243,7 +243,7 @@ case ${host} in
     host_extra_gcc_objs="${host_extra_gcc_objs} driver-mingw32.o"
     host_lto_plugin_soname=liblto_plugin.dll
     ;;
-  x86_64-*-mingw*)
+  x86_64-*-mingw* | aarch64-*-mingw*)
     use_long_long_for_widest_fast_int=yes
     host_xm_file=i386/xm-mingw32.h
     host_xmake_file="${host_xmake_file} i386/x-mingw32"
@@ -256,7 +256,7 @@ case ${host} in
     out_host_hook_obj="${out_host_hook_obj} host-aarch64-darwin.o"
     host_xmake_file="${host_xmake_file} aarch64/x-darwin"
     ;;
-  i[34567]86-*-darwin* | x86_64-*-darwin*)
+  i[34567]86-*-darwin* | x86_64-*-darwin* | aarch64-*-darwin*)
     out_host_hook_obj="${out_host_hook_obj} host-i386-darwin.o"
     host_xmake_file="${host_xmake_file} i386/x-darwin"
     ;;
diff -rupN gcc/gcc/configure gcc.patched/gcc/configure
--- gcc/gcc/configure	2023-08-09 16:01:44.366586008 +0100
+++ gcc.patched/gcc/configure	2023-08-09 16:03:06.795671018 +0100
@@ -5423,7 +5423,7 @@ case "${target}" in
 	;;
     i[34567]86-*-cygwin* | x86_64-*-cygwin*)
 	;;
-    i[34567]86-*-mingw* | x86_64-*-mingw*)
+    i[34567]86-*-mingw* | x86_64-*-mingw* | aarch64-*-mingw*)
 	;;
     i[34567]86-*-interix[3-9]*)
 	# Interix 3.x gcc -fpic/-fPIC options generate broken code.
@@ -7898,7 +7898,7 @@ else
   case $target in
     powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux* | \
     i?86*-*-elfiamcu | i?86*-*-gnu* | x86_64*-*-gnu* | \
-    i?86*-*-mingw* | x86_64*-*-mingw* | \
+    i?86*-*-mingw* | x86_64*-*-mingw* | aarch64*-*-mingw* | \
     i?86*-*-cygwin* | x86_64*-*-cygwin*)
       enable_decimal_float=yes
       ;;
diff -rupN gcc/libada/configure gcc.patched/libada/configure
--- gcc/libada/configure	2023-08-09 16:02:03.934843552 +0100
+++ gcc.patched/libada/configure	2023-08-09 16:03:06.795671018 +0100
@@ -3193,7 +3193,7 @@ case "${host}" in
 	;;
     i[34567]86-*-cygwin* | x86_64-*-cygwin*)
 	;;
-    i[34567]86-*-mingw* | x86_64-*-mingw*)
+    i[34567]86-*-mingw* | x86_64-*-mingw* | aarch64-*-mingw*)
 	;;
     i[34567]86-*-interix[3-9]*)
 	# Interix 3.x gcc -fpic/-fPIC options generate broken code.
diff -rupN gcc/libdecnumber/configure gcc.patched/libdecnumber/configure
--- gcc/libdecnumber/configure	2023-08-09 16:01:43.914580059 +0100
+++ gcc.patched/libdecnumber/configure	2023-08-09 16:03:06.815671281 +0100
@@ -4905,7 +4905,7 @@ else
   case $target in
     powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux* | \
     i?86*-*-elfiamcu | i?86*-*-gnu* | x86_64*-*-gnu* | \
-    i?86*-*-mingw* | x86_64*-*-mingw* | \
+    i?86*-*-mingw* | x86_64*-*-mingw* | aarch64*-*-mingw* | \
     i?86*-*-cygwin* | x86_64*-*-cygwin*)
       enable_decimal_float=yes
       ;;
diff -rupN gcc/libgcc/config.host gcc.patched/libgcc/config.host
--- gcc/libgcc/config.host	2023-08-09 16:02:04.362849185 +0100
+++ gcc.patched/libgcc/config.host	2023-08-09 16:03:06.815671281 +0100
@@ -382,7 +382,7 @@ case ${host} in
   *-*-solaris2*)
   enable_execute_stack=enable-execute-stack-mprotect.c
   ;;
-i[34567]86-*-mingw* | x86_64-*-mingw*)
+i[34567]86-*-mingw* | x86_64-*-mingw* | aarch64-*-mingw*)
   enable_execute_stack=config/i386/enable-execute-stack-mingw32.c
   ;;
 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
@@ -887,7 +887,7 @@ i[34567]86-*-mingw*)
 	fi
 	tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-cygming i386/t-mingw32 t-crtfm i386/t-chkstk t-dfprules"
 	;;
-x86_64-*-mingw*)
+x86_64-*-mingw* | aarch64-*-mingw*)
 	case ${target_thread_file} in
 	  win32)
 	    tmake_file="$tmake_file i386/t-gthr-win32"
diff -rupN gcc/libgcc/configure gcc.patched/libgcc/configure
--- gcc/libgcc/configure	2023-08-09 16:02:04.354849080 +0100
+++ gcc.patched/libgcc/configure	2023-08-09 16:03:06.819671334 +0100
@@ -2384,7 +2384,7 @@ case "${host}" in
 	;;
     i[34567]86-*-cygwin* | x86_64-*-cygwin*)
 	;;
-    i[34567]86-*-mingw* | x86_64-*-mingw*)
+    i[34567]86-*-mingw* | x86_64-*-mingw* | aarch64-*-mingw*)
 	;;
     i[34567]86-*-interix[3-9]*)
 	# Interix 3.x gcc -fpic/-fPIC options generate broken code.
@@ -4773,7 +4773,7 @@ else
   case $host in
     powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux* | \
     i?86*-*-elfiamcu | i?86*-*-gnu* | x86_64*-*-gnu* | \
-    i?86*-*-mingw* | x86_64*-*-mingw* | \
+    i?86*-*-mingw* | x86_64*-*-mingw* | aarch64*-*-mingw* | \
     i?86*-*-cygwin* | x86_64*-*-cygwin*)
       enable_decimal_float=yes
       ;;
diff -rupN gcc/libiberty/configure gcc.patched/libiberty/configure
--- gcc/libiberty/configure	2023-08-09 16:01:43.922580165 +0100
+++ gcc.patched/libiberty/configure	2023-08-09 16:03:06.827671439 +0100
@@ -5189,7 +5189,7 @@ case "${host}" in
 	;;
     i[34567]86-*-cygwin* | x86_64-*-cygwin*)
 	;;
-    i[34567]86-*-mingw* | x86_64-*-mingw*)
+    i[34567]86-*-mingw* | x86_64-*-mingw* | aarch64-*-mingw*)
 	;;
     i[34567]86-*-interix[3-9]*)
 	# Interix 3.x gcc -fpic/-fPIC options generate broken code.
</pre></body></html>