diff options
author | Jan Vorlicek <janvorli@microsoft.com> | 2016-06-22 21:00:20 +0300 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2016-06-22 21:00:20 +0300 |
commit | d8ba6a0def20c2ef44dbfa8a0f53eb0513043001 (patch) | |
tree | c9f66e680b0311765c4ff71db91511079d05416c /src/Native/Runtime/amd64 | |
parent | 0603b782dc0ab509b4f8c7fa3da1e8923fc24958 (diff) |
Implement Linux hardware and software exception handling (#1417)
This change implements code manager for Linux, context manipulation
and compiler changes necessary to enable exception handling.
All calls to libunwind are disabled for now on non-OSX though, since
our build system doesn't support specifying additional dynamic
libraries, which prevents us from using the libunwind.
Those pieces of code are under CAN_LINK_SHARED_LIBUNWIND ifdef so
that the ifdef can easily be located and removed after we add
the necessary support to the build system.
On OSX, the unwind functionality is part of the compiler support
libraries, so it works.
I have verified that everything works with the libunwind though
by manually invoking clang to link everything together and adding
the necessary libraries to its command line. The exception handling
test was passing with that.
Diffstat (limited to 'src/Native/Runtime/amd64')
-rw-r--r-- | src/Native/Runtime/amd64/ExceptionHandling.S | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/Native/Runtime/amd64/ExceptionHandling.S b/src/Native/Runtime/amd64/ExceptionHandling.S index 41833f0f2..3e6a689b1 100644 --- a/src/Native/Runtime/amd64/ExceptionHandling.S +++ b/src/Native/Runtime/amd64/ExceptionHandling.S @@ -369,7 +369,7 @@ ALTERNATE_ENTRY RhpCallCatchFunclet2 LOCAL_LABEL(ExInfoLoop): mov rdi, [rdi + OFFSETOF__ExInfo__m_pPrevExInfo] // rdi <- next ExInfo - cmp rdi, rsi + cmp rdi, rcx je LOCAL_LABEL(ExInfoLoopDone) // we're done if it's null cmp rdi, rdx jl LOCAL_LABEL(ExInfoLoop) // keep looping if it's lower than the new SP |