diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 11aca9970b..61ad2b6a0f 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -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") diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 57686035ce..3bee7ed171 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -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