mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-28 22:34:03 +08:00
Objective-C, Darwin : Use special string sections for V2 NeXT runtime.
Newer versions of the runtime expect to find strings for class, method and method types in set-aside sections rather than the general c_strings one. gcc/ChangeLog: * config/darwin-sections.def (objc2_class_names_section, objc2_method_names_section, objc2_method_types_section): New * config/darwin.c (output_objc_section_asm_op): Output new sections. (darwin_objc2_section): Select new sections where used. gcc/objc/ChangeLog: * objc-next-runtime-abi-02.c (next_runtime_abi_02_init_metadata_attributes): Attach metadata for the special string sections to class, method and method type string sections.
This commit is contained in:
parent
900c0ca226
commit
a788c4555c
@ -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)
|
||||
|
@ -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];
|
||||
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user