When libgcc is built on Darwin, it is usually built for the earliest potential target (Darwin8, 10.4). Build for that revision default to assuming that the processor might be G3 (without vector ops) and there is an outlined function used for save/restore that checks whether the processor is G3 or G4+ at run- time. However, the unwinder itself needs to be built with the assumption of vector usage so that the relevant outlined functions are called.
Tested on powerpc-darwin9, applied to mainline. thanks Iain 2019-06-06 Iain Sandoe <i...@sandoe.co.uk> * config/rs6000/t-darwin: Ensure that the unwinder is built with altivec enabled. diff --git a/libgcc/config/rs6000/t-darwin b/libgcc/config/rs6000/t-darwin index abb41fc..61da0bd 100644 --- a/libgcc/config/rs6000/t-darwin +++ b/libgcc/config/rs6000/t-darwin @@ -20,4 +20,7 @@ LIB2ADD_ST = \ # earlier OSX versions. HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL -mmacosx-version-min=10.4 +unwind-dw2_s.o: HOST_LIBGCC2_CFLAGS += -maltivec +unwind-dw2.o: HOST_LIBGCC2_CFLAGS += -maltivec + LIB2ADDEH += $(srcdir)/config/rs6000/darwin-fallback.c