aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/config/darwin-sections.def11
-rw-r--r--gcc/config/darwin.c8
-rw-r--r--gcc/objc/objc-next-runtime-abi-02.c7
3 files changed, 23 insertions, 3 deletions
diff --git a/gcc/config/darwin-sections.def b/gcc/config/darwin-sections.def
index 98677f6..d3251db 100644
--- a/gcc/config/darwin-sections.def
+++ b/gcc/config/darwin-sections.def
@@ -198,3 +198,14 @@ DEF_SECTION (objc2_image_info_section, 0,
".section __DATA, __objc_imageinfo, regular, no_dead_strip", 1)
DEF_SECTION (objc2_constant_string_object_section, 0,
".section __DATA, __objc_stringobj, regular, no_dead_strip", 1)
+
+/* Additions for compatibility with later runtime conventions especially for
+ sections containing strings. */
+DEF_SECTION (objc2_class_names_section, 0,
+ ".section __TEXT, __objc_classname, cstring_literals", 1)
+
+DEF_SECTION (objc2_method_names_section, 0,
+ ".section __TEXT, __objc_methname, cstring_literals", 1)
+
+DEF_SECTION (objc2_method_types_section, 0,
+ ".section __TEXT, __objc_methtype, cstring_literals", 1)
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 2311648..7eb288e 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -174,10 +174,12 @@ output_objc_section_asm_op (const void *directive)
/* ABI=2 */
static const enum darwin_section_enum tomarkv2[] =
{
+ objc2_method_names_section,
objc2_message_refs_section,
objc2_classdefs_section,
objc2_metadata_section,
objc2_classrefs_section,
+ objc2_class_names_section,
objc2_classlist_section,
objc2_categorylist_section,
objc2_selector_refs_section,
@@ -1447,6 +1449,12 @@ darwin_objc2_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base)
first. */
if (!strncmp (p, "V2_BASE", 7))
return base;
+ else if (!strncmp (p, "V2_CNAM", 7))
+ return darwin_sections[objc2_class_names_section];
+ else if (!strncmp (p, "V2_MNAM", 7))
+ return darwin_sections[objc2_method_names_section];
+ else if (!strncmp (p, "V2_MTYP", 7))
+ return darwin_sections[objc2_method_types_section];
else if (!strncmp (p, "V2_STRG", 7))
return darwin_sections[cstring_section];
diff --git a/gcc/objc/objc-next-runtime-abi-02.c b/gcc/objc/objc-next-runtime-abi-02.c
index e401906..b4019cd 100644
--- a/gcc/objc/objc-next-runtime-abi-02.c
+++ b/gcc/objc/objc-next-runtime-abi-02.c
@@ -323,9 +323,10 @@ next_runtime_abi_02_init_metadata_attributes (void)
meta_sel_refs = get_identifier ("V2_SRFS");
- meta_class_name =
- meta_meth_name =
- meta_meth_type =
+ meta_class_name = get_identifier ("V2_CNAM");
+ meta_meth_name = get_identifier ("V2_MNAM");
+
+ meta_meth_type = get_identifier ("V2_MTYP");
meta_prop_name_attr = get_identifier ("V2_STRG");
meta_mref = get_identifier ("V2_MREF");