+struct obj_mach_o_frag_data
+{
+ /* Symbol that corresponds to the subsection. */
+ symbolS *subsection;
+};
+
+#define OBJ_FRAG_TYPE struct obj_mach_o_frag_data
+
+#define md_pre_output_hook obj_mach_o_pre_output_hook()
+extern void obj_mach_o_pre_output_hook(void);
+
+#define md_pre_relax_hook obj_mach_o_pre_relax_hook()
+extern void obj_mach_o_pre_relax_hook (void);
+
+#define md_post_relax_hook obj_mach_o_post_relax_hook()
+extern void obj_mach_o_post_relax_hook (void);
+
+#define obj_frob_file_after_relocs obj_mach_o_frob_file_after_relocs
+extern void obj_mach_o_frob_file_after_relocs (void);
+
+#define SET_SECTION_RELOCS(sec, relocs, n) \
+ obj_mach_o_reorder_section_relocs (sec, relocs, n)
+extern void obj_mach_o_reorder_section_relocs (asection *, arelent **,
+ unsigned int);
+
+/* Emit relocs for local subtracts, to cater for subsections-via-symbols. */
+#define md_allow_local_subtract(LEFT, RIGHT, SECTION) \
+ obj_mach_o_allow_local_subtract (LEFT, RIGHT, SECTION)
+extern int obj_mach_o_allow_local_subtract (expressionS *, expressionS *,
+ segT);
+
+struct fix;
+extern int obj_mach_o_in_different_subsection (symbolS *a, symbolS *b);
+extern int obj_mach_o_force_reloc (struct fix *fix);
+extern int obj_mach_o_force_reloc_sub_same (struct fix *fix, segT seg);
+extern int obj_mach_o_force_reloc_sub_local (struct fix *fix, segT seg);
+