]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[Darwin, PPC] Use Darwin9 bundle header for Rosetta builds.
authorIain Sandoe <iain@sandoe.co.uk>
Wed, 25 Dec 2019 20:31:04 +0000 (20:31 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Wed, 25 Dec 2019 20:31:04 +0000 (20:31 +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:

Backport from mainline.
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: r279732

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

index ddf21f7108e3dde1e511db6585ee8a929df502a0..928e9459ed54227086bb80fc43817c43d2cc2052 100644 (file)
@@ -1,3 +1,14 @@
+2019-12-25 Iain Sandoe <iain@sandoe.co.uk>
+
+       Backport from mainline.
+       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-20  Jakub Jelinek  <jakub@redhat.com>
 
        PR fortran/92756
index be261e73a7b4a119b5de62e43e0ad7281f064348..fab9af97afdb23dcf6df188abe2c93a8bfcb53b3 100644 (file)
@@ -392,9 +392,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}              \
@@ -416,7 +414,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)            \
@@ -438,6 +437,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 e36de59ca2509d09766337d6334a5557068b12fc..165aca2983843e327232d4b2f51b6de6abf11de2 100644 (file)
    %:version-compare(!> 10.4 mmacosx-version-min= crt3_2.o%s) \
   }}"
 
+/* 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