diff mbox

[ppc/darwin] fix vec unwinding part 1.

Message ID 8D469478-C9B0-446C-A7DA-B5C5707E738F@sandoe-acoustics.co.uk
State New
Headers show

Commit Message

Iain Sandoe Nov. 29, 2011, 2:02 p.m. UTC
The following fails:

FAIL: g++.dg/eh/simd-3.C -std=gnu++98 execution test
FAIL: g++.dg/eh/simd-3.C -std=gnu++11 execution test
FAIL: g++.dg/eh/simd-4.C -std=gnu++98 execution test
FAIL: g++.dg/eh/simd-4.C -std=gnu++11 execution test

are the tip of an "unwinding doesn't work with vectors" iceberg ...

and is caused by the unwinder having the wrong size for vec registers
- which,  is caused by the unwinder being built with altivec disabled
- which is caused by the unwinder being built with -mmacosx-version- 
min=10.4 forced on.

This strategy was (part of a) solution for the situation that system  
libraries might be installed on either G4 or G3 hardware.

A (low priority) TODO is to provide an updated solution to that  
desideratum - low priority since it affects a vanishingly small number  
of potential Users.

The fix for the fails (and to make unwinding with vectors work on  
Darwin9)  is to build the unwinder 'native'.

(as part of the TODO above - we also need to figure a way to get the  
register sizes right for Darwin 8).

OK for trunk?
Iain

libgcc:

	* config/rs6000/t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): Remove
	-mmacosx-version-min=10.4.
	(HOST_LIBGCC2_CFLAGS): Likewise.
	(LIB2ADD): Correct whitespace.
	(LIB2ADD_ST): Add comment.

Comments

Paolo Bonzini Nov. 30, 2011, 7:44 a.m. UTC | #1
On 11/29/2011 03:02 PM, Iain Sandoe wrote:
> The following fails:
>
> FAIL: g++.dg/eh/simd-3.C -std=gnu++98 execution test
> FAIL: g++.dg/eh/simd-3.C -std=gnu++11 execution test
> FAIL: g++.dg/eh/simd-4.C -std=gnu++98 execution test
> FAIL: g++.dg/eh/simd-4.C -std=gnu++11 execution test
>
> are the tip of an "unwinding doesn't work with vectors" iceberg ...
>
> and is caused by the unwinder having the wrong size for vec registers
> - which, is caused by the unwinder being built with altivec disabled
> - which is caused by the unwinder being built with
> -mmacosx-version-min=10.4 forced on.
>
> This strategy was (part of a) solution for the situation that system
> libraries might be installed on either G4 or G3 hardware.
>
> A (low priority) TODO is to provide an updated solution to that
> desideratum - low priority since it affects a vanishingly small number
> of potential Users.
>
> The fix for the fails (and to make unwinding with vectors work on
> Darwin9) is to build the unwinder 'native'.
>
> (as part of the TODO above - we also need to figure a way to get the
> register sizes right for Darwin 8).
>
> OK for trunk?
> Iain
>
> libgcc:
>
> * config/rs6000/t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): Remove
> -mmacosx-version-min=10.4.
> (HOST_LIBGCC2_CFLAGS): Likewise.
> (LIB2ADD): Correct whitespace.
> (LIB2ADD_ST): Add comment.
>
>

Looks good.

Paolo
diff mbox

Patch

Index: libgcc/config/rs6000/t-darwin
===================================================================
--- libgcc/config/rs6000/t-darwin	(revision 181772)
+++ libgcc/config/rs6000/t-darwin	(working copy)
@@ -1,23 +1,22 @@ 
-DARWIN_EXTRA_CRT_BUILD_CFLAGS = -mlongcall -mmacosx-version-min=10.4
+DARWIN_EXTRA_CRT_BUILD_CFLAGS = -mlongcall
 
 crt2.o: $(srcdir)/config/rs6000/darwin-crt2.c
 	$(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $<
 
 LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \
 	  $(srcdir)/config/darwin-64.c \
-	  $(srcdir)/config/rs6000/darwin-fpsave.S  \
-	  $(srcdir)/config/rs6000/darwin-gpsave.S  \
+	  $(srcdir)/config/rs6000/darwin-fpsave.S \
+	  $(srcdir)/config/rs6000/darwin-gpsave.S \
 	  $(srcdir)/config/rs6000/darwin-world.S \
 	  $(srcdir)/config/rs6000/ppc64-fp.c
 
+# ??? Is darwin-vecsave.S actually ever used? - not by recent FSF compilers.
 LIB2ADD_ST = \
 	  $(srcdir)/config/rs6000/darwin-vecsave.S
 
 # The .S files above are designed to run on all processors, even though
 # they use AltiVec instructions.
 # -Wa is used because -force_cpusubtype_ALL doesn't work with -dynamiclib.
-# -mmacosx-version-min=10.4 is used to provide compatibility for code from
-# earlier OSX versions.
-HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL -mmacosx-version-min=10.4
+HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL
 
 LIB2ADDEH += $(srcdir)/config/rs6000/darwin-fallback.c