]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Darwin: Fix a typo in Objective-C meta-data.
authorIain Sandoe <iain@sandoe.co.uk>
Mon, 8 Jan 2024 16:17:04 +0000 (16:17 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Fri, 19 Apr 2024 13:14:55 +0000 (14:14 +0100)
We have a typo in the metadata for assigning NSStrings to a specific
section for the V1 (32b) ABI.  When that is fixed we should never see
the case where the section needs to be deduced from the properties of
the DECLs.

gcc/ChangeLog:

* config/darwin.cc (darwin_objc1_section): Use the correct
meta-data version for constant strings.
(machopic_select_section): Assert if we fail to handle CFString
sections as Obejctive-C meta-data or drectly.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
(cherry picked from commit 8d26636f0da31e6c17b57ced52bfc61a45f23cee)

gcc/config/darwin.cc

index 57af20052bc6e0dfa0893c42345013c8cf6b7005..a11095716d880736947260f2e4225d6f9e25313e 100644 (file)
@@ -1599,7 +1599,7 @@ darwin_objc1_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base)
   else if (startswith (p, "V1_CEXT"))
     return darwin_sections[objc1_class_ext_section];
 
-  else if (startswith (p, "V2_CSTR"))
+  else if (startswith (p, "V1_CSTR"))
     return darwin_sections[objc_constant_string_object_section];
 
   return base;
@@ -1743,7 +1743,7 @@ machopic_select_section (tree decl,
        return base_section; /* GNU runtime is happy with it all in one pot.  */
     }
 
-  /* b) Constant string objects.  */
+  /* b) Constructors for constant NSstring [but not CFString] objects.  */
   if (TREE_CODE (decl) == CONSTRUCTOR
       && TREE_TYPE (decl)
       && TREE_CODE (TREE_TYPE (decl)) == RECORD_TYPE
@@ -1765,6 +1765,12 @@ machopic_select_section (tree decl,
          else
            return darwin_sections[objc_string_object_section];
        }
+      else if (!strcmp (IDENTIFIER_POINTER (name), "__builtin_CFString"))
+       {
+         /* We should have handled __anon_cfstrings above.  */
+         gcc_checking_assert (0);
+         return darwin_sections[cfstring_constant_object_section];
+       }
       else
        return base_section;
     }