CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
63 lines
2.4 KiB
C++
63 lines
2.4 KiB
C++
//===-- xray_init.cpp -------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file is a part of XRay, a dynamic runtime instrumentation system.
|
|
//
|
|
// XRay initialisation logic for DSOs.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "sanitizer_common/sanitizer_atomic.h"
|
|
#include "xray_defs.h"
|
|
#include "xray_flags.h"
|
|
#include "xray_interface_internal.h"
|
|
|
|
using namespace __sanitizer;
|
|
|
|
extern "C" {
|
|
extern const XRaySledEntry __start_xray_instr_map[] __attribute__((weak))
|
|
__attribute__((visibility("hidden")));
|
|
extern const XRaySledEntry __stop_xray_instr_map[] __attribute__((weak))
|
|
__attribute__((visibility("hidden")));
|
|
extern const XRayFunctionSledIndex __start_xray_fn_idx[] __attribute__((weak))
|
|
__attribute__((visibility("hidden")));
|
|
extern const XRayFunctionSledIndex __stop_xray_fn_idx[] __attribute__((weak))
|
|
__attribute__((visibility("hidden")));
|
|
|
|
#if SANITIZER_APPLE
|
|
// HACK: This is a temporary workaround to make XRay build on
|
|
// Darwin, but it will probably not work at runtime.
|
|
extern const XRaySledEntry __start_xray_instr_map[] = {};
|
|
extern const XRaySledEntry __stop_xray_instr_map[] = {};
|
|
extern const XRayFunctionSledIndex __start_xray_fn_idx[] = {};
|
|
extern const XRayFunctionSledIndex __stop_xray_fn_idx[] = {};
|
|
#endif
|
|
}
|
|
|
|
// Handler functions to call in the patched entry/exit sled.
|
|
extern atomic_uintptr_t XRayPatchedFunction;
|
|
extern atomic_uintptr_t XRayArgLogger;
|
|
extern atomic_uintptr_t XRayPatchedCustomEvent;
|
|
extern atomic_uintptr_t XRayPatchedTypedEvent;
|
|
|
|
static int __xray_object_id{-1};
|
|
|
|
// Note: .preinit_array initialization does not work for DSOs
|
|
__attribute__((constructor(0))) static void
|
|
__xray_init_dso() XRAY_NEVER_INSTRUMENT {
|
|
// Register sleds in main XRay runtime.
|
|
__xray_object_id =
|
|
__xray_register_dso(__start_xray_instr_map, __stop_xray_instr_map,
|
|
__start_xray_fn_idx, __stop_xray_fn_idx, {});
|
|
}
|
|
|
|
__attribute__((destructor(0))) static void
|
|
__xray_finalize_dso() XRAY_NEVER_INSTRUMENT {
|
|
// Inform the main runtime that this DSO is no longer used.
|
|
__xray_deregister_dso(__xray_object_id);
|
|
}
|