aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2024-01-08 16:17:04 +0000
committerIain Sandoe <iain@sandoe.co.uk>2024-01-18 14:15:55 +0000
commit8d26636f0da31e6c17b57ced52bfc61a45f23cee (patch)
treea62b3a063d3ec3aa1c560a4fc370f2a06538c1d8
parent9840e0be78150b0ef6e29975a6244698d5a5580c (diff)
downloadgcc-8d26636f0da31e6c17b57ced52bfc61a45f23cee.zip
gcc-8d26636f0da31e6c17b57ced52bfc61a45f23cee.tar.gz
gcc-8d26636f0da31e6c17b57ced52bfc61a45f23cee.tar.bz2
Darwin: Fix a typo in Objective-C meta-data.
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>
-rw-r--r--gcc/config/darwin.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/config/darwin.cc b/gcc/config/darwin.cc
index b15f3b1..7f43718 100644
--- a/gcc/config/darwin.cc
+++ b/gcc/config/darwin.cc
@@ -1638,7 +1638,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;
@@ -1782,7 +1782,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
@@ -1804,6 +1804,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;
}