diff mbox

[RFA] : cygming, darwin, freebsd: Build libgcc2 TCmode complex functions

Message ID AANLkTikdz++hMyYfU2KOtOWXeki+kreffo4zCD5O5RPT@mail.gmail.com
State New
Headers show

Commit Message

Uros Bizjak Sept. 1, 2010, 12:55 p.m. UTC
Hello!

Attached patch enables building of TCmode complex functions from
libgcc2 for cygwin, darwin and freebsd targets. The patch also removes
linux64.h defines since these are already defined in linux.h.

2010-09-01  Uros Bizjak  <ubizjak@gmail.com>

	PR target/45476
	* config/i386/darwin.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
	New defines.
	* config/i386/freebsd.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
	Ditto.
	* config/i386/linux64.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
	Remove defines.
	* config/i386/cygming.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
	Move from ...
	* config/i386/mingw32.h: ... here.

Patch was bootstrapped on x86_64-pc-linux-gnu. Can please relevant
target maintainers check if everything is OK on their targets?

Uros.

Comments

Kai Tietz Sept. 1, 2010, 1:08 p.m. UTC | #1
2010/9/1 Uros Bizjak <ubizjak@gmail.com>:
> Hello!
>
> Attached patch enables building of TCmode complex functions from
> libgcc2 for cygwin, darwin and freebsd targets. The patch also removes
> linux64.h defines since these are already defined in linux.h.
>
> 2010-09-01  Uros Bizjak  <ubizjak@gmail.com>
>
>        PR target/45476
>        * config/i386/darwin.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
>        New defines.
>        * config/i386/freebsd.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
>        Ditto.
>        * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
>        Remove defines.
>        * config/i386/cygming.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
>        Move from ...
>        * config/i386/mingw32.h: ... here.
>
> Patch was bootstrapped on x86_64-pc-linux-gnu. Can please relevant
> target maintainers check if everything is OK on their targets?
>
> Uros.
>

Mingw parts is ok.

Kai
Iain Sandoe Sept. 1, 2010, 1:44 p.m. UTC | #2
On 1 Sep 2010, at 13:55, Uros Bizjak wrote:

> Attached patch enables building of TCmode complex functions from
> libgcc2 for cygwin, darwin and freebsd targets. The patch also removes
> linux64.h defines since these are already defined in linux.h.
>
> 2010-09-01  Uros Bizjak  <ubizjak@gmail.com>
>
> 	PR target/45476
> 	* config/i386/darwin.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT,  
> TF_SIZE):
> 	New defines.
> 	* config/i386/freebsd.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT,  
> TF_SIZE):
> 	Ditto.
> 	* config/i386/linux64.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT,  
> TF_SIZE):
> 	Remove defines.
> 	* config/i386/cygming.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT,  
> TF_SIZE):
> 	Move from ...
> 	* config/i386/mingw32.h: ... here.
>
> Patch was bootstrapped on x86_64-pc-linux-gnu. Can please relevant
> target maintainers check if everything is OK on their targets?


darwin;

this seems to conflict with LIB2_SIDITI_CONV_FUNCS  (set in i386/t- 
darwin) [multiply defined symbols => bootstrap fail]

AFAICT from grep, LIB2_SIDITI_CONV_FUNCS is only used by darwin and  
mips.

It's not a simple matter of removing it ...
Perhaps an additional conditional in libgcc/Makefile.in will solve  
this - I'll try and take a look later.

(not that I can approve or otherwise in any case :-))

Iain
Uros Bizjak Sept. 1, 2010, 5:27 p.m. UTC | #3
On Wed, 2010-09-01 at 14:44 +0100, IainS wrote:
> On 1 Sep 2010, at 13:55, Uros Bizjak wrote:
> 
> > Attached patch enables building of TCmode complex functions from
> > libgcc2 for cygwin, darwin and freebsd targets. The patch also removes
> > linux64.h defines since these are already defined in linux.h.

> 
> darwin;
> 
> this seems to conflict with LIB2_SIDITI_CONV_FUNCS  (set in i386/t- 
> darwin) [multiply defined symbols => bootstrap fail]
> 
> AFAICT from grep, LIB2_SIDITI_CONV_FUNCS is only used by darwin and  
> mips.
> 
> It's not a simple matter of removing it ...
> Perhaps an additional conditional in libgcc/Makefile.in will solve  
> this - I'll try and take a look later.

It looks that you should enable softfp_exclude_libgcc2 := y to filter
out old functions. However, I'd investigate why darwin needs
LIB2_SIDITI_CONV_FUNCS in the first place...

Uros.
Gerald Pfeifer Sept. 1, 2010, 10:40 p.m. UTC | #4
On Wed, 1 Sep 2010, Uros Bizjak wrote:
> 	* config/i386/freebsd.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
> 	Ditto.

I am happy to confirm that with this patch the example from comment #2
of PR 45476 now compiles, where without it I could reproduce the failures
listed there.

The testsuite is still running, but so far things look good.  Do you
expect to see any new PASSes?

Gerald
Uros Bizjak Sept. 2, 2010, 5:08 a.m. UTC | #5
On Thu, 2010-09-02 at 00:40 +0200, Gerald Pfeifer wrote:
> On Wed, 1 Sep 2010, Uros Bizjak wrote:
> > 	* config/i386/freebsd.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
> > 	Ditto.
> 
> I am happy to confirm that with this patch the example from comment #2
> of PR 45476 now compiles, where without it I could reproduce the failures
> listed there.

Thanks!  I have committed freebsd.h part of the patch to SVN mainline.

> The testsuite is still running, but so far things look good.  Do you
> expect to see any new PASSes?

No, since TCmode tests in gcc.target/i386 are currently limited to linux
targets only.  I will enable them for other __float128 capable targets
once Darwin catches up with TCmode libgcc2 support.

Uros.
Dave Korn Sept. 3, 2010, 12:18 a.m. UTC | #6
On 01/09/2010 23:40, Gerald Pfeifer wrote:
> On Wed, 1 Sep 2010, Uros Bizjak wrote:
>> 	* config/i386/freebsd.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE):
>> 	Ditto.
> 
> I am happy to confirm that with this patch the example from comment #2
> of PR 45476 now compiles, where without it I could reproduce the failures
> listed there.
> 
> The testsuite is still running, but so far things look good.  Do you
> expect to see any new PASSes?

  I'm running the testsuite on cygwin with this patch, and it appears to be
working just fine; thank you Uros!

    cheers,
      DaveK
diff mbox

Patch

Index: config/i386/cygming.h
===================================================================
--- config/i386/cygming.h	(revision 163732)
+++ config/i386/cygming.h	(working copy)
@@ -296,6 +296,12 @@ 
 #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
   asm_output_aligned_bss ((FILE), (DECL), (NAME), (SIZE), (ALIGN))
 
+/* Put all *tf routines in libgcc.  */
+#undef LIBGCC2_HAS_TF_MODE
+#define LIBGCC2_HAS_TF_MODE 1
+#define LIBGCC2_TF_CEXT q
+#define TF_SIZE 113
+
 /* Output function declarations at the end of the file.  */
 #undef TARGET_ASM_FILE_END
 #define TARGET_ASM_FILE_END i386_pe_file_end
Index: config/i386/linux64.h
===================================================================
--- config/i386/linux64.h	(revision 163732)
+++ config/i386/linux64.h	(working copy)
@@ -99,12 +99,6 @@ 
 #define MULTILIB_DEFAULTS { "m32" }
 #endif
 
-/* Put all *tf routines in libgcc.  */
-#undef LIBGCC2_HAS_TF_MODE
-#define LIBGCC2_HAS_TF_MODE 1
-#define LIBGCC2_TF_CEXT q
-#define TF_SIZE 113
-
 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
 
 #define MD_UNWIND_SUPPORT "config/i386/linux-unwind.h"
Index: config/i386/darwin.h
===================================================================
--- config/i386/darwin.h	(revision 163732)
+++ config/i386/darwin.h	(working copy)
@@ -148,6 +148,12 @@ 
 
 #define SHIFT_DOUBLE_OMITS_COUNT 0
 
+/* Put all *tf routines in libgcc.  */
+#undef LIBGCC2_HAS_TF_MODE
+#define LIBGCC2_HAS_TF_MODE 1
+#define LIBGCC2_TF_CEXT q
+#define TF_SIZE 113
+
 #undef TARGET_ASM_FILE_END
 #define TARGET_ASM_FILE_END darwin_file_end
 
Index: config/i386/mingw32.h
===================================================================
--- config/i386/mingw32.h	(revision 163732)
+++ config/i386/mingw32.h	(working copy)
@@ -135,14 +135,6 @@ 
 #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.  */
Index: config/i386/freebsd.h
===================================================================
--- config/i386/freebsd.h	(revision 163732)
+++ config/i386/freebsd.h	(working copy)
@@ -139,5 +139,11 @@ 
 #undef TARGET_96_ROUND_53_LONG_DOUBLE
 #define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT)
 
+/* Put all *tf routines in libgcc.  */
+#undef LIBGCC2_HAS_TF_MODE
+#define LIBGCC2_HAS_TF_MODE 1
+#define LIBGCC2_TF_CEXT q
+#define TF_SIZE 113
+
 /* Static stack checking is supported by means of probes.  */
 #define STACK_CHECK_STATIC_BUILTIN 1