[webkit-changes] [WebKit/WebKit] 3d6a73: [JSC] Add optional mprotect mode for executable me...

David Degazio noreply at github.com
Wed May 29 12:27:45 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3d6a7300a281e21aaf7a8b91ea07252ccc4fa000
      https://github.com/WebKit/WebKit/commit/3d6a7300a281e21aaf7a8b91ea07252ccc4fa000
  Author: David Degazio <d_degazio at apple.com>
  Date:   2024-05-29 (Wed, 29 May 2024)

  Changed paths:
    M Source/JavaScriptCore/assembler/ARM64Assembler.h
    M Source/JavaScriptCore/assembler/ARMv7Assembler.h
    M Source/JavaScriptCore/assembler/LinkBuffer.cpp
    M Source/JavaScriptCore/assembler/RISCV64Assembler.h
    M Source/JavaScriptCore/assembler/X86Assembler.h
    M Source/JavaScriptCore/jit/ExecutableAllocator.cpp
    M Source/JavaScriptCore/jit/ExecutableAllocator.h
    M Source/WTF/wtf/PlatformEnable.h

  Log Message:
  -----------
  [JSC] Add optional mprotect mode for executable memory on Intel
https://bugs.webkit.org/show_bug.cgi?id=274805
rdar://128901530

Reviewed by Mark Lam.

Adds new build-time flag ENABLE_MPROTECT_RWX_TO_RX that toggles protecting
executable memory from modification using mprotect() calls. It's disabled
by default due to high performance cost, but should still be useful as a
debugging mode to flush out possible sources of executable memory corruption.

* Source/JavaScriptCore/assembler/ARM64Assembler.h:
* Source/JavaScriptCore/assembler/ARMv7Assembler.h:
(JSC::ARMv7Assembler::maxJumpReplacementSize):
* Source/JavaScriptCore/assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::performFinalization):
* Source/JavaScriptCore/assembler/RISCV64Assembler.h:
(JSC::RISCV64Assembler::maxJumpReplacementSize):
* Source/JavaScriptCore/assembler/X86Assembler.h:
(JSC::X86Assembler::replaceWithHlt):
(JSC::X86Assembler::replaceWithJump):
(JSC::X86Assembler::replaceWithNops):
(JSC::X86Assembler::maxJumpReplacementSize):
(JSC::X86Assembler::revertJumpTo_movq_i64r):
(JSC::X86Assembler::revertJumpTo_movl_i32r):
(JSC::X86Assembler::revertJumpTo_cmpl_ir_force32):
(JSC::X86Assembler::revertJumpTo_cmpl_im_force32):
(JSC::X86Assembler::fillNops):
(JSC::X86Assembler::setPointer):
(JSC::X86Assembler::setInt32):
(JSC::X86Assembler::setInt8):
* Source/JavaScriptCore/jit/ExecutableAllocator.cpp:
(JSC::ExecutableAllocator::startWriting):
(JSC::ExecutableAllocator::finishWriting):
(JSC::performJITMemcpyWithMProtect):
* Source/JavaScriptCore/jit/ExecutableAllocator.h:
(JSC::performJITMemcpy):
* Source/WTF/wtf/PlatformEnable.h:

Canonical link: https://commits.webkit.org/279455@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list