diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-09-09 23:14:30 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-09-09 23:14:30 +0200 |
| commit | da6cf94fc47f38cab580e9df1c6e6a46894aded5 (patch) | |
| tree | 1f7a4534926a79ee6376770c63cccd2aa9e37442 /CMakeLists.txt | |
| parent | 0467dc8f98ccef42290f7f7bd95060bfe198c035 (diff) | |
| parent | b99b79d8080cc1491f96069677d9ce0b7775a4f0 (diff) | |
| download | kernel-da6cf94fc47f38cab580e9df1c6e6a46894aded5.tar.xz kernel-da6cf94fc47f38cab580e9df1c6e6a46894aded5.zip | |
Merge branch 'fmorgner/x86-64-double-fault-handling' into 'develop'
x86_64: handle double faults
See merge request teachos/kernel!59
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 830da817..8f622050 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,15 @@ option(TEACHOS_ENABLE_TEST_TSAN "Enable TSan for the test executable" OFF) set(ACPI_ENABLE_TEST_COVERAGE ${TEACHOS_ENABLE_TEST_COVERAGE}) set(KSTD_ENABLE_TEST_COVERAGE ${TEACHOS_ENABLE_TEST_COVERAGE}) +set(CACHE{TEACHOS_STACK_FRAME_LIMIT} + TYPE STRING + HELP "The maximum allowed stack frame size in bytes." + VALUE "0" +) + +set(CACHE{TEACHOS_STACK_FRAME_LIMIT_DEBUG} TYPE INTERNAL VALUE "3072") +set(CACHE{TEACHOS_STACK_FRAME_LIMIT_RELEASE} TYPE INTERNAL VALUE "1280") + #[============================================================================[ # Global Build System Configuration #]============================================================================] @@ -67,8 +76,30 @@ add_compile_options( "$<$<CXX_COMPILER_ID:GNU>:-Wextra>" "$<$<CXX_COMPILER_ID:GNU>:-Werror>" "$<$<CXX_COMPILER_ID:GNU>:-pedantic-errors>" + "$<$<CXX_COMPILER_ID:GNU>:-fstack-protector-strong>" ) +if(NOT BUILD_TESTING) + if(TEACHOS_STACK_FRAME_LIMIT) + set(STACK_FRAME_LIMIT "${TEACHOS_STACK_FRAME_LIMIT}") + else() + set(STACK_FRAME_LIMIT "$<IF:$<CONFIG:Debug>,${TEACHOS_STACK_FRAME_LIMIT_DEBUG},${TEACHOS_STACK_FRAME_LIMIT_RELEASE}>") + endif() + + add_compile_options( + "$<$<CXX_COMPILER_ID:GNU>:-fstack-usage>" + "$<$<CXX_COMPILER_ID:GNU>:-Wframe-larger-than=${STACK_FRAME_LIMIT}>" + ) + + add_link_options( + "$<$<CXX_COMPILER_ID:GNU>:-fstack-usage>" + "$<$<CXX_COMPILER_ID:GNU>:-Wframe-larger-than=${STACK_FRAME_LIMIT}>" + "$<$<CXX_COMPILER_ID:GNU>:-Werror=frame-larger-than=${STACK_FRAME_LIMIT}>" + ) + + unset(STACK_FRAME_LIMIT) +endif() + #[============================================================================[ # Global Linting Configuration #]============================================================================] |
