diff --git a/.gitignore b/.gitignore index db3f77d7d1e..4bc162c1b0f 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,9 @@ *.stderr *.stdout +# llvm-xray logs +xray-log.* + /docs/build /docs/publish /docs/edit diff --git a/CMakeLists.txt b/CMakeLists.txt index abbc48ab23a..c6b8b5c6cf3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -119,6 +119,8 @@ add_library(global-libs INTERFACE) include (cmake/sanitize.cmake) +include (cmake/instrument.cmake) + option(ENABLE_COLORED_BUILD "Enable colors in compiler output" ON) set (CMAKE_COLOR_MAKEFILE ${ENABLE_COLORED_BUILD}) # works only for the makefile generator diff --git a/cmake/instrument.cmake b/cmake/instrument.cmake new file mode 100644 index 00000000000..bd2fb4d45fc --- /dev/null +++ b/cmake/instrument.cmake @@ -0,0 +1,20 @@ +# https://llvm.org/docs/XRay.html + +option (ENABLE_XRAY "Enable LLVM XRay" OFF) + +if (NOT ENABLE_XRAY) + message (STATUS "Not using LLVM XRay") + return() +endif() + +if (NOT (ARCH_AMD64 AND (OS_LINUX OR OS_FREEBSD))) + message (STATUS "Not using LLVM XRay, only amd64 Linux or FreeBSD are supported") + return() +endif() + +# The target clang must support xray, otherwise it should error on invalid option +set (XRAY_FLAGS "-fxray-instrument -DUSE_XRAY") +set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${XRAY_FLAGS}") +set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${XRAY_FLAGS}") + +message (STATUS "Using LLVM XRay") diff --git a/src/Daemon/BaseDaemon.cpp b/src/Daemon/BaseDaemon.cpp index fdffca9b4ef..84a75b79b0e 100644 --- a/src/Daemon/BaseDaemon.cpp +++ b/src/Daemon/BaseDaemon.cpp @@ -738,6 +738,7 @@ std::string BaseDaemon::getDefaultConfigFileName() const void BaseDaemon::closeFDs() { +#if !defined(USE_XRAY) /// NOTE: may benefit from close_range() (linux 5.9+) #if defined(OS_FREEBSD) || defined(OS_DARWIN) fs::path proc_path{"/dev/fd"}; @@ -785,13 +786,13 @@ void BaseDaemon::closeFDs() } } } +#endif } void BaseDaemon::initialize(Application & self) { closeFDs(); - ServerApplication::initialize(self); /// now highest priority (lowest value) is PRIO_APPLICATION = -100, we want higher!