brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.6 KiB · c79b0b6 Raw
455 lines · plain
1# Build for all components of the XRay runtime support library.2 3# XRay runtime library implementation files.4set(XRAY_SOURCES5  xray_buffer_queue.cpp6  xray_init.cpp7  xray_flags.cpp8  xray_interface.cpp9  xray_log_interface.cpp10  xray_utils.cpp11  )12 13set(XRAY_DSO_SOURCES14  xray_dso_init.cpp15  )16 17# Implementation files for all XRay modes.18set(XRAY_FDR_MODE_SOURCES19  xray_fdr_flags.cpp20  xray_fdr_logging.cpp21  )22 23set(XRAY_BASIC_MODE_SOURCES24  xray_basic_flags.cpp25  xray_basic_logging.cpp26  )27 28set(XRAY_PROFILING_MODE_SOURCES29  xray_profile_collector.cpp30  xray_profiling.cpp31  xray_profiling_flags.cpp32  )33 34# Implementation files for all XRay architectures.35set(x86_64_SOURCES36  xray_x86_64.cpp37  xray_trampoline_x86_64.S38  )39 40set(x86_64_DSO_SOURCES41   xray_trampoline_x86_64.S42   )43 44 45set(arm_SOURCES46  xray_arm.cpp47  xray_trampoline_arm.S48  )49 50set(armhf_SOURCES51  ${arm_SOURCES}52  )53 54set(aarch64_SOURCES55  xray_AArch64.cpp56  xray_trampoline_AArch64.S57  )58 59set(aarch64_DSO_SOURCES60  xray_trampoline_AArch64.S61  )62 63set(loongarch64_SOURCES64  xray_loongarch64.cpp65  xray_trampoline_loongarch64.S66  )67 68set(mips_SOURCES69  xray_mips.cpp70  xray_trampoline_mips.S71  )72 73set(mipsel_SOURCES74  xray_mips.cpp75  xray_trampoline_mips.S76  )77 78set(mips64_SOURCES79  xray_mips64.cpp80  xray_trampoline_mips64.S81  )82 83set(mips64el_SOURCES84  xray_mips64.cpp85  xray_trampoline_mips64.S86  )87 88set(powerpc64le_SOURCES89  xray_powerpc64.cpp90  xray_trampoline_powerpc64.cpp91  xray_trampoline_powerpc64_asm.S92  )93 94set(hexagon_SOURCES95  xray_hexagon.cpp96  xray_trampoline_hexagon.S97  )98 99set(riscv32_SOURCES100  xray_riscv.cpp101  xray_trampoline_riscv32.S102  )103 104set(riscv64_SOURCES105  xray_riscv.cpp106  xray_trampoline_riscv64.S107  )108 109  set(s390x_SOURCES110  xray_s390x.cpp111  xray_trampoline_s390x.S112  )113# Enable vector instructions in the assembly file.114set_source_files_properties(xray_trampoline_s390x.S PROPERTIES COMPILE_FLAGS -march=z13)115 116set(XRAY_SOURCE_ARCHS117  arm118  armhf119  aarch64120  hexagon121  mips122  mipsel123  mips64124  mips64el125  powerpc64le126  s390x127  x86_64128  )129 130set(XRAY_IMPL_HEADERS131  xray_allocator.h132  xray_basic_flags.h133  xray_basic_flags.inc134  xray_basic_logging.h135  xray_buffer_queue.h136  xray_defs.h137  xray_fdr_controller.h138  xray_fdr_flags.h139  xray_fdr_flags.inc140  xray_fdr_log_records.h141  xray_fdr_log_writer.h142  xray_fdr_logging.h143  xray_flags.h144  xray_flags.inc145  xray_function_call_trie.h146  xray_interface_internal.h147  xray_powerpc64.inc148  xray_profile_collector.h149  xray_profiling_flags.h150  xray_profiling_flags.inc151  xray_recursion_guard.h152  xray_segmented_array.h153  xray_tsc.h154  xray_utils.h155  xray_x86_64.inc156  )157 158# Create list of all source files for159# consumption by tests.160set(XRAY_ALL_SOURCE_FILES161  ${XRAY_SOURCES}162  ${XRAY_DSO_SOURCES}163  ${XRAY_FDR_MODE_SOURCES}164  ${XRAY_BASIC_MODE_SOURCES}165  ${XRAY_PROFILING_MODE_SOURCES}166  ${x86_64_SOURCES}167  ${x86_64_DSO_SOURCES}168  ${arm_SOURCES}169  ${armhf_SOURCES}170  ${hexagon_SOURCES}171  ${loongarch64_SOURCES}172  ${mips_SOURCES}173  ${mipsel_SOURCES}174  ${mips64_SOURCES}175  ${mips64el_SOURCES}176  ${powerpc64le_SOURCES}177  ${riscv32_SOURCES}178  ${riscv64_SOURCES}179  ${s390x_SOURCES}180  ${XRAY_IMPL_HEADERS}181  )182list(REMOVE_DUPLICATES XRAY_ALL_SOURCE_FILES)183# Make list that uses absolute paths184set(XRAY_ALL_SOURCE_FILES_ABS_PATHS "")185foreach (src_file ${XRAY_ALL_SOURCE_FILES})186  list(APPEND187    XRAY_ALL_SOURCE_FILES_ABS_PATHS188    "${CMAKE_CURRENT_SOURCE_DIR}/${src_file}")189endforeach()190 191 192# Now put it all together...193include_directories(..)194include_directories(../../include)195 196set(XRAY_CFLAGS197  ${COMPILER_RT_COMMON_CFLAGS}198  ${COMPILER_RT_CXX_CFLAGS})199set(XRAY_COMMON_DEFINITIONS SANITIZER_COMMON_NO_REDEFINE_BUILTINS XRAY_HAS_EXCEPTIONS=1)200 201# DSO trampolines need to be compiled with GOT addressing202set(XRAY_COMMON_DEFINITIONS_DSO ${XRAY_COMMON_DEFINITIONS} XRAY_PIC)203 204# Too many existing bugs, needs cleanup.205append_list_if(COMPILER_RT_HAS_WNO_FORMAT -Wno-format XRAY_CFLAGS)206 207# We don't need RTTI in XRay, so turn that off.208append_rtti_flag(OFF XRAY_CFLAGS)209 210set(XRAY_LINK_FLAGS ${COMPILER_RT_COMMON_LINK_FLAGS})211set(XRAY_LINK_LIBS212  ${COMPILER_RT_UNWINDER_LINK_LIBS}213  ${COMPILER_RT_CXX_LINK_LIBS})214 215append_list_if(216  COMPILER_RT_HAS_XRAY_COMPILER_FLAG XRAY_SUPPORTED=1 XRAY_COMMON_DEFINITIONS)217append_list_if(218  COMPILER_RT_BUILD_XRAY_NO_PREINIT XRAY_NO_PREINIT XRAY_COMMON_DEFINITIONS)219 220add_compiler_rt_component(xray)221 222set(XRAY_COMMON_RUNTIME_OBJECT_LIBS223    RTSanitizerCommon224    RTSanitizerCommonLibc)225 226# XRay uses C++ standard library headers.227if (TARGET cxx-headers OR HAVE_LIBCXX)228  set(XRAY_DEPS cxx-headers)229endif()230 231if (APPLE)232  add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)233  add_weak_symbols("xray" WEAK_SYMBOL_LINK_FLAGS)234 235  add_compiler_rt_object_libraries(RTXray236    OS ${XRAY_SUPPORTED_OS}237    ARCHS ${XRAY_SUPPORTED_ARCH}238    SOURCES ${XRAY_SOURCES}239    ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}240    CFLAGS ${XRAY_CFLAGS}241    DEFS ${XRAY_COMMON_DEFINITIONS}242    DEPS ${XRAY_DEPS})243  add_compiler_rt_object_libraries(RTXrayDSO244    OS ${XRAY_SUPPORTED_OS}245    ARCHS ${XRAY_DSO_SUPPORTED_ARCH}246    SOURCES ${XRAY_DSO_SOURCES}247    ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}248    CFLAGS ${XRAY_CFLAGS}249    DEFS ${XRAY_COMMON_DEFINITIONS_DSO}250    DEPS ${XRAY_DEPS})251  set(XRAY_RTXRAY_ARCH_LIBS "")252  set(XRAY_DSO_RTXRAY_ARCH_LIBS "")253  foreach(arch ${XRAY_SUPPORTED_ARCH})254    if(NOT ${arch} IN_LIST XRAY_SOURCE_ARCHS)255      continue()256    endif()257    add_compiler_rt_object_libraries(RTXray_${arch}258      OS ${XRAY_SUPPORTED_OS}259      ARCHS ${arch}260      SOURCES ${${arch}_SOURCES}261      ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}262      CFLAGS ${XRAY_CFLAGS}263      DEFS ${XRAY_COMMON_DEFINITIONS}264      DEPS ${XRAY_DEPS})265    list(APPEND XRAY_RTXRAY_ARCH_LIBS RTXray_${arch})266    if (${arch} IN_LIST XRAY_DSO_SUPPORTED_ARCH)267      add_compiler_rt_object_libraries(RTXrayDSO_${arch}268        OS ${XRAY_SUPPORTED_OS}269        ARCHS ${arch}270        SOURCES ${${arch}_DSO_SOURCES}271        ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}272        CFLAGS ${XRAY_CFLAGS}273        DEFS ${XRAY_COMMON_DEFINITIONS_DSO}274        DEPS ${XRAY_DEPS})275      list(APPEND XRAY_DSO_RTXRAY_ARCH_LIBS RTXrayDSO_${arch})276    endif()277  endforeach()278  add_compiler_rt_object_libraries(RTXrayFDR279    OS ${XRAY_SUPPORTED_OS}280    ARCHS ${XRAY_SUPPORTED_ARCH}281    SOURCES ${XRAY_FDR_MODE_SOURCES}282    ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}283    CFLAGS ${XRAY_CFLAGS}284    DEFS ${XRAY_COMMON_DEFINITIONS}285    DEPS ${XRAY_DEPS})286  add_compiler_rt_object_libraries(RTXrayBASIC287    OS ${XRAY_SUPPORTED_OS}288    ARCHS ${XRAY_SUPPORTED_ARCH}289    SOURCES ${XRAY_BASIC_MODE_SOURCES}290    ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}291    CFLAGS ${XRAY_CFLAGS}292    DEFS ${XRAY_COMMON_DEFINITIONS}293    DEPS ${XRAY_DEPS})294  add_compiler_rt_object_libraries(RTXrayPROFILING295    OS ${XRAY_SUPPORTED_OS}296    ARCHS ${XRAY_SUPPORTED_ARCH}297    SOURCES ${XRAY_PROFILING_MODE_SOURCES}298    ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}299    CFLAGS ${XRAY_CFLAGS}300    DEFS ${XRAY_COMMON_DEFINITIONS}301    DEPS ${XRAY_DEPS})302 303  # We only support running on osx for now.304  add_compiler_rt_runtime(clang_rt.xray305    STATIC306    OS ${XRAY_SUPPORTED_OS}307    ARCHS ${XRAY_SUPPORTED_ARCH}308    OBJECT_LIBS ${XRAY_COMMON_RUNTIME_OBJECT_LIBS} RTXray ${XRAY_RTXRAY_ARCH_LIBS}309    CFLAGS ${XRAY_CFLAGS}310    DEFS ${XRAY_COMMON_DEFINITIONS}311    LINK_FLAGS ${XRAY_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}312    LINK_LIBS ${XRAY_LINK_LIBS}313    PARENT_TARGET xray)314  add_compiler_rt_runtime(clang_rt.xray-dso315    STATIC316    OS ${XRAY_SUPPORTED_OS}317    ARCHS ${XRAY_DSO_SUPPORTED_ARCH}318    OBJECT_LIBS RTXrayDSO ${XRAY_DSO_RTXRAY_ARCH_LIBS}319    CFLAGS ${XRAY_CFLAGS}320    DEFS ${XRAY_COMMON_DEFINITIONS}321    LINK_FLAGS ${XRAY_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}322    LINK_LIBS ${XRAY_LINK_LIBS}323    PARENT_TARGET xray)324 325  add_compiler_rt_runtime(clang_rt.xray-fdr326    STATIC327    OS ${XRAY_SUPPORTED_OS}328    ARCHS ${XRAY_SUPPORTED_ARCH}329    OBJECT_LIBS RTXrayFDR330    CFLAGS ${XRAY_CFLAGS}331    DEFS ${XRAY_COMMON_DEFINITIONS}332    LINK_FLAGS ${XRAY_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}333    LINK_LIBS ${XRAY_LINK_LIBS}334    PARENT_TARGET xray)335  add_compiler_rt_runtime(clang_rt.xray-basic336    STATIC337    OS ${XRAY_SUPPORTED_OS}338    ARCHS ${XRAY_SUPPORTED_ARCH}339    OBJECT_LIBS RTXrayBASIC340    CFLAGS ${XRAY_CFLAGS}341    DEFS ${XRAY_COMMON_DEFINITIONS}342    LINK_FLAGS ${XRAY_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}343    LINK_LIBS ${XRAY_LINK_LIBS}344    PARENT_TARGET xray)345  add_compiler_rt_runtime(clang_rt.xray-profiling346    STATIC347    OS ${XRAY_SUPPORTED_OS}348    ARCHS ${XRAY_SUPPORTED_ARCH}349    OBJECT_LIBS RTXrayPROFILING350    CFLAGS ${XRAY_CFLAGS}351    DEFS ${XRAY_COMMON_DEFINITIONS}352    LINK_FLAGS ${XRAY_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}353    LINK_LIBS ${XRAY_LINK_LIBS}354    PARENT_TARGET xray)355else() # not Apple356  foreach(arch ${XRAY_SUPPORTED_ARCH})357    if(NOT CAN_TARGET_${arch})358      continue()359    endif()360    add_compiler_rt_object_libraries(RTXray361      ARCHS ${arch}362      SOURCES ${XRAY_SOURCES} ${${arch}_SOURCES}363      ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}364      CFLAGS ${XRAY_CFLAGS}365      DEFS ${XRAY_COMMON_DEFINITIONS}366      DEPS ${XRAY_DEPS})367    add_compiler_rt_object_libraries(RTXrayFDR368      ARCHS ${arch}369      SOURCES ${XRAY_FDR_MODE_SOURCES}370      ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}371      CFLAGS ${XRAY_CFLAGS}372      DEFS ${XRAY_COMMON_DEFINITIONS}373      DEPS ${XRAY_DEPS})374    add_compiler_rt_object_libraries(RTXrayBASIC375      ARCHS ${arch}376      SOURCES ${XRAY_BASIC_MODE_SOURCES}377      ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}378      CFLAGS ${XRAY_CFLAGS}379      DEFS ${XRAY_COMMON_DEFINITIONS}380      DEPS ${XRAY_DEPS})381    add_compiler_rt_object_libraries(RTXrayPROFILING382      ARCHS ${arch}383      SOURCES ${XRAY_PROFILING_MODE_SOURCES}384      ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}385      CFLAGS ${XRAY_CFLAGS}386      DEFS ${XRAY_COMMON_DEFINITIONS}387      DEPS ${XRAY_DEPS})388 389    # Common XRay archive for instrumented binaries.390    add_compiler_rt_runtime(clang_rt.xray391     STATIC392     ARCHS ${arch}393     CFLAGS ${XRAY_CFLAGS}394     LINK_FLAGS ${XRAY_LINK_FLAGS}395     LINK_LIBS ${XRAY_LINK_LIBS}396     DEFS ${XRAY_COMMON_DEFINITIONS}397     OBJECT_LIBS ${XRAY_COMMON_RUNTIME_OBJECT_LIBS} RTXray398     PARENT_TARGET xray)399    # FDR mode runtime archive (addon for clang_rt.xray)400    add_compiler_rt_runtime(clang_rt.xray-fdr401      STATIC402      ARCHS ${arch}403      CFLAGS ${XRAY_CFLAGS}404      LINK_FLAGS ${XRAY_LINK_FLAGS}405      LINK_LIBS ${XRAY_LINK_LIBS}406      DEFS ${XRAY_COMMON_DEFINITIONS}407      OBJECT_LIBS RTXrayFDR408      PARENT_TARGET xray)409    # Basic mode runtime archive (addon for clang_rt.xray)410    add_compiler_rt_runtime(clang_rt.xray-basic411      STATIC412      ARCHS ${arch}413      CFLAGS ${XRAY_CFLAGS}414      LINK_FLAGS ${XRAY_LINK_FLAGS}415      LINK_LIBS ${XRAY_LINK_LIBS}416      DEFS ${XRAY_COMMON_DEFINITIONS}417      OBJECT_LIBS RTXrayBASIC418      PARENT_TARGET xray)419    # Profiler Mode runtime420    add_compiler_rt_runtime(clang_rt.xray-profiling421      STATIC422      ARCHS ${arch}423      CFLAGS ${XRAY_CFLAGS}424      LINK_FLAGS ${XRAY_LINK_FLAGS}425      LINK_LIBS ${XRAY_LINK_LIBS}426      DEFS ${XRAY_COMMON_DEFINITIONS}427      OBJECT_LIBS RTXrayPROFILING428      PARENT_TARGET xray)429 430    if (${arch} IN_LIST XRAY_DSO_SUPPORTED_ARCH)431      add_compiler_rt_object_libraries(RTXrayDSO432        ARCHS ${arch}433        SOURCES ${XRAY_DSO_SOURCES} ${${arch}_DSO_SOURCES} 434        ADDITIONAL_HEADERS ${XRAY_IMPL_HEADERS}435        CFLAGS ${XRAY_CFLAGS}436        DEFS ${XRAY_COMMON_DEFINITIONS_DSO}437        DEPS ${XRAY_DEPS})438      # DSO runtime archive439      add_compiler_rt_runtime(clang_rt.xray-dso440        STATIC441        ARCHS ${arch}442        CFLAGS ${XRAY_CFLAGS}443        LINK_FLAGS ${XRAY_LINK_FLAGS}444        LINK_LIBS ${XRAY_LINK_LIBS}445        DEFS ${XRAY_COMMON_DEFINITIONS}446        OBJECT_LIBS RTXrayDSO447        PARENT_TARGET xray)448    endif()449  endforeach()450endif() # not Apple451 452if(COMPILER_RT_INCLUDE_TESTS)453  add_subdirectory(tests)454endif()455