From f0375e7861101189c0f9c6159ff7d0f9fd61c84e Mon Sep 17 00:00:00 2001 From: Kai Tietz Date: Mon, 22 Jun 2009 16:04:19 +0200 Subject: [PATCH] ChangeLog for gcc 2009-06-22 Kai Tietz * config.gcc: Add for x86 and x64 mingw targets t-fprules-soft and t-softfp support. * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Enable TFmode. (LIBGCC2_TF_CEXT): Define. (TF_SIZE): Define. ChangeLog for libgcc 2009-06-22 Kai Tietz * config.host: Add soft emulation for x86 and x64 mingw targets. * config/i386/64/_divtc3.c: Disable for mingw targets usage of .symver assembly symbol. * config/i386/64/_multc3.c: Likewise. * config/i386/64/_powitf2.c: Likewise. * config/i386/64/eqtf2.c: Likewise. * config/i386/64/getf2.c: Likewise. * config/i386/64/letf2.c: Likewise. * config/i386/64/letf2.c: Likewise. * config/i386/64/sfp-machine.h (_FP_W_TYPE): Define it for x64 mingw target as unsigned long long. (_FP_WS_TYPE): Define it for x64 mingw target as signed long long. (_FP_I_TYPE): Define it for x64 mingw target as long long. From-SVN: r148798 --- gcc/config.gcc | 2 +- gcc/config/i386/mingw32.h | 8 ++++++++ libgcc/config.host | 2 +- libgcc/config/i386/64/_divtc3.c | 2 ++ libgcc/config/i386/64/_multc3.c | 2 ++ libgcc/config/i386/64/_powitf2.c | 2 ++ libgcc/config/i386/64/eqtf2.c | 2 ++ libgcc/config/i386/64/getf2.c | 2 ++ libgcc/config/i386/64/letf2.c | 2 ++ libgcc/config/i386/64/sfp-machine.h | 13 ++++++++++--- 10 files changed, 32 insertions(+), 5 deletions(-) diff --git a/gcc/config.gcc b/gcc/config.gcc index 7b599173371..0105fcbd484 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3136,7 +3136,7 @@ case ${target} in i[34567]86-*-linux* | x86_64-*-linux* | i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux" ;; - i[34567]86-*-cygwin*) + i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*) tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp" ;; ia64*-*-linux*) diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h index 746d7d105da..6043e24cede 100644 --- a/gcc/config/i386/mingw32.h +++ b/gcc/config/i386/mingw32.h @@ -123,6 +123,14 @@ along with GCC; see the file COPYING3. If not see #define STANDARD_STARTFILE_PREFIX_2 "" #endif +/* Put all *tf routines in libgcc. */ +#undef LIBGCC2_HAS_TF_MODE +#define LIBGCC2_HAS_TF_MODE 1 +#undef LIBGCC2_TF_CEXT +#define LIBGCC2_TF_CEXT q +#undef TF_SIZE +#define TF_SIZE 113 + /* Output STRING, a string representing a filename, to FILE. We canonicalize it to be in Unix format (backslashes are replaced forward slashes. */ diff --git a/libgcc/config.host b/libgcc/config.host index 25879b1bc68..bdc1b34bd3a 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -571,7 +571,7 @@ case ${host} in i[34567]86-*-darwin* | x86_64-*-darwin* | \ i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \ i[34567]86-*-linux* | x86_64-*-linux* | \ - i[34567]86-*-cygwin*) + i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*) if test "${host_address}" = 32; then tmake_file="${tmake_file} t-softfp i386/${host_address}/t-fprules-softfp" fi diff --git a/libgcc/config/i386/64/_divtc3.c b/libgcc/config/i386/64/_divtc3.c index 57ee350b7cd..0095d245ede 100644 --- a/libgcc/config/i386/64/_divtc3.c +++ b/libgcc/config/i386/64/_divtc3.c @@ -9,6 +9,8 @@ #undef __divtc3 extern __typeof__ (__divtc3_shared) __divtc3_compat __attribute__((alias ("__divtc3_shared"))); +#ifndef _WIN32 asm (".symver __divtc3_compat,__divtc3@GCC_4.0.0"); asm (".symver __divtc3_shared,__divtc3@@GCC_4.3.0"); #endif +#endif diff --git a/libgcc/config/i386/64/_multc3.c b/libgcc/config/i386/64/_multc3.c index 49141a9384f..08b5ee451d0 100644 --- a/libgcc/config/i386/64/_multc3.c +++ b/libgcc/config/i386/64/_multc3.c @@ -9,6 +9,8 @@ #undef __multc3 extern __typeof__ (__multc3_shared) __multc3_compat __attribute__((alias ("__multc3_shared"))); +#ifndef _WIN32 asm (".symver __multc3_compat,__multc3@GCC_4.0.0"); asm (".symver __multc3_shared,__multc3@@GCC_4.3.0"); #endif +#endif diff --git a/libgcc/config/i386/64/_powitf2.c b/libgcc/config/i386/64/_powitf2.c index 3bc3c904de7..e8360156b5b 100644 --- a/libgcc/config/i386/64/_powitf2.c +++ b/libgcc/config/i386/64/_powitf2.c @@ -9,6 +9,8 @@ #undef __powitf2 extern __typeof__ (__powitf2_shared) __powitf2_compat __attribute__((alias ("__powitf2_shared"))); +#ifndef _WIN32 asm (".symver __powitf2_compat,__powitf2@GCC_4.0.0"); asm (".symver __powitf2_shared,__powitf2@@GCC_4.3.0"); #endif +#endif diff --git a/libgcc/config/i386/64/eqtf2.c b/libgcc/config/i386/64/eqtf2.c index d9baba689be..785c42ad5c6 100644 --- a/libgcc/config/i386/64/eqtf2.c +++ b/libgcc/config/i386/64/eqtf2.c @@ -8,6 +8,8 @@ #undef __netf2 strong_alias (__netf2_shared, __netf2_compat); +#ifndef _WIN32 asm (".symver __netf2_compat,__netf2@GCC_3.0"); asm (".symver __netf2_shared,__netf2@@GCC_4.3.0"); #endif +#endif diff --git a/libgcc/config/i386/64/getf2.c b/libgcc/config/i386/64/getf2.c index 30885cc0caf..280447c1e83 100644 --- a/libgcc/config/i386/64/getf2.c +++ b/libgcc/config/i386/64/getf2.c @@ -8,6 +8,8 @@ #undef __gttf2 strong_alias (__gttf2_shared, __gttf2_compat); +#ifndef _WIN32 asm (".symver __gttf2_compat,__gttf2@GCC_3.0"); asm (".symver __gttf2_shared,__gttf2@@GCC_4.3.0"); #endif +#endif diff --git a/libgcc/config/i386/64/letf2.c b/libgcc/config/i386/64/letf2.c index 231f981c84c..81e0881c844 100644 --- a/libgcc/config/i386/64/letf2.c +++ b/libgcc/config/i386/64/letf2.c @@ -8,6 +8,8 @@ #undef __lttf2 strong_alias (__lttf2_shared, __lttf2_compat); +#ifndef _WIN32 asm (".symver __lttf2_compat,__lttf2@GCC_3.0"); asm (".symver __lttf2_shared,__lttf2@@GCC_4.3.0"); #endif +#endif diff --git a/libgcc/config/i386/64/sfp-machine.h b/libgcc/config/i386/64/sfp-machine.h index 190e3cb0e81..5adf6dbbaa4 100644 --- a/libgcc/config/i386/64/sfp-machine.h +++ b/libgcc/config/i386/64/sfp-machine.h @@ -1,7 +1,14 @@ #define _FP_W_TYPE_SIZE 64 -#define _FP_W_TYPE unsigned long -#define _FP_WS_TYPE signed long -#define _FP_I_TYPE long + +#ifdef _WIN64 + #define _FP_W_TYPE unsigned long long + #define _FP_WS_TYPE signed long long + #define _FP_I_TYPE long long +#else + #define _FP_W_TYPE unsigned long + #define _FP_WS_TYPE signed long + #define _FP_I_TYPE long +#endif typedef int TItype __attribute__ ((mode (TI))); typedef unsigned int UTItype __attribute__ ((mode (TI))); -- 2.30.2