mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 22:37:34 +00:00
Kernel: Make -pie work for x86_64
This commit is contained in:
parent
9d8482c3e8
commit
0edc17ee76
2 changed files with 7 additions and 2 deletions
|
@ -357,13 +357,14 @@ if (NOT ${CMAKE_HOST_SYSTEM_NAME} MATCHES SerenityOS)
|
|||
endif()
|
||||
|
||||
if ("${SERENITY_ARCH}" STREQUAL "x86_64")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcmodel=large -fno-pic -mno-red-zone")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcmodel=large -mno-red-zone")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -faligned-new=8")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pie -fPIE")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -faligned-new=4")
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pie -Wl,--no-dynamic-linker")
|
||||
|
||||
# Kernel Undefined Behavior Sanitizer (KUBSAN)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
|
||||
|
||||
|
|
|
@ -308,6 +308,7 @@ void signal_trampoline_dummy()
|
|||
// necessary to preserve it here.
|
||||
asm(
|
||||
".intel_syntax noprefix\n"
|
||||
".globl asm_signal_trampoline\n"
|
||||
"asm_signal_trampoline:\n"
|
||||
"push ebp\n"
|
||||
"mov ebp, esp\n"
|
||||
|
@ -319,6 +320,7 @@ void signal_trampoline_dummy()
|
|||
"add esp, 8\n"
|
||||
"mov eax, %P0\n"
|
||||
"int 0x82\n" // sigreturn syscall
|
||||
".globl asm_signal_trampoline_end\n"
|
||||
"asm_signal_trampoline_end:\n"
|
||||
".att_syntax" ::"i"(Syscall::SC_sigreturn));
|
||||
#elif ARCH(X86_64)
|
||||
|
@ -329,6 +331,7 @@ void signal_trampoline_dummy()
|
|||
// necessary to preserve it here.
|
||||
asm(
|
||||
".intel_syntax noprefix\n"
|
||||
".globl asm_signal_trampoline\n"
|
||||
"asm_signal_trampoline:\n"
|
||||
"push rbp\n"
|
||||
"mov rbp, rsp\n"
|
||||
|
@ -339,6 +342,7 @@ void signal_trampoline_dummy()
|
|||
"add rsp, 8\n"
|
||||
"mov rax, %P0\n"
|
||||
"int 0x82\n" // sigreturn syscall
|
||||
".globl asm_signal_trampoline_end\n"
|
||||
"asm_signal_trampoline_end:\n"
|
||||
".att_syntax" ::"i"(Syscall::SC_sigreturn));
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue