[PATCH] D29457: [asan] Properly handle exceptions.

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 2 09:27:03 PST 2017


lgtm

On Thu, Feb 2, 2017 at 9:25 AM Marcos Pividori via Phabricator <
reviews at reviews.llvm.org> wrote:

> mpividori created this revision.
> Herald added a subscriber: kubamracek.
>
> https://reviews.llvm.org/D29457
>
> Files:
>   lib/asan/asan_win.cc
>
>
> Index: lib/asan/asan_win.cc
> ===================================================================
> --- lib/asan/asan_win.cc
> +++ lib/asan/asan_win.cc
> @@ -240,12 +240,25 @@
>  static bool ShouldReportDeadlyException(unsigned code) {
>    switch (code) {
>      case EXCEPTION_ACCESS_VIOLATION:
> +    case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
> +    case EXCEPTION_STACK_OVERFLOW:
> +    case EXCEPTION_DATATYPE_MISALIGNMENT:
>      case EXCEPTION_IN_PAGE_ERROR:
>        return common_flags()->handle_segv;
> +    case EXCEPTION_ILLEGAL_INSTRUCTION:
> +    case EXCEPTION_PRIV_INSTRUCTION:
>      case EXCEPTION_BREAKPOINT:
> -    case EXCEPTION_ILLEGAL_INSTRUCTION: {
>        return common_flags()->handle_sigill;
> -    }
> +    case EXCEPTION_FLT_DENORMAL_OPERAND:
> +    case EXCEPTION_FLT_DIVIDE_BY_ZERO:
> +    case EXCEPTION_FLT_INEXACT_RESULT:
> +    case EXCEPTION_FLT_INVALID_OPERATION:
> +    case EXCEPTION_FLT_OVERFLOW:
> +    case EXCEPTION_FLT_STACK_CHECK:
> +    case EXCEPTION_FLT_UNDERFLOW:
> +    case EXCEPTION_INT_DIVIDE_BY_ZERO:
> +    case EXCEPTION_INT_OVERFLOW:
> +      return common_flags()->handle_sigfpe;
>    }
>    return false;
>  }
> @@ -256,14 +269,23 @@
>    // Get the string description of the exception if this is a known deadly
>    // exception.
>    switch (code) {
> -    case EXCEPTION_ACCESS_VIOLATION:
> -      return "access-violation";
> -    case EXCEPTION_IN_PAGE_ERROR:
> -      return "in-page-error";
> -    case EXCEPTION_BREAKPOINT:
> -      return "breakpoint";
> -    case EXCEPTION_ILLEGAL_INSTRUCTION:
> -      return "illegal-instruction";
> +    case EXCEPTION_ACCESS_VIOLATION: return "access-violation";
> +    case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: return "array-bounds-exceeded";
> +    case EXCEPTION_STACK_OVERFLOW: return "stack-overflow";
> +    case EXCEPTION_DATATYPE_MISALIGNMENT: return "datatype-misalignment";
> +    case EXCEPTION_IN_PAGE_ERROR: return "in-page-error";
> +    case EXCEPTION_ILLEGAL_INSTRUCTION: return "illegal-instruction";
> +    case EXCEPTION_PRIV_INSTRUCTION: return "priv-instruction";
> +    case EXCEPTION_BREAKPOINT: return "breakpoint";
> +    case EXCEPTION_FLT_DENORMAL_OPERAND: return "flt-denormal-operand";
> +    case EXCEPTION_FLT_DIVIDE_BY_ZERO: return "flt-divide-by-zero";
> +    case EXCEPTION_FLT_INEXACT_RESULT: return "flt-inexact-result";
> +    case EXCEPTION_FLT_INVALID_OPERATION: return "flt-invalid-operation";
> +    case EXCEPTION_FLT_OVERFLOW: return "flt-overflow";
> +    case EXCEPTION_FLT_STACK_CHECK: return "flt-stack-check";
> +    case EXCEPTION_FLT_UNDERFLOW: return "flt-underflow";
> +    case EXCEPTION_INT_DIVIDE_BY_ZERO: return "int-divide-by-zero";
> +    case EXCEPTION_INT_OVERFLOW: return "int-overflow";
>    }
>    return nullptr;
>  }
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170202/619723dd/attachment.html>


More information about the llvm-commits mailing list