This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] FreeBSD SPARC allow target to be set via -mcpu and enable TLS


Hi,

the following patch changes the GCC configuration for FreeBSD SPARC
(we only support 64-bit v9 there) so that the target CPU type may
be set via -mcpu instead of limiting to the hardcoded equivalent of
-mcpu=ultrasparc and TLS support is enabled if available. Both changes
are also present in the GCC version we ship as system compiler (the
former change actually since 3 years) and additionally have been
regression tested on sparc64-portbld-freebsd9.0.

I'm asking for review and the patch to be applied HEAD and the 4.6
branch once 4.6.0 is released. Gerald (CC'ed) is willing to apply it
for me.

Regards,
Marius

2011-03-22  Marius Strobl <marius@FreeBSD.org>

	* config/sparc/freebsd.h (CPP_CPU64_DEFAULT_SPEC): Replace with...
	(FBSD_TARGET_CPU_CPP_BUILTINS): ...this.
	(TARGET_GNU_TLS, TARGET_SUN_TLS): Define.

Index: config/sparc/freebsd.h
===================================================================
--- config/sparc/freebsd.h	(revision 170921)
+++ config/sparc/freebsd.h	(working copy)
@@ -24,11 +24,19 @@ along with GCC; see the file COPYING3.  If not see
   { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
 
 /* FreeBSD needs the platform name (sparc64) defined.
-   Emacs needs to know if the arch is 64 or 32-bits.  */
+   Emacs etc needs to know if the arch is 64 or 32-bits.
+   This also selects which targets are available via -mcpu.  */
 
-#undef  CPP_CPU64_DEFAULT_SPEC
-#define CPP_CPU64_DEFAULT_SPEC \
-  "-D__sparc64__ -D__sparc_v9__ -D__sparcv9 -D__arch64__"
+#undef  FBSD_TARGET_CPU_CPP_BUILTINS
+#define FBSD_TARGET_CPU_CPP_BUILTINS()		\
+  do						\
+    {						\
+      builtin_define ("__sparc64__");		\
+      builtin_define ("__sparc__");		\
+      builtin_define ("__sparc_v9__");		\
+      builtin_define ("__sparcv9");		\
+    }						\
+  while (0)
 
 #undef ASM_SPEC
 #define ASM_SPEC "%{fpic|fPIC|fpie|fPIE:-K PIC} %(asm_cpu)"
@@ -152,6 +160,13 @@ along with GCC; see the file COPYING3.  If not see
 
 /* #define DWARF_OFFSET_SIZE PTR_SIZE */
 
+#ifdef HAVE_AS_TLS
+#undef TARGET_SUN_TLS
+#undef TARGET_GNU_TLS
+#define TARGET_SUN_TLS 0
+#define TARGET_GNU_TLS 1
+#endif
+
 #undef ENDFILE_SPEC
 #define ENDFILE_SPEC						\
   "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "	\


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]