From 0ed08739f44116eaef46b552df923959ba945afa Mon Sep 17 00:00:00 2001 From: Costas Argyris Date: Sun, 26 Mar 2023 11:32:13 +0100 Subject: [PATCH] Extend UTF-8 support to the 32-bit mingw host. Prevent any name mangling in HOST_EXTRA_OBJS_SYMBOL such that the linker always finds it by that name. Also add the .manifest file as an explicit dependency in the make rule such that the object gets re-built if it changes. --- gcc/config.host | 5 +++-- gcc/config/i386/sym-mingw32.cc | 4 +++- gcc/config/i386/x-mingw32-utf8 | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/gcc/config.host b/gcc/config.host index 4abb32ad73d..5df85752ed4 100644 --- a/gcc/config.host +++ b/gcc/config.host @@ -232,10 +232,11 @@ case ${host} in ;; i[34567]86-*-mingw32*) host_xm_file=i386/xm-mingw32.h - host_xmake_file="${host_xmake_file} i386/x-mingw32" + host_xmake_file="${host_xmake_file} i386/x-mingw32 i386/x-mingw32-utf8" host_exeext=.exe out_host_hook_obj=host-mingw32.o - host_extra_gcc_objs="${host_extra_gcc_objs} driver-mingw32.o" + host_extra_objs="${host_extra_objs} utf8-mingw32.o" + host_extra_gcc_objs="${host_extra_gcc_objs} driver-mingw32.o utf8rc-mingw32.o" host_lto_plugin_soname=liblto_plugin.dll ;; x86_64-*-mingw*) diff --git a/gcc/config/i386/sym-mingw32.cc b/gcc/config/i386/sym-mingw32.cc index f369698abc4..2f8dee6c1ec 100644 --- a/gcc/config/i386/sym-mingw32.cc +++ b/gcc/config/i386/sym-mingw32.cc @@ -1 +1,3 @@ -char HOST_EXTRA_OBJS_SYMBOL; +/* Prevent any name mangling to make sure that the linker + will always find the symbol. */ +char HOST_EXTRA_OBJS_SYMBOL asm ("HOST_EXTRA_OBJS_SYMBOL"); diff --git a/gcc/config/i386/x-mingw32-utf8 b/gcc/config/i386/x-mingw32-utf8 index 9de963d7965..cf5c3db3d8b 100644 --- a/gcc/config/i386/x-mingw32-utf8 +++ b/gcc/config/i386/x-mingw32-utf8 @@ -27,7 +27,8 @@ # The resulting .o file gets added to host_extra_gcc_objs in # config.host for x86_64-*-mingw* host and gets linked into # the driver as a .o file, so it's lack of symbols is OK. -utf8rc-mingw32.o : $(srcdir)/config/i386/utf8-mingw32.rc +utf8rc-mingw32.o : $(srcdir)/config/i386/utf8-mingw32.rc \ + $(srcdir)/config/i386/winnt-utf8.manifest $(WINDRES) $< $@ # Create an object file that just exports the global symbol -- 2.30.2