On Oct 12, 2018, Alexandre Oliva <ol...@adacore.com> wrote: > * config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Define, > based on MINGW_DEFAULT_LARGE_ADDR_AWARE. > (LINK_SPEC): Insert it. > * config/i386/mingw-264.h: Likewise. ^ s/2/w/, fixing...
Now, it occurred to me that it is possible for biarch64.h to be included, thus enabling 64-bit mode even by default, without including mingw-w64.h. I had assumed in my patch that this was not supposed to happen, but configuring with --target=x86_64-mingw32 shows it does happen, and such a toolchain may (after my patch) pass --large-address-aware to the linker, even when linking -m64 binaries. Is that target configuration really supposed to be different from x86_64-w64-mingw32 (or however else the w64 configuration is supposed to be spelled), or should x86_64-mingw32 also use mingw-w64.h so that they're equivalent? It seems to me that we need a further patch like this: diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h index c9d8a7a31f30..848eb8430b30 100644 --- a/gcc/config/i386/mingw32.h +++ b/gcc/config/i386/mingw32.h @@ -114,11 +114,17 @@ along with GCC; see the file COPYING3. If not see #define SUBTARGET_EXTRA_SPECS \ { "shared_libgcc_undefs", SHARED_LIBGCC_UNDEFS_SPEC } -#if MINGW_DEFAULT_LARGE_ADDR_AWARE +#if ! MINGW_DEFAULT_LARGE_ADDR_AWARE +# define LINK_SPEC_LARGE_ADDR_AWARE "" +#elif ! TARGET_BI_ARCH # define LINK_SPEC_LARGE_ADDR_AWARE \ "%{!shared:%{!mdll:--large-address-aware}}" +#elif TARGET_64BIT_DEFAULT +# define LINK_SPEC_LARGE_ADDR_AWARE \ + "%{!shared:%{!mdll:%{m32:--large-address-aware}}}" #else -# define LINK_SPEC_LARGE_ADDR_AWARE "" +# define LINK_SPEC_LARGE_ADDR_AWARE \ + "%{!shared:%{!mdll:%{!m64:--large-address-aware}}}" #endif #define LINK_SPEC "%{mwindows:--subsystem windows} \ But then, even this wouldn't necessarily do the right thing if e.g. biarchx32.h is in effect. Is that even possible? Or can we just leave mingw32.h as is, considering that (AFAIK) -m64 *is* --large-address-aware, it just has that enabled by default? Thanks in advance for your guidance, -- Alexandre Oliva, freedom fighter https://FSFLA.org/blogs/lxo Be the change, be Free! FSF Latin America board member GNU Toolchain Engineer Free Software Evangelist Hay que enGNUrecerse, pero sin perder la terGNUra jamás-GNUChe