make-rules/shared-macros.mk
changeset 459 c7579764bc73
parent 454 1ef5e4f29411
child 477 068d10529156
--- a/make-rules/shared-macros.mk	Thu Aug 04 19:59:04 2011 -0700
+++ b/make-rules/shared-macros.mk	Fri Aug 05 09:14:45 2011 -0700
@@ -423,10 +423,20 @@
 # Control register usage for generated code.  SPARC ABI requires system
 # libraries not to use application registers.  x86 requires 'no%frameptr' at
 # x04 or higher.
-studio_XREGS.sparc =	-xregs=no%appl,float
+
+# We should just use -xregs but we need to workaround 7030022. Note
+# that we can't use the (documented) -Wc,-xregs workaround because
+# libtool really hates -Wc and thinks it should be -Wl. Instead
+# we use an (undocumented) option which actually happens to be what
+# CC would use.
+studio_XREGS.sparc =	-Qoption cg -xregs=no%appl
 studio_XREGS.i386 =	-xregs=no%frameptr
 studio_XREGS =		$(studio_XREGS.$(MACH))
 
+gcc_XREGS.sparc =	-mno-app-regs
+gcc_XREGS.i386 =
+gcc_XREGS =		$(gcc_XREGS.$(MACH))
+
 # Set data alignment on sparc to reasonable values, 8 byte alignment for 32 bit
 # objects and 16 byte alignment for 64 bit objects.  This is added to CFLAGS by
 # default.
@@ -479,6 +489,7 @@
 # should not be necessary to add CFLAGS to any environment other than the
 # configure environment.
 CFLAGS.gcc +=	$(gcc_OPT)
+CFLAGS.gcc +=	$(gcc_XREGS)
 
 
 # Build 32 or 64 bit objects.