[Darwin, PPC] Allow the user to override the use of hard float in kexts.
authorIain Sandoe <iain@sandoe.co.uk>
Thu, 27 Jun 2019 19:08:16 +0000 (19:08 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Thu, 27 Jun 2019 19:08:16 +0000 (19:08 +0000)
The default for the kernel is soft-float, however a user writing a kernel
extension might want to make use of hard float.  This change makes
" -mkernel -mhard-float " work as expected.

2019-06-27  Iain Sandoe  <iain@sandoe.co.uk>

* config/rs6000/rs6000.c (darwin_rs6000_override_options): Honour
user-specified float mode choice for kernel mode code.

From-SVN: r272760

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index c0432a95433febb8cbc324c71b39351fa481b186..4b739e39c8b87c2f8c9219890761a1ff404351ea 100644 (file)
@@ -1,3 +1,8 @@
+2019-06-27  Iain Sandoe  <iain@sandoe.co.uk>
+
+       * config/rs6000/rs6000.c (darwin_rs6000_override_options): Honour
+       user-specified float mode choice for kernel mode code.
+
 2019-06-27  Iain Sandoe  <iain@sandoe.co.uk>
 
        * config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the
index fbff6bdb0a5faa7b264f475d40b8b33fde4c65d8..5e806736c42140782384f9b500a59f09caa2cebe 100644 (file)
@@ -3430,7 +3430,10 @@ darwin_rs6000_override_options (void)
   if (flag_mkernel)
     {
       rs6000_default_long_calls = 1;
-      rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT;
+
+      /* Allow a kext author to do -mkernel -mhard-float.  */
+      if (! (rs6000_isa_flags_explicit & OPTION_MASK_SOFT_FLOAT))
+        rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT;
     }
 
   /* Make -m64 imply -maltivec.  Darwin's 64-bit ABI includes