Objective-C, Darwin : Revise the runtime selection options.
authorIain Sandoe <iain@sandoe.co.uk>
Fri, 9 Oct 2020 14:17:34 +0000 (15:17 +0100)
committerIain Sandoe <iain@sandoe.co.uk>
Sun, 11 Oct 2020 11:58:29 +0000 (12:58 +0100)
For the NeXT/Darwin runtime as installed on macOS, we now
need to deal with changes in ABI and APIs over the range
of system versions supported.

For the first phase of these changes, we will make the
existing flag_next_runtime carry a value that represents
the target OS version.  It might be necessary to extend the
value to represent the ABI ('fragile', V1/V2) or the linker
capabilities (some changes to the linker-visible and public
symbols are dependent on linker version).

TODO: arrange to set the default NEXT_OBJC_RUNTIME on the
basis of the configured target version.

gcc/ChangeLog:

* config/darwin.c (darwin_objc2_section): Allow for
values > 1 to represent the next runtime.
(darwin_objc1_section): Likewise.
* config/darwin.h (NEXT_OBJC_RUNTIME): Set the default
next runtime value to be 10.5.8.

gcc/config/darwin.c
gcc/config/darwin.h

index 370ee5cedaa8567bdbff59d46d30120c51757247..b3c1ef3d91842ce8dd06410f34d553687af45101 100644 (file)
@@ -1439,7 +1439,7 @@ darwin_objc2_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base)
   gcc_assert (TREE_CODE (ident) == IDENTIFIER_NODE);
   p = IDENTIFIER_POINTER (ident);
 
-  gcc_checking_assert (flag_next_runtime == 1 && flag_objc_abi == 2);
+  gcc_checking_assert (flag_next_runtime >= 1 && flag_objc_abi == 2);
 
   objc_metadata_seen = 1;
 
@@ -1515,7 +1515,7 @@ darwin_objc1_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base)
   gcc_assert (TREE_CODE (ident) == IDENTIFIER_NODE);
   p = IDENTIFIER_POINTER (ident);
 
-  gcc_checking_assert (flag_next_runtime == 1 && flag_objc_abi < 2);
+  gcc_checking_assert (flag_next_runtime >= 1 && flag_objc_abi < 2);
 
   objc_metadata_seen = 1;
 
index 7843add984a5e2027d5585a324359c5553c59c6f..f9d4fec30a030db60694f351b98a7cb6e4f8f167 100644 (file)
@@ -107,7 +107,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 /* Default to using the NeXT-style runtime, since that's what is
    pre-installed on Darwin systems.  */
 
-#define NEXT_OBJC_RUNTIME 1
+#define NEXT_OBJC_RUNTIME 100508
 
 /* Don't default to pcc-struct-return, because gcc is the only compiler, and
    we want to retain compatibility with older gcc versions.  */