mirror of
https://github.com/ceph/ceph
synced 2026-08-02 07:03:18 +00:00
cmake: explicitly support and enable vptr sanitizer
As of Clang 21, -fsanitize=undefined no longer implies vptr.
This adds vptr as an explicit component and provides the necessary compile options to satisfy Seastar's build requirements.
See: c1060ea7d4 for more details
Signed-off-by: Aishwarya Mathuria <amathuri@redhat.com>
This commit is contained in:
parent
ac04710781
commit
f29e98fb5b
@ -1,6 +1,6 @@
|
||||
if(NOT Sanitizers_FIND_COMPONENTS)
|
||||
set(Sanitizers_FIND_COMPONENTS
|
||||
address undefined_behavior)
|
||||
address undefined_behavior vptr)
|
||||
endif()
|
||||
if(HAVE_JEMALLOC)
|
||||
message(WARNING "JeMalloc does not work well with sanitizers")
|
||||
@ -23,7 +23,11 @@ foreach(component ${Sanitizers_FIND_COMPONENTS})
|
||||
set(Sanitizers_thread_COMPILE_OPTIONS "-fsanitize=thread")
|
||||
elseif(component STREQUAL "undefined_behavior")
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88684
|
||||
set(Sanitizers_undefined_behavior_COMPILE_OPTIONS "-fsanitize=undefined;-fno-sanitize=vptr")
|
||||
set(Sanitizers_undefined_behavior_COMPILE_OPTIONS "-fsanitize=undefined")
|
||||
elseif (component STREQUAL "vptr")
|
||||
# since Clang version 21, -fsanitize=undefined no longer implies vptr,
|
||||
# so we enable it explicitly
|
||||
set(Sanitizers_vptr_COMPILE_OPTIONS "-fno-sanitize=vptr")
|
||||
else()
|
||||
message(SEND_ERROR "Unsupported sanitizer: ${component}")
|
||||
endif()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user