mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-26 04:35:41 +03:00
CMake: Use CMAKE_POSITION_INDEPENDENT_CODE
instead of explicit -fpic
This makes CMake pass `-fpie` instead of `-fpic` to the compiler when building the Kernel and userland *executables*. This allows the compiler to make certain optimizations based on the fact that the code will be used in an executable, such as not having to emit `.localalias` symbols. This leads to a 450 KiB decrease in the size of the Kernel binary.
This commit is contained in:
parent
4defa401d3
commit
1f747b9132
Notes:
sideshowbarker
2024-07-16 18:03:21 +09:00
Author: https://github.com/BertalanD Commit: https://github.com/SerenityOS/serenity/commit/1f747b9132 Pull-request: https://github.com/SerenityOS/serenity/pull/21018 Reviewed-by: https://github.com/ADKaster ✅
@ -167,8 +167,6 @@ add_link_options(LINKER:-z,text)
|
|||||||
add_link_options(LINKER:--no-allow-shlib-undefined)
|
add_link_options(LINKER:--no-allow-shlib-undefined)
|
||||||
|
|
||||||
add_compile_definitions(SANITIZE_PTRS)
|
add_compile_definitions(SANITIZE_PTRS)
|
||||||
set(CMAKE_CXX_FLAGS_STATIC "${CMAKE_CXX_FLAGS} -static")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pie -fpic")
|
|
||||||
|
|
||||||
if (ENABLE_COMPILETIME_FORMAT_CHECK)
|
if (ENABLE_COMPILETIME_FORMAT_CHECK)
|
||||||
add_compile_definitions(ENABLE_COMPILETIME_FORMAT_CHECK)
|
add_compile_definitions(ENABLE_COMPILETIME_FORMAT_CHECK)
|
||||||
|
@ -27,6 +27,8 @@ add_link_options(-fstack-protector-strong)
|
|||||||
|
|
||||||
add_compile_options(-g1)
|
add_compile_options(-g1)
|
||||||
|
|
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
add_compile_options(-Wno-maybe-uninitialized)
|
add_compile_options(-Wno-maybe-uninitialized)
|
||||||
add_compile_options(-Wcast-align)
|
add_compile_options(-Wcast-align)
|
||||||
|
@ -30,7 +30,7 @@ add_definitions(-D_DYNAMIC_LOADER)
|
|||||||
|
|
||||||
set(SOURCES ${LOADER_SOURCES} ${AK_SOURCES} ${ELF_SOURCES} ${LIBC_SOURCES1} ${LIBC_SOURCES2} ${LIBC_SOURCES3} ${LIBSYSTEM_SOURCES})
|
set(SOURCES ${LOADER_SOURCES} ${AK_SOURCES} ${ELF_SOURCES} ${LIBC_SOURCES1} ${LIBC_SOURCES2} ${LIBC_SOURCES3} ${LIBSYSTEM_SOURCES})
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -nostdlib -pie -fpic -DNO_TLS")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -nostdlib -pie -fpie -DNO_TLS")
|
||||||
|
|
||||||
if ("${SERENITY_ARCH}" STREQUAL "aarch64")
|
if ("${SERENITY_ARCH}" STREQUAL "aarch64")
|
||||||
# On aarch64 the stack protector would be accessed before the Loader can relocate itself.
|
# On aarch64 the stack protector would be accessed before the Loader can relocate itself.
|
||||||
|
Loading…
Reference in New Issue
Block a user