Commit eb870e5e by Iain Sandoe Committed by Iain Sandoe

[Objective-C, NeXT ABI] Identify V2 IVAR refs by metadata.

For the NeXT 64b ABI, IVAR refs are supposed to be indirected for
Mach-O PIC.  Identify them so that we can act as needed.

gcc/objc/ChangeLog:

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

	* objc-next-metadata-tags.h (OCTI_RT_META_IVAR_REF): New.
	(meta_ivar_ref): New.
	* objc-next-runtime-abi-02.c
	(next_runtime_abi_02_init_metadata_attributes): Create the
	IVAR ref metadata identifier.
	(ivar_offset_ref): Tag IVAR refs with specific metadata.

From-SVN: r276847
parent d102b039
2019-10-10 Iain Sandoe <iain@sandoe.co.uk>
* objc-next-metadata-tags.h (OCTI_RT_META_IVAR_REF): New.
(meta_ivar_ref): New.
* objc-next-runtime-abi-02.c
(next_runtime_abi_02_init_metadata_attributes): Create the
IVAR ref metadata identifier.
(ivar_offset_ref): Tag IVAR refs with specific metadata.
2019-06-05 Martin Sebor <msebor@redhat.com> 2019-06-05 Martin Sebor <msebor@redhat.com>
* objc-act.c (objc_build_setter_call): Adjust quoting and hyphenation. * objc-act.c (objc_build_setter_call): Adjust quoting and hyphenation.
......
...@@ -74,6 +74,8 @@ enum objc_runtime_tree_index ...@@ -74,6 +74,8 @@ enum objc_runtime_tree_index
OCTI_RT_META_CONST_STR, OCTI_RT_META_CONST_STR,
OCTI_RT_META_IVAR_REF,
OCTI_RT_META_MAX OCTI_RT_META_MAX
}; };
...@@ -167,6 +169,8 @@ enum objc_runtime_tree_index ...@@ -167,6 +169,8 @@ enum objc_runtime_tree_index
#define meta_const_str objc_rt_trees[OCTI_RT_META_CONST_STR] #define meta_const_str objc_rt_trees[OCTI_RT_META_CONST_STR]
#define meta_ivar_ref objc_rt_trees[OCTI_RT_META_IVAR_REF]
#define OBJCMETA(DECL,VERS,KIND) \ #define OBJCMETA(DECL,VERS,KIND) \
if (VERS) \ if (VERS) \
DECL_ATTRIBUTES (DECL) = build_tree_list ((VERS), (KIND)); DECL_ATTRIBUTES (DECL) = build_tree_list ((VERS), (KIND));
...@@ -345,6 +345,8 @@ next_runtime_abi_02_init_metadata_attributes (void) ...@@ -345,6 +345,8 @@ next_runtime_abi_02_init_metadata_attributes (void)
meta_ehtype = get_identifier ("V2_EHTY"); meta_ehtype = get_identifier ("V2_EHTY");
meta_const_str = get_identifier ("V2_CSTR"); meta_const_str = get_identifier ("V2_CSTR");
meta_ivar_ref = get_identifier ("V2_IVRF");
} }
static void next_runtime_02_initialize (void) static void next_runtime_02_initialize (void)
...@@ -2795,8 +2797,8 @@ ivar_offset_ref (tree class_name, tree field_decl) ...@@ -2795,8 +2797,8 @@ ivar_offset_ref (tree class_name, tree field_decl)
else else
decl = create_hidden_decl (TREE_TYPE (size_zero_node), buf); decl = create_hidden_decl (TREE_TYPE (size_zero_node), buf);
/* Make sure it ends up in an ObjC section. */ /* Identify so that we can indirect these where the ABI requires. */
OBJCMETA (decl, objc_meta, meta_base); OBJCMETA (decl, objc_meta, meta_ivar_ref);
e.decl = decl; e.decl = decl;
e.offset = byte_position (field_decl); e.offset = byte_position (field_decl);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment