Changeset 287908 in webkit
- Timestamp:
- Jan 11, 2022 8:03:20 PM (2 years ago)
- Location:
- trunk/Source
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r287903 r287908 1 2022-01-11 Mark Lam <mark.lam@apple.com> 2 3 Update hashThreadState() to exclude __opaque_flags. 4 https://bugs.webkit.org/show_bug.cgi?id=235081 5 rdar://86282584 6 7 Reviewed by Keith Miller. 8 9 Removed some unused code. 10 11 * runtime/MachineContext.h: 12 (JSC::MachineContext::stackPointer): 13 (JSC::MachineContext::framePointer): 14 (JSC::MachineContext::instructionPointer): 15 (JSC::MachineContext::linkRegister): 16 (JSC::MachineContext::setStackPointer): Deleted. 17 (JSC::MachineContext::setFramePointer): Deleted. 18 (JSC::MachineContext::setLinkRegister): Deleted. 19 1 20 2022-01-11 Asumu Takikawa <asumu@igalia.com> 2 21 -
trunk/Source/JavaScriptCore/runtime/MachineContext.h
r287464 r287908 1 1 /* 2 2 * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>. 3 * Copyright (C) 2018 Apple Inc. All rights reserved.3 * Copyright (C) 2018-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 40 40 41 41 #if OS(WINDOWS) || HAVE(MACHINE_CONTEXT) 42 template<typename T = void*> void setStackPointer(PlatformRegisters&, T);43 42 template<typename T = void*> T framePointer(const PlatformRegisters&); 44 template<typename T = void*> void setFramePointer(PlatformRegisters&, T);45 43 inline MacroAssemblerCodePtr<PlatformRegistersLRPtrTag> linkRegister(const PlatformRegisters&); 46 inline void setLinkRegister(PlatformRegisters&, MacroAssemblerCodePtr<CFunctionPtrTag>);47 44 inline std::optional<MacroAssemblerCodePtr<PlatformRegistersPCPtrTag>> instructionPointer(const PlatformRegisters&); 48 45 inline void setInstructionPointer(PlatformRegisters&, MacroAssemblerCodePtr<CFunctionPtrTag>); … … 68 65 69 66 template<typename T = void*> T stackPointer(const mcontext_t&); 70 template<typename T = void*> void setStackPointer(mcontext_t&, T);71 67 template<typename T = void*> T framePointer(const mcontext_t&); 72 template<typename T = void*> void setFramePointer(mcontext_t&, T);73 68 inline MacroAssemblerCodePtr<PlatformRegistersPCPtrTag> instructionPointer(const mcontext_t&); 74 inline void setInstructionPointer(mcontext_t&, MacroAssemblerCodePtr<CFunctionPtrTag>);75 69 76 70 template<size_t N> void*& argumentPointer(mcontext_t&); … … 151 145 } 152 146 153 template<typename T>154 inline void setStackPointer(PlatformRegisters& regs, T value)155 {156 #if USE(PLATFORM_REGISTERS_WITH_PROFILE)157 assertIsNotTagged(bitwise_cast<void*>(value));158 WTF_WRITE_PLATFORM_REGISTERS_SP_WITH_PROFILE(regs, bitwise_cast<void*>(value));159 #elif USE(DARWIN_REGISTER_MACROS)160 __darwin_arm_thread_state64_set_sp(regs, value);161 #else162 stackPointerImpl(regs) = bitwise_cast<void*>(value);163 #endif164 }165 166 147 #else // not OS(WINDOWS) || HAVE(MACHINE_CONTEXT) 167 148 … … 230 211 #endif 231 212 } 232 233 template<typename T>234 inline void setStackPointer(mcontext_t& machineContext, T value)235 {236 #if USE(PLATFORM_REGISTERS_WITH_PROFILE)237 assertIsNotTagged(bitwise_cast<void*>(value));238 WTF_WRITE_MACHINE_CONTEXT_SP_WITH_PROFILE(machineContext, bitwise_cast<void*>(value));239 #elif USE(DARWIN_REGISTER_MACROS)240 return setStackPointer(machineContext->__ss, value);241 #else242 stackPointerImpl(machineContext) = bitwise_cast<void*>(value);243 #endif244 }245 213 #endif // HAVE(MACHINE_CONTEXT) 246 214 … … 312 280 #endif 313 281 } 314 315 template<typename T>316 inline void setFramePointer(PlatformRegisters& regs, T value)317 {318 #if USE(PLATFORM_REGISTERS_WITH_PROFILE)319 assertIsNotTagged(bitwise_cast<void*>(value));320 WTF_WRITE_PLATFORM_REGISTERS_FP_WITH_PROFILE(regs, bitwise_cast<void*>(value));321 #else322 framePointerImpl(regs) = bitwise_cast<void*>(value);323 #endif324 }325 282 #endif // OS(WINDOWS) || HAVE(MACHINE_CONTEXT) 326 283 … … 383 340 #else 384 341 return bitwise_cast<T>(framePointerImpl(const_cast<mcontext_t&>(machineContext))); 385 #endif386 }387 388 template<typename T>389 inline void setFramePointer(mcontext_t& machineContext, T value)390 {391 #if USE(PLATFORM_REGISTERS_WITH_PROFILE)392 assertIsNotTagged(bitwise_cast<void*>(value));393 WTF_WRITE_MACHINE_CONTEXT_FP_WITH_PROFILE(machineContext, bitwise_cast<void*>(value));394 #else395 framePointerImpl(machineContext) = bitwise_cast<void*>(value);396 342 #endif 397 343 } … … 542 488 #endif 543 489 } 544 545 inline void setInstructionPointer(mcontext_t& machineContext, MacroAssemblerCodePtr<CFunctionPtrTag> value)546 {547 #if USE(PLATFORM_REGISTERS_WITH_PROFILE)548 WTF_WRITE_MACHINE_CONTEXT_PC_WITH_PROFILE(machineContext, value.executableAddress());549 #elif USE(DARWIN_REGISTER_MACROS)550 setInstructionPointer(machineContext->__ss, value);551 #else552 instructionPointerImpl(machineContext) = value.executableAddress();553 #endif554 }555 490 #endif // HAVE(MACHINE_CONTEXT) 556 491 … … 568 503 #endif 569 504 return MacroAssemblerCodePtr<PlatformRegistersLRPtrTag>(value); 570 }571 572 inline void setLinkRegister(PlatformRegisters& regs, MacroAssemblerCodePtr<CFunctionPtrTag> value)573 {574 #if USE(PLATFORM_REGISTERS_WITH_PROFILE)575 WTF_WRITE_PLATFORM_REGISTERS_PC_WITH_PROFILE(regs, value.executableAddress());576 #else577 __darwin_arm_thread_state64_set_lr_fptr(regs, value.executableAddress());578 #endif579 505 } 580 506 #endif // OS(DARWIN) && __DARWIN_UNIX03 && CPU(ARM64) -
trunk/Source/WTF/ChangeLog
r287879 r287908 1 2022-01-11 Mark Lam <mark.lam@apple.com> 2 3 Update hashThreadState() to exclude __opaque_flags. 4 https://bugs.webkit.org/show_bug.cgi?id=235081 5 rdar://86282584 6 7 Reviewed by Keith Miller. 8 9 The __opaque_flags may be used by the OS, and may be altered without our knowledge. 10 Hence, our hash should not include the __opaque_flags field. 11 12 Also remove some unused code. 13 14 * wtf/PlatformRegisters.h: 15 * wtf/threads/Signals.cpp: 16 (WTF::hashThreadState): 17 1 18 2022-01-11 Sam Weinig <weinig@apple.com> 2 19 -
trunk/Source/WTF/wtf/PlatformRegisters.h
r285019 r287908 1 1 /* 2 2 * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com> 3 * Copyright (C) 2019 Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 120 120 reinterpret_cast<void*>(arm_thread_state64_get_sp(const_cast<PlatformRegisters&>(regs))) 121 121 122 #define WTF_WRITE_PLATFORM_REGISTERS_SP_WITH_PROFILE(regs, newPointer) \123 arm_thread_state64_set_sp(regs, reinterpret_cast<uintptr_t>(newPointer))124 125 122 #define WTF_READ_PLATFORM_REGISTERS_FP_WITH_PROFILE(regs) \ 126 123 reinterpret_cast<void*>(arm_thread_state64_get_fp(const_cast<PlatformRegisters&>(regs))) 127 124 128 #define WTF_WRITE_PLATFORM_REGISTERS_FP_WITH_PROFILE(regs, newPointer) \129 arm_thread_state64_set_fp(regs, reinterpret_cast<uintptr_t>(newPointer))130 131 125 #define WTF_READ_PLATFORM_REGISTERS_LR_WITH_PROFILE(regs) \ 132 126 threadStateLRInternal(const_cast<PlatformRegisters&>(regs)) 133 134 #define WTF_WRITE_PLATFORM_REGISTERS_LR_WITH_PROFILE(regs, newPointer) \135 arm_thread_state64_set_lr_fptr(regs, newPointer)136 127 137 128 #define WTF_READ_PLATFORM_REGISTERS_PC_WITH_PROFILE(regs) \ … … 144 135 WTF_READ_PLATFORM_REGISTERS_SP_WITH_PROFILE(machineContext->__ss) 145 136 146 #define WTF_WRITE_MACHINE_CONTEXT_SP_WITH_PROFILE(machineContext, newPointer) \147 WTF_WRITE_PLATFORM_REGISTERS_SP_WITH_PROFILE(machineContext->__ss, newPointer)148 149 137 #define WTF_READ_MACHINE_CONTEXT_FP_WITH_PROFILE(machineContext) \ 150 138 WTF_READ_PLATFORM_REGISTERS_FP_WITH_PROFILE(machineContext->__ss) 151 152 #define WTF_WRITE_MACHINE_CONTEXT_FP_WITH_PROFILE(machineContext, newPointer) \153 WTF_WRITE_PLATFORM_REGISTERS_FP_WITH_PROFILE(machineContext->__ss, newPointer)154 155 #define WTF_WRITE_MACHINE_CONTEXT_LR_WITH_PROFILE(machineContext, newPointer) \156 WTF_WRITE_PLATFORM_REGISTERS_LR_WITH_PROFILE(machineContext->__ss, newPointer)157 139 158 140 #define WTF_READ_MACHINE_CONTEXT_PC_WITH_PROFILE(machineContext) \ 159 141 WTF_READ_PLATFORM_REGISTERS_PC_WITH_PROFILE(machineContext->__ss) 160 142 161 #define WTF_WRITE_MACHINE_CONTEXT_PC_WITH_PROFILE(machineContext, newPointer) \162 WTF_WRITE_PLATFORM_REGISTERS_PC_WITH_PROFILE(machineContext->__ss, newPointer)163 164 143 #endif // USE(PLATFORM_REGISTERS_WITH_PROFILE) 165 144 -
trunk/Source/WTF/wtf/threads/Signals.cpp
r284533 r287908 1 1 /* 2 * Copyright (C) 2017-202 0Apple Inc. All rights reserved.2 * Copyright (C) 2017-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 173 173 const uintptr_t* srcPtr = reinterpret_cast<const uintptr_t*>(source); 174 174 175 for (size_t i = 0; i < threadStateSizeInPointers; ++i) { 175 // Exclude the __opaque_flags field which is reserved for OS use. 176 // __opaque_flags is at the end of the payload. 177 for (size_t i = 0; i < threadStateSizeInPointers - 1; ++i) { 176 178 if (i != threadStatePCPointerIndex) 177 179 hash = ptrauth_sign_generic_data(srcPtr[i], hash); 178 180 } 181 const uint32_t* cpsrPtr = reinterpret_cast<const uint32_t*>(&srcPtr[threadStateSizeInPointers - 1]); 182 hash = ptrauth_sign_generic_data(static_cast<uint64_t>(*cpsrPtr), hash); 179 183 180 184 return hash;
Note: See TracChangeset
for help on using the changeset viewer.