Add support for SEH unwinding on Windows.
authorCharles Davis <cdavis5x@gmail.com>
Thu, 30 Aug 2018 21:29:00 +0000 (21:29 +0000)
committerCharles Davis <cdavis5x@gmail.com>
Thu, 30 Aug 2018 21:29:00 +0000 (21:29 +0000)
commita7e3a6d8029dc16a3d91eeaf54e9e74ad56ad177
tree7c0f18ea8a9ee4cdc452d6dbe0dd4b4272125133
parentc11a780ed65a4e11c6bee68f7fd349c611f2fe18
Add support for SEH unwinding on Windows.

Summary:
I've tested this implementation on x86-64 to ensure that it works. All
`libc++abi` tests pass, as do all `libc++` exception-related tests. ARM
still remains to be implemented (@compnerd?).

Special thanks to KJK::Hyperion for his excellent series of articles on
how EH works on x86-64 Windows. (Seriously, check it out. It's awesome.)

I'm actually not sure if this should go in as is. I particularly don't
like that I duplicated the UnwindCursor class for this special case.

Reviewers: mstorsjo, rnk, compnerd, smeenai, javed.absar

Subscribers: mgorny, kristof.beyls, christof, chrib, cfe-commits, compnerd, llvm-commits

Differential Revision: https://reviews.llvm.org/D50564

llvm-svn: 341125
libunwind/include/__libunwind_config.h
libunwind/include/unwind.h
libunwind/src/AddressSpace.hpp
libunwind/src/CMakeLists.txt
libunwind/src/Unwind-seh.cpp [new file with mode: 0644]
libunwind/src/UnwindCursor.hpp
libunwind/src/UnwindLevel1-gcc-ext.c
libunwind/src/UnwindLevel1.c
libunwind/src/config.h