From 5d46ec3db21d8c8926f15a634b2d6570536db5f1 Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Mon, 16 Sep 2019 15:11:00 +0100 Subject: CFI-handling : Add a hook to allow target-specific Personality and LSDA indirections. At present, the output of .cfi_personality and .cfi_lsda assumes ELF semantics for indirections. This isn't suitable for all targets and is one blocker to moving Darwin to use .cfi_xxxx. The patch adds a target hook that allows non-ELF targets to use indirections appropriate to their needs. gcc/ChangeLog: * config/darwin-protos.h (darwin_make_eh_symbol_indirect): New. * config/darwin.c (darwin_make_eh_symbol_indirect): New. Use Mach-O semantics for personality and ldsa indirections. * config/darwin.h (TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT): New. * doc/tm.texi: Regenerate. * doc/tm.texi.in: Add TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT hook. * dwarf2out.c (dwarf2out_do_cfi_startproc): If the target defines a hook for indirecting personality and ldsa references, use that otherwise default to ELF semantics. * target.def (make_eh_symbol_indirect): New target hook. --- gcc/config/darwin.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'gcc/config/darwin.c') diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index dd4857f..3265e3e 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -2225,6 +2225,17 @@ darwin_emit_except_table_label (FILE *file) ASM_OUTPUT_LABEL (file, section_start_label); } +rtx +darwin_make_eh_symbol_indirect (rtx orig, bool ARG_UNUSED (pubvis)) +{ + if (DARWIN_PPC == 0 && TARGET_64BIT) + return orig; + + return gen_rtx_SYMBOL_REF (Pmode, + machopic_indirection_name (orig, + /*stub_p=*/false)); +} + /* Return, and mark as used, the name of the stub for the mcount function. Currently, this is only called by X86 code in the expansion of the FUNCTION_PROFILER macro, when stubs are enabled. */ -- cgit v1.1