Add support for __declspec(nocf).

__declspec(nocf) syntax was added in https://reviews.llvm.org/D72167
and annotates that checks should not be added on indirect calls
within that function.

BUG=chromium:584575

Change-Id: Ib2e2d2a827186a9c1fd3de15356b2b04d6a69e49
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2270707
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68590}
This commit is contained in:
Will Harris 2020-06-26 14:02:24 -07:00 committed by Commit Bot
parent de066cc69b
commit 0c58583ba8

View File

@ -176,7 +176,14 @@ V8_INLINE Dest bit_cast(Source const& source) {
// DISABLE_CFI_ICALL -- Disable Control Flow Integrity indirect call checks,
// useful because calls into JITed code can not be CFI verified.
#ifdef V8_OS_WIN
// On Windows, also needs __declspec(guard(nocf)) for CFG.
#define DISABLE_CFI_ICALL \
V8_CLANG_NO_SANITIZE("cfi-icall") \
__declspec(guard(nocf))
#else
#define DISABLE_CFI_ICALL V8_CLANG_NO_SANITIZE("cfi-icall")
#endif
#if V8_CC_GNU
#define V8_IMMEDIATE_CRASH() __builtin_trap()