summaryrefslogtreecommitdiffstats
path: root/backends/s390_init.c
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 /backends/s390_init.c
parentc8c610bcfb9e90ab2d43c019da7eaade7017baec (diff)
unwinder: s390 and s390x
Signed-off-by: Jan Kratochvil <[email protected]>
Diffstat (limited to 'backends/s390_init.c')
-rw-r--r--backends/s390_init.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/backends/s390_init.c b/backends/s390_init.c
index 630a2ee3..26b20b49 100644
--- a/backends/s390_init.c
+++ b/backends/s390_init.c
@@ -62,6 +62,15 @@ s390_init (elf, machine, eh, ehlen)
else
HOOK (eh, core_note);
HOOK (eh, abi_cfi);
+ /* gcc/config/ #define DWARF_FRAME_REGISTERS 34.
+ But from the gcc/config/s390/s390.h "Register usage." comment it looks as
+ if #32 (Argument pointer) and #33 (Condition code) are not used for
+ unwinding. */
+ eh->frame_nregs = 32;
+ HOOK (eh, set_initial_registers_tid);
+ if (eh->class == ELFCLASS32)
+ HOOK (eh, normalize_pc);
+ HOOK (eh, unwind);
/* Only the 64-bit format uses the incorrect hash table entry size. */
if (eh->class == ELFCLASS64)