Add support for precise unwind info in epilogs on amd64:
authorZoltan Varga <vargaz@gmail.com>
Sat, 5 Jul 2014 02:43:03 +0000 (04:43 +0200)
committerZoltan Varga <vargaz@gmail.com>
Sat, 5 Jul 2014 14:10:13 +0000 (16:10 +0200)
commit496579788e581e2ceb7f0673bd198075ac6e517e
tree908847faa8ff81a529b4e75e1ae4c8531bf1dcb6
parente7c56da507d1be495be8dc422691969e896eac01
Add support for precise unwind info in epilogs on amd64:

* Implement DW_CFA_remember_state/restore_state opcodes.
* Add a DW_CFA_mono_advance_loc opcode to advance to a location stored outside
  of the unwind info. Use this to allow the sharing of unwind info between
  methods.

This is need to prevent crashes during unwinding when the ip of the last frame is in the epilog. This can be reproduced by
running sgen-new-threads-dont-join-stw.exe in a loop.
14 files changed:
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/exceptions-amd64.c
mono/mini/exceptions-arm.c
mono/mini/exceptions-mips.c
mono/mini/exceptions-ppc.c
mono/mini/exceptions-s390x.c
mono/mini/exceptions-x86.c
mono/mini/mini-amd64.c
mono/mini/mini-exceptions.c
mono/mini/mini-unwind.h
mono/mini/mini.c
mono/mini/mini.h
mono/mini/unwind.c