diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/mingw32.h | 19 |
2 files changed, 22 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 46ab4e9..ec1ad17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-11-09 Alexandre Oliva <oliva@adacore.com> + + * config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Adjust + for non-w64 x86_64 biarch. + 2018-11-09 Alexandre Oliva <aoliva@redhat.com> PR rtl-optimization/86438 diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h index c9d8a7a..5759d8d 100644 --- a/gcc/config/i386/mingw32.h +++ b/gcc/config/i386/mingw32.h @@ -114,11 +114,26 @@ 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 +/* This is used without --enable-large-address-aware. */ +# define LINK_SPEC_LARGE_ADDR_AWARE "" +#elif ! TARGET_BI_ARCH +/* This is used on i686-pc-mingw32 with --enable-large-address-aware. */ # define LINK_SPEC_LARGE_ADDR_AWARE \ "%{!shared:%{!mdll:--large-address-aware}}" +#elif TARGET_64BIT_DEFAULT +/* This is used on x86_64-pc-mingw32 with --enable-large-address-aware. + ??? It probably doesn't work, because the linker emulation defaults + to i386pep, the 64-bit mode that does not support + --large-address-aware, and x86_64-pc-mingw32 does not override the + emulation to i386pe for -m32, unlike x86_64-w64-mingw32. */ +# define LINK_SPEC_LARGE_ADDR_AWARE \ + "%{!shared:%{!mdll:%{m32:--large-address-aware}}}" #else -# define LINK_SPEC_LARGE_ADDR_AWARE "" +/* This would only be used if someone introduced a biarch + configuration that defaulted to 32-bit. */ +# define LINK_SPEC_LARGE_ADDR_AWARE \ + "%{!shared:%{!mdll:%{!m64:--large-address-aware}}}" #endif #define LINK_SPEC "%{mwindows:--subsystem windows} \ |