diff options
author | Jakob P. Liljenberg <admin@qvantnet.com> | 2024-01-11 09:42:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-11 09:42:59 +0100 |
commit | c649369efb07fa5c267ff19019d9a107e7262542 (patch) | |
tree | 7ce18dd92c9a80259efb1d187cc60bfe491f28d2 | |
parent | d063cd300e1fc16786cf3fb73d8995fcb6e2291a (diff) | |
parent | 21fe2cc07b112ad225b1eb865ea974057ba8aa3b (diff) |
Merge pull request #648 from imwints/fortification
Increase fortification level
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | Makefile | 7 | ||||
-rw-r--r-- | README.md | 7 |
3 files changed, 15 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index c82b462..cd39946 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,7 @@ option(BTOP_LTO "Enable LTO" ON) option(BTOP_USE_MOLD "Use mold to link btop" OFF) option(BTOP_PEDANTIC "Enable a bunch of additional warnings" OFF) option(BTOP_WERROR "Compile with warnings as errors" OFF) +option(BTOP_FORTIFY "Detect buffer overflows with _FORTIFY_SOURCE=3" ON) option(BTOP_GPU "Enable GPU support" ON) cmake_dependent_option(BTOP_RSMI_STATIC "Link statically to ROCm SMI" OFF "BTOP_GPU" OFF) @@ -112,7 +113,7 @@ target_compile_definitions(btop PRIVATE _FILE_OFFSET_BITS=64 $<$<CONFIG:Debug>:_GLIBCXX_ASSERTIONS _LIBCPP_ENABLE_ASSERTIONS=1> # Only has an effect with optimizations enabled - $<$<NOT:$<CONFIG:Debug>>:_FORTIFY_SOURCE=2> + $<$<AND:$<NOT:$<CONFIG:Debug>>,$<BOOL:${BTOP_FORTIFY}>>:_FORTIFY_SOURCE=3> ) target_include_directories(btop SYSTEM PRIVATE include) @@ -50,6 +50,11 @@ ifeq ($(GPU_SUPPORT),true) override ADDFLAGS += -DGPU_SUPPORT endif +FORTIFY_SOURCE ?= true +ifeq ($(FORTIFY_SOURCE),true) + override ADDFLAGS += -D_FORTIFY_SOURCE=3 +endif + #? Compiler and Linker ifeq ($(shell $(CXX) --version | grep clang >/dev/null 2>&1; echo $$?),0) override CXX_IS_CLANG := true @@ -174,7 +179,7 @@ override GOODFLAGS := $(foreach flag,$(TESTFLAGS),$(strip $(shell echo "int main override REQFLAGS := -std=c++20 WARNFLAGS := -Wall -Wextra -pedantic OPTFLAGS := -O2 -ftree-vectorize -flto=$(LTO) -LDCXXFLAGS := -pthread -D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS -D_FILE_OFFSET_BITS=64 $(GOODFLAGS) $(ADDFLAGS) +LDCXXFLAGS := -pthread -D_GLIBCXX_ASSERTIONS -D_FILE_OFFSET_BITS=64 $(GOODFLAGS) $(ADDFLAGS) override CXXFLAGS += $(REQFLAGS) $(LDCXXFLAGS) $(OPTFLAGS) $(WARNFLAGS) override LDFLAGS += $(LDCXXFLAGS) $(OPTFLAGS) $(WARNFLAGS) INC := $(foreach incdir,$(INCDIRS),-isystem $(incdir)) -I$(SRCDIR) @@ -421,6 +421,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa | `STRIP=true` | To force stripping of debug symbols (adds `-s` linker flag) | | `DEBUG=true` | Sets OPTFLAGS to `-O0 -g` and enables more verbose debug logging | | `ARCH=<architecture>` | To manually set the target architecture | + | `FORTIFY_SOURCE=false` | Disable fortification with `_FORTIFY_SOURCE=3` | | `GPU_SUPPORT=<true\|false>` | Enable/disable GPU support (Enabled by default on X86_64 Linux) | | `RSMI_STATIC=true` | To statically link the ROCm SMI library used for querying AMDGPU | | `ADDFLAGS=<flags>` | For appending flags to both compiler and linker | @@ -519,6 +520,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa | `-DBTOP_USE_MOLD=<ON\|OFF>` | Use mold to link btop (OFF by default) | | `-DBTOP_PEDANTIC=<ON\|OFF>` | Compile with additional warnings (OFF by default) | | `-DBTOP_WERROR=<ON\|OFF>` | Compile with warnings as errors (OFF by default) | + | `-DBTOP_FORTIFY=<ON\|OFF>` | Detect buffer overflows with `_FORTIFY_SOURCE=3` (ON by default) | | `-DBTOP_GPU=<ON\|OFF>` | Enable GPU support (ON by default) | | `-DBTOP_RSMI_STATIC=<ON\|OFF>` | Build and link the ROCm SMI library statically (OFF by default) | | `-DCMAKE_INSTALL_PREFIX=<path>` | The installation prefix ('/usr/local' by default) | @@ -592,6 +594,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa | `STRIP=true` | To force stripping of debug symbols (adds `-s` linker flag) | | `DEBUG=true` | Sets OPTFLAGS to `-O0 -g` and enables more verbose debug logging | | `ARCH=<architecture>` | To manually set the target architecture | + | `FORTIFY_SOURCE=false` | Disable fortification with `_FORTIFY_SOURCE=3` | | `ADDFLAGS=<flags>` | For appending flags to both compiler and linker | | `CXX=<compiler>` | Manualy set which compiler to use | @@ -690,6 +693,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa | `-DBTOP_USE_MOLD=<ON\|OFF>` | Use mold to link btop (OFF by default) | | `-DBTOP_PEDANTIC=<ON\|OFF>` | Compile with additional warnings (OFF by default) | | `-DBTOP_WERROR=<ON\|OFF>` | Compile with warnings as errors (OFF by default) | + | `-DBTOP_FORTIFY=<ON\|OFF>` | Detect buffer overflows with `_FORTIFY_SOURCE=3` (ON by default) | | `-DCMAKE_INSTALL_PREFIX=<path>` | The installation prefix ('/usr/local' by default) | To force any specific compiler, run `CXX=<compiler> cmake -B build -G Ninja` @@ -758,6 +762,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa | `STRIP=true` | To force stripping of debug symbols (adds `-s` linker flag) | | `DEBUG=true` | Sets OPTFLAGS to `-O0 -g` and enables more verbose debug logging | | `ARCH=<architecture>` | To manually set the target architecture | + | `FORTIFY_SOURCE=false` | Disable fortification with `_FORTIFY_SOURCE=3` | | `ADDFLAGS=<flags>` | For appending flags to both compiler and linker | | `CXX=<compiler>` | Manualy set which compiler to use | @@ -867,6 +872,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa | `-DBTOP_USE_MOLD=<ON\|OFF>` | Use mold to link btop (OFF by default) | | `-DBTOP_PEDANTIC=<ON\|OFF>` | Compile with additional warnings (OFF by default) | | `-DBTOP_WERROR=<ON\|OFF>` | Compile with warnings as errors (OFF by default) | + | `-DBTOP_FORTIFY=<ON\|OFF>` | Detect buffer overflows with `_FORTIFY_SOURCE=3` (ON by default) | | `-DCMAKE_INSTALL_PREFIX=<path>` | The installation prefix ('/usr/local' by default) | _**Note:** Static linking does not work with GCC._ @@ -937,6 +943,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa | `STRIP=true` | To force stripping of debug symbols (adds `-s` linker flag) | | `DEBUG=true` | Sets OPTFLAGS to `-O0 -g` and enables more verbose debug logging | | `ARCH=<architecture>` | To manually set the target architecture | + | `FORTIFY_SOURCE=false` | Disable fortification with `_FORTIFY_SOURCE=3` | | `ADDFLAGS=<flags>` | For appending flags to both compiler and linker | | `CXX=<compiler>` | Manualy set which compiler to use | |