mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -07:00
build!: rename sanitizer options from CLANG_* to ENABLE_*
This commit is contained in:
parent
5bad9afed2
commit
17ce634b8f
4
.github/workflows/test.yml
vendored
4
.github/workflows/test.yml
vendored
@ -132,11 +132,11 @@ jobs:
|
|||||||
- flavor: asan
|
- flavor: asan
|
||||||
cc: clang
|
cc: clang
|
||||||
runner: ubuntu-22.04
|
runner: ubuntu-22.04
|
||||||
flags: -D CLANG_ASAN_UBSAN=ON
|
flags: -D ENABLE_ASAN_UBSAN=ON
|
||||||
- flavor: tsan
|
- flavor: tsan
|
||||||
cc: clang
|
cc: clang
|
||||||
runner: ubuntu-22.04
|
runner: ubuntu-22.04
|
||||||
flags: -D CLANG_TSAN=ON
|
flags: -D ENABLE_TSAN=ON
|
||||||
- flavor: uchar
|
- flavor: uchar
|
||||||
cc: gcc
|
cc: gcc
|
||||||
runner: ubuntu-22.04
|
runner: ubuntu-22.04
|
||||||
|
@ -135,18 +135,18 @@ endif()
|
|||||||
|
|
||||||
option(LOG_LIST_ACTIONS "Add list actions logging" OFF)
|
option(LOG_LIST_ACTIONS "Add list actions logging" OFF)
|
||||||
|
|
||||||
option(CLANG_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF)
|
option(ENABLE_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF)
|
||||||
option(LOG_DEBUG "Enable debug log messages even in a release build" OFF)
|
option(LOG_DEBUG "Enable debug log messages even in a release build" OFF)
|
||||||
option(CLANG_MSAN "Enable Clang memory sanitizer for nvim binary." OFF)
|
option(ENABLE_MSAN "Enable Clang memory sanitizer for nvim binary." OFF)
|
||||||
option(CLANG_TSAN "Enable Clang thread sanitizer for nvim binary." OFF)
|
option(ENABLE_TSAN "Enable Clang thread sanitizer for nvim binary." OFF)
|
||||||
|
|
||||||
if((CLANG_ASAN_UBSAN AND CLANG_MSAN)
|
if((ENABLE_ASAN_UBSAN AND ENABLE_MSAN)
|
||||||
OR (CLANG_ASAN_UBSAN AND CLANG_TSAN)
|
OR (ENABLE_ASAN_UBSAN AND ENABLE_TSAN)
|
||||||
OR (CLANG_MSAN AND CLANG_TSAN))
|
OR (ENABLE_MSAN AND ENABLE_TSAN))
|
||||||
message(FATAL_ERROR "Sanitizers cannot be enabled simultaneously")
|
message(FATAL_ERROR "Sanitizers cannot be enabled simultaneously")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN)
|
if(ENABLE_ASAN_UBSAN OR ENABLE_MSAN OR ENABLE_TSAN)
|
||||||
if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_C_COMPILER_ID MATCHES "GNU")
|
if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_C_COMPILER_ID MATCHES "GNU")
|
||||||
message(FATAL_ERROR "Sanitizers are only supported for Clang and GCC")
|
message(FATAL_ERROR "Sanitizers are only supported for Clang and GCC")
|
||||||
endif()
|
endif()
|
||||||
|
@ -124,7 +124,7 @@ Each pull request must pass the automated builds on [Cirrus CI] and [GitHub Acti
|
|||||||
- If any tests fail, the build will fail. See [test/README.md#running-tests][run-tests] to run tests locally.
|
- If any tests fail, the build will fail. See [test/README.md#running-tests][run-tests] to run tests locally.
|
||||||
- CI runs [ASan] and other analyzers.
|
- CI runs [ASan] and other analyzers.
|
||||||
- To run valgrind locally: `VALGRIND=1 make test`
|
- To run valgrind locally: `VALGRIND=1 make test`
|
||||||
- To run Clang ASan/UBSan locally: `CC=clang make CMAKE_FLAGS="-DCLANG_ASAN_UBSAN=ON"`
|
- To run Clang ASan/UBSan locally: `CC=clang make CMAKE_FLAGS="-DENABLE_ASAN_UBSAN=ON"`
|
||||||
- The [lint](#lint) build checks modified lines _and their immediate
|
- The [lint](#lint) build checks modified lines _and their immediate
|
||||||
neighbors_, to encourage incrementally updating the legacy style to meet our
|
neighbors_, to encourage incrementally updating the legacy style to meet our
|
||||||
[style](#style). (See [#3174][3174] for background.)
|
[style](#style). (See [#3174][3174] for background.)
|
||||||
@ -183,7 +183,7 @@ master build. To view the defects, just request access; you will be approved.
|
|||||||
|
|
||||||
- To build Neovim with sanitizers enabled, use
|
- To build Neovim with sanitizers enabled, use
|
||||||
```
|
```
|
||||||
rm -rf build && CMAKE_EXTRA_FLAGS="-DCMAKE_C_COMPILER=clang -DCLANG_ASAN_UBSAN=1" make
|
rm -rf build && CMAKE_EXTRA_FLAGS="-DCMAKE_C_COMPILER=clang -DENABLE_ASAN_UBSAN=1" make
|
||||||
```
|
```
|
||||||
- When running Neovim, use
|
- When running Neovim, use
|
||||||
```
|
```
|
||||||
@ -294,7 +294,7 @@ If a function in your Lua module should not be documented (e.g. internal functio
|
|||||||
---@private
|
---@private
|
||||||
```
|
```
|
||||||
|
|
||||||
Mark functions that are deprecated as
|
Mark functions that are deprecated as
|
||||||
```
|
```
|
||||||
---@deprecated
|
---@deprecated
|
||||||
```
|
```
|
||||||
|
@ -19,7 +19,7 @@ endif()
|
|||||||
set(LUA_CFLAGS "-O0 -g3 -fPIC")
|
set(LUA_CFLAGS "-O0 -g3 -fPIC")
|
||||||
set(LUA_LDFLAGS "")
|
set(LUA_LDFLAGS "")
|
||||||
|
|
||||||
if(CLANG_ASAN_UBSAN)
|
if(ENABLE_ASAN_UBSAN)
|
||||||
set(LUA_CFLAGS "${LUA_CFLAGS} -fsanitize=address")
|
set(LUA_CFLAGS "${LUA_CFLAGS} -fsanitize=address")
|
||||||
set(LUA_CFLAGS "${LUA_CFLAGS} -fno-omit-frame-pointer")
|
set(LUA_CFLAGS "${LUA_CFLAGS} -fno-omit-frame-pointer")
|
||||||
set(LUA_CFLAGS "${LUA_CFLAGS} -fno-optimize-sibling-calls")
|
set(LUA_CFLAGS "${LUA_CFLAGS} -fno-optimize-sibling-calls")
|
||||||
|
@ -16,7 +16,7 @@ export ASAN_OPTIONS="detect_leaks=0:log_path=$log_path/asan"
|
|||||||
# Show backtraces in the logs.
|
# Show backtraces in the logs.
|
||||||
export UBSAN_OPTIONS="print_stacktrace=1"
|
export UBSAN_OPTIONS="print_stacktrace=1"
|
||||||
|
|
||||||
make -C "$root_path" CMAKE_EXTRA_FLAGS="-DCLANG_ASAN_UBSAN=ON"
|
make -C "$root_path" CMAKE_EXTRA_FLAGS="-DENABLE_ASAN_UBSAN=ON"
|
||||||
VIMRUNTIME="$root_path"/runtime "$root_path"/build/bin/nvim
|
VIMRUNTIME="$root_path"/runtime "$root_path"/build/bin/nvim
|
||||||
|
|
||||||
# Need to manually reset terminal to avoid mangled output, nvim does not
|
# Need to manually reset terminal to avoid mangled output, nvim does not
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
] ++ final.lib.optionals final.stdenv.isLinux [
|
] ++ final.lib.optionals final.stdenv.isLinux [
|
||||||
# https://github.com/google/sanitizers/wiki/AddressSanitizerFlags
|
# https://github.com/google/sanitizers/wiki/AddressSanitizerFlags
|
||||||
# https://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports
|
# https://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports
|
||||||
"-DCLANG_ASAN_UBSAN=ON"
|
"-DENABLE_ASAN_UBSAN=ON"
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -200,9 +200,9 @@ endif()
|
|||||||
|
|
||||||
option(ENABLE_GCOV "Enable gcov support" OFF)
|
option(ENABLE_GCOV "Enable gcov support" OFF)
|
||||||
if(ENABLE_GCOV)
|
if(ENABLE_GCOV)
|
||||||
if(CLANG_TSAN)
|
if(ENABLE_TSAN)
|
||||||
# GCOV and TSAN results in false data race reports
|
# GCOV and TSAN results in false data race reports
|
||||||
message(FATAL_ERROR "ENABLE_GCOV cannot be used with CLANG_TSAN")
|
message(FATAL_ERROR "ENABLE_GCOV cannot be used with ENABLE_TSAN")
|
||||||
endif()
|
endif()
|
||||||
message(STATUS "Enabling gcov support")
|
message(STATUS "Enabling gcov support")
|
||||||
target_compile_options(main_lib INTERFACE --coverage)
|
target_compile_options(main_lib INTERFACE --coverage)
|
||||||
@ -378,7 +378,7 @@ else()
|
|||||||
target_compile_definitions(nvim PRIVATE $<$<CONFIG:Debug>:NVIM_LOG_DEBUG>)
|
target_compile_definitions(nvim PRIVATE $<$<CONFIG:Debug>:NVIM_LOG_DEBUG>)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN)
|
if(ENABLE_ASAN_UBSAN OR ENABLE_MSAN OR ENABLE_TSAN)
|
||||||
target_compile_definitions(main_lib INTERFACE EXITFREE)
|
target_compile_definitions(main_lib INTERFACE EXITFREE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -791,7 +791,7 @@ set_target_properties(
|
|||||||
target_compile_definitions(libnvim PRIVATE MAKE_LIB)
|
target_compile_definitions(libnvim PRIVATE MAKE_LIB)
|
||||||
target_link_libraries(libnvim PRIVATE main_lib PUBLIC libuv)
|
target_link_libraries(libnvim PRIVATE main_lib PUBLIC libuv)
|
||||||
|
|
||||||
if(CLANG_ASAN_UBSAN)
|
if(ENABLE_ASAN_UBSAN)
|
||||||
message(STATUS "Enabling Clang address sanitizer and undefined behavior sanitizer for nvim.")
|
message(STATUS "Enabling Clang address sanitizer and undefined behavior sanitizer for nvim.")
|
||||||
if(CI_BUILD)
|
if(CI_BUILD)
|
||||||
# Try to recover from all sanitize issues so we get reports about all failures
|
# Try to recover from all sanitize issues so we get reports about all failures
|
||||||
@ -805,7 +805,7 @@ if(CLANG_ASAN_UBSAN)
|
|||||||
-fsanitize=address
|
-fsanitize=address
|
||||||
-fsanitize=undefined)
|
-fsanitize=undefined)
|
||||||
target_link_libraries(nvim PRIVATE -fsanitize=address -fsanitize=undefined)
|
target_link_libraries(nvim PRIVATE -fsanitize=address -fsanitize=undefined)
|
||||||
elseif(CLANG_MSAN)
|
elseif(ENABLE_MSAN)
|
||||||
message(STATUS "Enabling Clang memory sanitizer for nvim.")
|
message(STATUS "Enabling Clang memory sanitizer for nvim.")
|
||||||
target_compile_options(nvim PRIVATE
|
target_compile_options(nvim PRIVATE
|
||||||
-fsanitize=memory
|
-fsanitize=memory
|
||||||
@ -813,7 +813,7 @@ elseif(CLANG_MSAN)
|
|||||||
-fno-omit-frame-pointer
|
-fno-omit-frame-pointer
|
||||||
-fno-optimize-sibling-calls)
|
-fno-optimize-sibling-calls)
|
||||||
target_link_libraries(nvim PRIVATE -fsanitize=memory -fsanitize-memory-track-origins)
|
target_link_libraries(nvim PRIVATE -fsanitize=memory -fsanitize-memory-track-origins)
|
||||||
elseif(CLANG_TSAN)
|
elseif(ENABLE_TSAN)
|
||||||
message(STATUS "Enabling Clang thread sanitizer for nvim.")
|
message(STATUS "Enabling Clang thread sanitizer for nvim.")
|
||||||
target_compile_options(nvim PRIVATE -fsanitize=thread -fPIE)
|
target_compile_options(nvim PRIVATE -fsanitize=thread -fPIE)
|
||||||
target_link_libraries(nvim PRIVATE -fsanitize=thread)
|
target_link_libraries(nvim PRIVATE -fsanitize=thread)
|
||||||
|
@ -60,9 +60,9 @@ Requires clang 3.4 or later, and `llvm-symbolizer` must be in `$PATH`:
|
|||||||
|
|
||||||
Build Nvim with sanitizer instrumentation (choose one):
|
Build Nvim with sanitizer instrumentation (choose one):
|
||||||
|
|
||||||
CC=clang make CMAKE_EXTRA_FLAGS="-DCLANG_ASAN_UBSAN=ON"
|
CC=clang make CMAKE_EXTRA_FLAGS="-DENABLE_ASAN_UBSAN=ON"
|
||||||
CC=clang make CMAKE_EXTRA_FLAGS="-DCLANG_MSAN=ON"
|
CC=clang make CMAKE_EXTRA_FLAGS="-DENABLE_MSAN=ON"
|
||||||
CC=clang make CMAKE_EXTRA_FLAGS="-DCLANG_TSAN=ON"
|
CC=clang make CMAKE_EXTRA_FLAGS="-DENABLE_TSAN=ON"
|
||||||
|
|
||||||
Create a directory to store logs:
|
Create a directory to store logs:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user