summaryrefslogtreecommitdiffstats
path: root/libebl/ebl-hooks.h
diff options
context:
space:
mode:
authorJan Kratochvil <[email protected]>2013-12-17 18:49:54 +0100
committerJan Kratochvil <[email protected]>2013-12-18 13:01:05 +0100
commitc6a41483f2986d5542c554981348f75b815ef9b1 (patch)
treeafbd87ebb664bfe07a7d03790920fdbbc3be9e38 /libebl/ebl-hooks.h
parentc8c610bcfb9e90ab2d43c019da7eaade7017baec (diff)
unwinder: s390 and s390x
Signed-off-by: Jan Kratochvil <[email protected]>
Diffstat (limited to 'libebl/ebl-hooks.h')
-rw-r--r--libebl/ebl-hooks.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h
index f721bc49..22438953 100644
--- a/libebl/ebl-hooks.h
+++ b/libebl/ebl-hooks.h
@@ -166,5 +166,22 @@ bool EBLHOOK(set_initial_registers_tid) (pid_t tid,
Dwarf_Frame->REGS indexing. */
bool EBLHOOK(dwarf_to_regno) (Ebl *ebl, unsigned *regno);
+/* Optionally modify *PC as fetched from inferior data into valid PC
+ instruction pointer. */
+void EBLHOOK(normalize_pc) (Ebl *ebl, Dwarf_Addr *pc);
+
+/* Get previous frame state for an existing frame state. Method is called only
+ if unwinder could not find CFI for current PC. PC is for the
+ existing frame. SETFUNC sets register in the previous frame. GETFUNC gets
+ register from the existing frame. Note that GETFUNC vs. SETFUNC act on
+ a disjunct set of registers. READFUNC reads memory. ARG has to be passed
+ for SETFUNC, GETFUNC and READFUNC. *SIGNAL_FRAMEP is initialized to false,
+ it can be set to true if existing frame is a signal frame. SIGNAL_FRAMEP is
+ never NULL. */
+bool EBLHOOK(unwind) (Ebl *ebl, Dwarf_Addr pc, ebl_tid_registers_t *setfunc,
+ ebl_tid_registers_get_t *getfunc,
+ ebl_pid_memory_read_t *readfunc, void *arg,
+ bool *signal_framep);
+
/* Destructor for ELF backend handle. */
void EBLHOOK(destr) (struct ebl *);