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>
* objc-act.c (objc_build_setter_call): Adjust quoting and hyphenation.
......
......@@ -74,6 +74,8 @@ enum objc_runtime_tree_index
OCTI_RT_META_CONST_STR,
OCTI_RT_META_IVAR_REF,
OCTI_RT_META_MAX
};
......@@ -167,6 +169,8 @@ enum objc_runtime_tree_index
#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) \
if (VERS) \
DECL_ATTRIBUTES (DECL) = build_tree_list ((VERS), (KIND));
......@@ -345,6 +345,8 @@ next_runtime_abi_02_init_metadata_attributes (void)
meta_ehtype = get_identifier ("V2_EHTY");
meta_const_str = get_identifier ("V2_CSTR");
meta_ivar_ref = get_identifier ("V2_IVRF");
}
static void next_runtime_02_initialize (void)
......@@ -2795,8 +2797,8 @@ ivar_offset_ref (tree class_name, tree field_decl)
else
decl = create_hidden_decl (TREE_TYPE (size_zero_node), buf);
/* Make sure it ends up in an ObjC section. */
OBJCMETA (decl, objc_meta, meta_base);
/* Identify so that we can indirect these where the ABI requires. */
OBJCMETA (decl, objc_meta, meta_ivar_ref);
e.decl = 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