- User Since
- Nov 1 2018, 7:20 PM (143 w, 4 d)
Chang default value of LIBUNWIND_ENABLE_CET to OFF in libunwind CMakeFile.
Since the LLVM_BUILD_CET_ENABLE has not been added to LLVM building system, we can set LIBUNWIND_ENABLE_CET default value to OFF currently.
When LLVM_BUILD_CET_ENABLE is supported in LLVM building, we can set the default value to LLVM_ENABLE_CET.
Fri, Jul 30
- Report error for LIBUNWIND_ENABLE_CET + MSVC
- Turn unw_cet_get_registers to an internal function libunwind_cet_get_registers
- Some tiny code format change.
Thu, Jul 29
Wed, Jul 28
- Rename LIBUNWIND_BUILD_CET_ENABLE to LIBUNWIND_ENABLE_CET in libunwind CMakeFile and remove unnecessary LIBUNWIND_CET_ON local variable
- Get rid of using value of _LIBUNWIND_CET_ENABLED and using "_LIBUNWIND_TARGET_I386" and "_LIBUNWIND_TARGET_X86_64" to select inline asm.
Tue, Jul 27
Wed, Jul 21
Add a build option "LIBUNWIND_BUILD_CET_ENABLE" to enable CET for libunwind.
Tue, Jul 20
Mon, Jul 19
Thu, Jul 15
Use scratch register %rcx for indirect jumping to landing pad, there are 2 reasons for this:
- it is safer since red zone may be unavailable
- align with 32bit mode
This update fixes some format issue and updates the way to jump to landing pad in 32bit node.
Previously, we used following code to jump to landing pad:
add $4, %esp
If interrupt comes in between these 2 instructions, interrupt handler may change the contents of "-4(%esp)" since there is no red zone in 32bit mode. To fix this issue, we align with gcc unwind to use %ecx to store landing pad address and jmp to it: