diff options
author | Iain Sandoe <iain@sandoe.co.uk> | 2019-11-01 20:38:37 +0000 |
---|---|---|
committer | Iain Sandoe <iains@gcc.gnu.org> | 2019-11-01 20:38:37 +0000 |
commit | f8d58fbe5700a95d8a0738b620f6f3f1ba9dab51 (patch) | |
tree | 77a7ed91f73cde2f76f8bfe3ffbc64f466333bc6 | |
parent | 092a2f2a6434aaaefe884e1196ebc289da2b5503 (diff) | |
download | gcc-f8d58fbe5700a95d8a0738b620f6f3f1ba9dab51.zip gcc-f8d58fbe5700a95d8a0738b620f6f3f1ba9dab51.tar.gz gcc-f8d58fbe5700a95d8a0738b620f6f3f1ba9dab51.tar.bz2 |
[Darwin, PPC] Move the out of line register save/restore to an endfile.
272660
We have been including this in libgcc, which means that we have to append
-lgcc even when using shared libgcc. In preparation for revision of libgcc
split this into an endfile.
272759 Correct whitespace in specs.
gcc/
2019-11-01 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline
2019-06-27 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the
spec.
Backport from mainline
2019-06-25 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/darwin.h (ENDFILE_SPEC): New.
libgcc/
2019-11-01 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-25 Iain Sandoe <iain@sandoe.co.uk>
* config.host: Add libef_ppc.a to the extra files for powerpc-darwin.
* config/rs6000/t-darwin: (PPC_ENDFILE_SRC, PPC_ENDFILE_OBJS): New.
Build objects for the out of line save/restore register functions
so that they can be used for any supported Darwin version.
* config/t-darwin: Default the build Darwin version to Darwin8
(MacOS 10.4).
From-SVN: r277724
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/config/rs6000/darwin.h | 5 | ||||
-rw-r--r-- | libgcc/ChangeLog | 12 | ||||
-rw-r--r-- | libgcc/config.host | 4 | ||||
-rw-r--r-- | libgcc/config/rs6000/t-darwin | 42 | ||||
-rw-r--r-- | libgcc/config/t-darwin | 2 |
6 files changed, 67 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be2913b..f1b830b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,19 @@ 2019-11-01 Iain Sandoe <iain@sandoe.co.uk> Backport from mainline + 2019-06-27 Iain Sandoe <iain@sandoe.co.uk> + + * config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the + spec. + + Backport from mainline + 2019-06-25 Iain Sandoe <iain@sandoe.co.uk> + + * config/rs6000/darwin.h (ENDFILE_SPEC): New. + +2019-11-01 Iain Sandoe <iain@sandoe.co.uk> + + Backport from mainline 2019-06-18 Iain Sandoe <iain@sandoe.co.uk> * config/darwin.c (darwin_emit_unwind_label): New default to false. diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h index 58a2b81..4a9f67f 100644 --- a/gcc/config/rs6000/darwin.h +++ b/gcc/config/rs6000/darwin.h @@ -133,6 +133,11 @@ #define DARWIN_CRT2_SPEC \ "%{!m64:%:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s)}" +/* The PPC regs save/restore functions are leaves and could, conceivably + be used by the tm destructor. */ +#undef ENDFILE_SPEC +#define ENDFILE_SPEC TM_DESTRUCTOR " -lef_ppc" + #undef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS \ DARWIN_EXTRA_SPECS \ diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 67d064a..129e937 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,15 @@ +2019-11-01 Iain Sandoe <iain@sandoe.co.uk> + + Backport from mainline. + 2019-06-25 Iain Sandoe <iain@sandoe.co.uk> + + * config.host: Add libef_ppc.a to the extra files for powerpc-darwin. + * config/rs6000/t-darwin: (PPC_ENDFILE_SRC, PPC_ENDFILE_OBJS): New. + Build objects for the out of line save/restore register functions + so that they can be used for any supported Darwin version. + * config/t-darwin: Default the build Darwin version to Darwin8 + (MacOS 10.4). + 2019-09-04 Iain Sandoe <iain@sandoe.co.uk> Backport from mainline. diff --git a/libgcc/config.host b/libgcc/config.host index 8beb492..e38f0c2 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -993,11 +993,11 @@ powerpc-*-darwin*) ;; esac tmake_file="$tmake_file rs6000/t-ibm-ldouble" - extra_parts="$extra_parts crt2.o" + extra_parts="$extra_parts crt2.o libef_ppc.a" ;; powerpc64-*-darwin*) tmake_file="$tmake_file rs6000/t-darwin64 rs6000/t-ibm-ldouble" - extra_parts="$extra_parts crt2.o" + extra_parts="$extra_parts crt2.o libef_ppc.a" ;; powerpc*-*-freebsd*) tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp" diff --git a/libgcc/config/rs6000/t-darwin b/libgcc/config/rs6000/t-darwin index 61da0bd..0c238b7 100644 --- a/libgcc/config/rs6000/t-darwin +++ b/libgcc/config/rs6000/t-darwin @@ -3,23 +3,49 @@ DARWIN_EXTRA_CRT_BUILD_CFLAGS = -mlongcall -mmacosx-version-min=10.4 crt2.o: $(srcdir)/config/rs6000/darwin-crt2.c $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $< +# The outlined register save/restore functions need to run anywhere, and +# they must be leaf functions suitable for use in an endfile. + +PPC_ENDFILE_SRC = \ + $(srcdir)/config/rs6000/darwin-gpsave.S \ + $(srcdir)/config/rs6000/darwin-fpsave.S \ + $(srcdir)/config/rs6000/darwin-vecsave.S + +PPC_ENDFILE_OBJS = \ + darwin-gpsave.o \ + darwin-fpsave.o \ + darwin-vecsave.o + +darwin-gpsave.o: $(srcdir)/config/rs6000/darwin-gpsave.S + $(crt_compile) -mmacosx-version-min=10.1 -c $< + +darwin-fpsave.o: $(srcdir)/config/rs6000/darwin-fpsave.S + $(crt_compile) -mmacosx-version-min=10.1 -c $< + +darwin-vecsave.o: $(srcdir)/config/rs6000/darwin-vecsave.S + $(crt_compile) -mmacosx-version-min=10.1 -c $< + +# We build these into a library, so that they are only linked as needed and not +# forced into every object. + +libef_ppc.a: $(PPC_ENDFILE_OBJS) + $(AR_CREATE_FOR_TARGET) $@ $(PPC_ENDFILE_OBJS) + $(RANLIB_FOR_TARGET) $@ + 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-world.S \ $(srcdir)/config/rs6000/ppc64-fp.c -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 + +# Although the default for 10.4 is G3, we need the unwinder to be built +# with vector support so that the "save/rest_world" outlined functions are +# correctly invoked. unwind-dw2_s.o: HOST_LIBGCC2_CFLAGS += -maltivec unwind-dw2.o: HOST_LIBGCC2_CFLAGS += -maltivec diff --git a/libgcc/config/t-darwin b/libgcc/config/t-darwin index 13ca6ed..8ca61d0 100644 --- a/libgcc/config/t-darwin +++ b/libgcc/config/t-darwin @@ -1,6 +1,6 @@ # Set this as a minimum (unless overriden by arch t-files) since it's a # reasonable lowest common denominator that works for all our archs. -HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.5 +HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.4 crt3.o: $(srcdir)/config/darwin-crt3.c $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $< |