[Darwin, PPC] Use Darwin9 bundle header for Rosetta builds.
authorIain Sandoe <iain@sandoe.co.uk>
Sat, 14 Dec 2019 08:25:02 +0000 (08:25 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Sat, 14 Dec 2019 08:25:02 +0000 (08:25 +0000)
On Darwin10 it's possible to make a 32b PPC build using the
'Rosetta' emulator.  However, these builds need to make use of
Darwin9 crts (for exes, dylibs and bundles).  This adds the
change to cater for bundles.

gcc/ChangeLog:

2019-12-14  Iain Sandoe  <iain@sandoe.co.uk>

* config/darwin.h (DARWIN_EXTRA_SPECS): Add new
bundle spec. (DARWIN_BUNDLE1_SPEC): New.
(STARTFILE_SPEC): Use darwin bundle spec.
* config/rs6000/darwin.h (DARWIN_BUNDLE1_SPEC): New.
(DARWIN_DYLIB1_SPEC): Delete duplicate.

From-SVN: r279393

gcc/ChangeLog
gcc/config/darwin.h
gcc/config/rs6000/darwin.h

index 5073ffaf3b9d1fa1fc1259757c936c9c61889e34..b50155dde0c5414e927d2c41d6acafd32c2d5c17 100644 (file)
@@ -1,3 +1,11 @@
+2019-12-14  Iain Sandoe  <iain@sandoe.co.uk>
+
+       * config/darwin.h (DARWIN_EXTRA_SPECS): Add new
+       bundle spec. (DARWIN_BUNDLE1_SPEC): New.
+       (STARTFILE_SPEC): Use darwin bundle spec.
+       * config/rs6000/darwin.h (DARWIN_BUNDLE1_SPEC): New.
+       (DARWIN_DYLIB1_SPEC): Delete duplicate.
+
 2019-12-13  Martin Sebor  <msebor@redhat.com>
 
        PR middle-end/91582
index 8eb8edf326f96d322ff4521b7dfd43980f159e23..546336e42841a2cb4b68fd996c79a48fd52c34f5 100644 (file)
@@ -401,9 +401,7 @@ extern GTY(()) int darwin_ms_struct;
 #undef  STARTFILE_SPEC
 #define STARTFILE_SPEC                                                     \
 "%{Zdynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}}                   \
- %{!Zdynamiclib:%{Zbundle:%{!static:                                       \
-       %:version-compare(< 10.6 mmacosx-version-min= -lbundle1.o)          \
-       %{fgnu-tm: -lcrttms.o}}}                                            \
+ %{!Zdynamiclib:%{Zbundle:%(darwin_bundle1)}                               \
      %{!Zbundle:%{pg:%{static:-lgcrt0.o}                                   \
                      %{!static:%{object:-lgcrt0.o}                         \
                                %{!object:%{preload:-lgcrt0.o}              \
@@ -425,7 +423,8 @@ extern GTY(()) int darwin_ms_struct;
   { "darwin_crt1", DARWIN_CRT1_SPEC },                                 \
   { "darwin_crt2", DARWIN_CRT2_SPEC },                                 \
   { "darwin_crt3", DARWIN_CRT3_SPEC },                                 \
-  { "darwin_dylib1", DARWIN_DYLIB1_SPEC },
+  { "darwin_dylib1", DARWIN_DYLIB1_SPEC },                             \
+  { "darwin_bundle1", DARWIN_BUNDLE1_SPEC },
 
 #define DARWIN_CRT1_SPEC                                               \
   "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o)            \
@@ -447,6 +446,10 @@ extern GTY(()) int darwin_ms_struct;
   "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o)          \
    %:version-compare(>< 10.5 10.6 mmacosx-version-min= -ldylib1.10.5.o)"
 
+#define DARWIN_BUNDLE1_SPEC \
+"%{!static:%:version-compare(< 10.6 mmacosx-version-min= -lbundle1.o)  \
+          %{fgnu-tm: -lcrttms.o}}"
+
 #ifdef HAVE_AS_MMACOSX_VERSION_MIN_OPTION
 /* Emit macosx version (but only major).  */
 #define ASM_MMACOSX_VERSION_MIN_SPEC \
index 8cf25b00f0f6e8fdd4322ec588d8a661b4cfafc3..5f5a6cab6bf19baa18bca56275b4fc7cbd2c008b 100644 (file)
    %:version-compare(!> 10.4 mmacosx-version-min= crt3_2.o%s) \
   }}"
 
-/* We need to jam the dylib1 to 10.5 for 10.6 (Rosetta) use.  */
+/* As for crt1, we need to force the dylib crt for 10.6.  */
 #undef DARWIN_DYLIB1_SPEC
 #define DARWIN_DYLIB1_SPEC                                             \
   "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o)          \
    %:version-compare(>< 10.5 10.7 mmacosx-version-min= -ldylib1.10.5.o)"
 
+/* Likewise, the bundle crt.  */
+#undef DARWIN_BUNDLE1_SPEC
+#define DARWIN_BUNDLE1_SPEC \
+"%{!static:%:version-compare(< 10.7 mmacosx-version-min= -lbundle1.o)  \
+          %{fgnu-tm: -lcrttms.o}}"
+
 /* The PPC regs save/restore functions are leaves and could, conceivably
    be used by the tm destructor.  */
 #undef ENDFILE_SPEC
   { "darwin_crt2", DARWIN_CRT2_SPEC },         \
   { "darwin_subarch", DARWIN_SUBARCH_SPEC },
 
-/* We need to jam the dylib crt to 10.5 for 10.6 (Rosetta) use.  */
-#undef DARWIN_DYLIB1_SPEC
-#define DARWIN_DYLIB1_SPEC                                             \
-  "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o)          \
-   %:version-compare(>< 10.5 10.7 mmacosx-version-min= -ldylib1.10.5.o)"
-
 /* Output a .machine directive.  */
 #undef TARGET_ASM_FILE_START
 #define TARGET_ASM_FILE_START rs6000_darwin_file_start