EH_RETURN_DATA_REGNO (
N)
INVALID_REGNUM
if fewer than
N registers are usable.
The exception handling library routines communicate with the exception handlers via a set of agreed upon registers. Ideally these registers should be call-clobbered; it is possible to use call-saved registers, but may negatively impact code size. The target must support at least 2 data registers, but should define 4 if there are enough free registers.
You must define this macro if you want to support call frame exception
handling like that provided by DWARF 2.
EH_RETURN_STACKADJ_RTX
Typically this is a call-clobbered hard register that is otherwise untouched by the epilogue, but could also be a stack slot.
You must define this macro if you want to support call frame exception
handling like that provided by DWARF 2.
EH_RETURN_HANDLER_RTX
Typically this is the location in the call frame at which the normal
return address is stored. For targets that return by popping an
address off the stack, this might be a memory address just below
the target call frame rather than inside the current call
frame. EH_RETURN_STACKADJ_RTX
will have already been assigned,
so it may be used to calculate the location of the target call frame.
Some targets have more complex requirements than storing to an
address calculable during initial code generation. In that case
the eh_return
instruction pattern should be used instead.
If you want to support call frame exception handling, you must
define either this macro or the eh_return
instruction pattern.
ASM_PREFERRED_EH_DATA_FORMAT(
code,
global)
code is 0 for data, 1 for code labels, 2 for function pointers.
global is true if the symbol may be affected by dynamic relocations.
The macro should return a combination of the DW_EH_PE_*
defines
as found in dwarf2.h
.
If this macro is not defined, pointers will not be encoded but
represented directly.
ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(
file,
encoding,
size,
addr,
done)
ASM_PREFERRED_EH_DATA_FORMAT
.
Generic code takes care of pc-relative and indirect encodings; this must
be defined if the target uses text-relative or data-relative encodings.
This is a C statement that branches to done if the format was
handled. encoding is the format chosen, size is the number
of bytes that the format occupies, addr is the SYMBOL_REF
to be emitted.
MD_FALLBACK_FRAME_STATE_FOR(
context,
fs,
success)
This macro is called from uw_frame_state_for
in unwind-dw2.c
and unwind-ia64.c
. context is an _Unwind_Context
;
fs is an _Unwind_FrameState
. Examine context->ra
for the address of the code being executed and context->cfa
for
the stack pointer value. If the frame can be decoded, the register save
addresses should be updated in fs and the macro should branch to
success. If the frame cannot be decoded, the macro should do
nothing.