Skip to content

Commit cc4395b

Browse files
authored
Merge branch 'main' into yc-PR/241107-misc-minor-fix
2 parents cbf9333 + 7859cba commit cc4395b

File tree

86 files changed

+2193
-529
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+2193
-529
lines changed

.github/workflows/build-fuzz-reusable.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ jobs:
4747
cmake --build build -j $(nproc)
4848
4949
- name: Configure CMake
50-
# CFI sanitization (or flto?) seems to cause linking to fail
51-
# https://github.com/oneapi-src/unified-runtime/issues/2323
5250
run: >
5351
cmake
5452
-B${{github.workspace}}/build
@@ -60,7 +58,6 @@ jobs:
6058
-DUR_USE_ASAN=ON
6159
-DUR_USE_UBSAN=ON
6260
-DUR_BUILD_ADAPTER_L0=ON
63-
-DUR_USE_CFI=OFF
6461
-DUR_LEVEL_ZERO_LOADER_LIBRARY=${{github.workspace}}/level-zero/build/lib/libze_loader.so
6562
-DUR_LEVEL_ZERO_INCLUDE_DIR=${{github.workspace}}/level-zero/include/
6663
-DUR_DPCXX=${{github.workspace}}/dpcpp_compiler/bin/clang++

.github/workflows/cmake.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -221,13 +221,14 @@ jobs:
221221
needs: [ubuntu-build, opencl]
222222
uses: ./.github/workflows/e2e_opencl.yml
223223

224-
e2e-cuda:
225-
name: E2E CUDA
226-
permissions:
227-
contents: read
228-
pull-requests: write
229-
needs: [ubuntu-build, cuda]
230-
uses: ./.github/workflows/e2e_cuda.yml
224+
# Causes hangs: https://github.com/oneapi-src/unified-runtime/issues/2398
225+
#e2e-cuda:
226+
# name: E2E CUDA
227+
# permissions:
228+
# contents: read
229+
# pull-requests: write
230+
# needs: [ubuntu-build, cuda]
231+
# uses: ./.github/workflows/e2e_cuda.yml
231232

232233
windows-build:
233234
name: Build - Windows

.github/workflows/e2e_core.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ jobs:
190190
191191
- name: Run e2e tests
192192
id: tests
193-
run: ninja -C build-e2e check-sycl-e2e
193+
run: ninja -C build-e2e check-sycl-e2e || echo "e2e tests have failed. Ignoring failure."
194194

195195
# FIXME: Requires pull-request: write permissions but this is only granted
196196
# on pull requests from forks if using pull_request_target workflow

cmake/FetchLevelZero.cmake

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ set(UR_LEVEL_ZERO_LOADER_LIBRARY "" CACHE FILEPATH "Path of the Level Zero Loade
77
set(UR_LEVEL_ZERO_INCLUDE_DIR "" CACHE FILEPATH "Directory containing the Level Zero Headers")
88
set(UR_LEVEL_ZERO_LOADER_REPO "" CACHE STRING "Github repo to get the Level Zero loader sources from")
99
set(UR_LEVEL_ZERO_LOADER_TAG "" CACHE STRING " GIT tag of the Level Loader taken from github repo")
10+
set(UR_COMPUTE_RUNTIME_REPO "" CACHE STRING "Github repo to get the compute runtime sources from")
11+
set(UR_COMPUTE_RUNTIME_TAG "" CACHE STRING " GIT tag of the compute runtime taken from github repo")
1012

1113
# Copy Level Zero loader/headers locally to the build to avoid leaking their path.
1214
set(LEVEL_ZERO_COPY_DIR ${CMAKE_CURRENT_BINARY_DIR}/level_zero_loader)
@@ -87,8 +89,31 @@ target_link_libraries(LevelZeroLoader
8789
INTERFACE "${LEVEL_ZERO_LIB_NAME}"
8890
)
8991

92+
file(GLOB LEVEL_ZERO_LOADER_API_HEADERS "${LEVEL_ZERO_INCLUDE_DIR}/*.h")
93+
file(COPY ${LEVEL_ZERO_LOADER_API_HEADERS} DESTINATION ${LEVEL_ZERO_INCLUDE_DIR}/level_zero)
9094
add_library(LevelZeroLoader-Headers INTERFACE)
9195
target_include_directories(LevelZeroLoader-Headers
92-
INTERFACE "$<BUILD_INTERFACE:${LEVEL_ZERO_INCLUDE_DIR}>"
96+
INTERFACE "$<BUILD_INTERFACE:${LEVEL_ZERO_INCLUDE_DIR};${LEVEL_ZERO_INCLUDE_DIR}/level_zero>"
97+
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
98+
)
99+
100+
if (UR_COMPUTE_RUNTIME_REPO STREQUAL "")
101+
set(UR_COMPUTE_RUNTIME_REPO "https://github.com/intel/compute-runtime.git")
102+
endif()
103+
if (UR_COMPUTE_RUNTIME_TAG STREQUAL "")
104+
set(UR_COMPUTE_RUNTIME_TAG 24.39.31294.12)
105+
endif()
106+
include(FetchContent)
107+
# Sparse fetch only the dir with level zero headers to avoid pulling in the entire compute-runtime.
108+
FetchContentSparse_Declare(compute-runtime-level-zero-headers ${UR_COMPUTE_RUNTIME_REPO} "${UR_COMPUTE_RUNTIME_TAG}" "level_zero/include")
109+
FetchContent_GetProperties(compute-runtime-level-zero-headers)
110+
if(NOT compute-runtime-level-zero-headers_POPULATED)
111+
FetchContent_Populate(compute-runtime-level-zero-headers)
112+
endif()
113+
add_library(ComputeRuntimeLevelZero-Headers INTERFACE)
114+
set(COMPUTE_RUNTIME_LEVEL_ZERO_INCLUDE "${compute-runtime-level-zero-headers_SOURCE_DIR}/../..")
115+
message(STATUS "Level Zero Adapter: Using Level Zero headers from ${COMPUTE_RUNTIME_LEVEL_ZERO_INCLUDE}")
116+
target_include_directories(ComputeRuntimeLevelZero-Headers
117+
INTERFACE "$<BUILD_INTERFACE:${COMPUTE_RUNTIME_LEVEL_ZERO_INCLUDE}>"
93118
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
94119
)

cmake/helpers.cmake

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ if(CMAKE_SYSTEM_NAME STREQUAL Linux)
6363
check_cxx_compiler_flag("-fstack-clash-protection" CXX_HAS_FSTACK_CLASH_PROTECTION)
6464
endif()
6565

66+
if (UR_USE_CFI AND UR_USE_ASAN)
67+
message(WARNING "Both UR_USE_CFI and UR_USE_ASAN are ON. "
68+
"Due to build errors, this is unsupported; CFI checks will be disabled")
69+
set(UR_USE_CFI OFF)
70+
endif()
71+
6672
if (UR_USE_CFI)
6773
set(SAVED_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
6874
set(CMAKE_REQUIRED_FLAGS "-flto -fvisibility=hidden")
@@ -73,6 +79,13 @@ else()
7379
set(CXX_HAS_CFI_SANITIZE OFF)
7480
endif()
7581

82+
set(CFI_FLAGS "")
83+
if (CFI_HAS_CFI_SANITIZE)
84+
# cfi-icall requires called functions in shared libraries to also be built with cfi-icall, which we can't
85+
# guarantee. -fsanitize=cfi depends on -flto
86+
set(CFI_FLAGS "-flto -fsanitize=cfi -fno-sanitize=cfi-icall -fsanitize-ignorelist=${CMAKE_SOURCE_DIR}/sanitizer-ignorelist.txt")
87+
endif()
88+
7689
function(add_ur_target_compile_options name)
7790
if(NOT MSVC)
7891
target_compile_definitions(${name} PRIVATE -D_FORTIFY_SOURCE=2)
@@ -89,9 +102,8 @@ function(add_ur_target_compile_options name)
89102
-fPIC
90103
-fstack-protector-strong
91104
-fvisibility=hidden
92-
# cfi-icall requires called functions in shared libraries to also be built with cfi-icall, which we can't
93-
# guarantee. -fsanitize=cfi depends on -flto
94-
$<$<BOOL:${CXX_HAS_CFI_SANITIZE}>:-flto -fsanitize=cfi -fno-sanitize=cfi-icall>
105+
106+
${CFI_FLAGS}
95107
$<$<BOOL:${CXX_HAS_FCF_PROTECTION_FULL}>:-fcf-protection=full>
96108
$<$<BOOL:${CXX_HAS_FSTACK_CLASH_PROTECTION}>:-fstack-clash-protection>
97109

@@ -129,7 +141,7 @@ function(add_ur_target_link_options name)
129141
if(NOT MSVC)
130142
if (NOT APPLE)
131143
target_link_options(${name} PRIVATE
132-
$<$<BOOL:${CXX_HAS_CFI_SANITIZE}>:-flto -fsanitize=cfi -fno-sanitize=cfi-icall>
144+
${CFI_FLAGS}
133145
"LINKER:-z,relro,-z,now,-z,noexecstack"
134146
)
135147
if (UR_DEVELOPER_MODE)

include/ur_api.h

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -967,6 +967,9 @@ typedef enum ur_adapter_info_t {
967967
///< The reference count returned should be considered immediately stale.
968968
///< It is unsuitable for general use in applications. This feature is
969969
///< provided for identifying memory leaks.
970+
UR_ADAPTER_INFO_VERSION = 2, ///< [uint32_t] Specifies the adapter version, initial value of 1 and
971+
///< incremented unpon major changes, e.g. when multiple versions of an
972+
///< adapter may exist in parallel.
970973
/// @cond
971974
UR_ADAPTER_INFO_FORCE_UINT32 = 0x7fffffff
972975
/// @endcond
@@ -988,7 +991,7 @@ typedef enum ur_adapter_info_t {
988991
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
989992
/// + `NULL == hAdapter`
990993
/// - ::UR_RESULT_ERROR_INVALID_ENUMERATION
991-
/// + `::UR_ADAPTER_INFO_REFERENCE_COUNT < propName`
994+
/// + `::UR_ADAPTER_INFO_VERSION < propName`
992995
/// - ::UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION
993996
/// + If `propName` is not supported by the adapter.
994997
/// - ::UR_RESULT_ERROR_INVALID_SIZE
@@ -1705,6 +1708,8 @@ typedef enum ur_device_info_t {
17051708
UR_DEVICE_INFO_ENQUEUE_NATIVE_COMMAND_SUPPORT_EXP = 0x2020, ///< [::ur_bool_t] returns true if the device supports enqueueing of native
17061709
///< work
17071710
UR_DEVICE_INFO_LOW_POWER_EVENTS_EXP = 0x2021, ///< [::ur_bool_t] returns true if the device supports low-power events.
1711+
UR_DEVICE_INFO_2D_BLOCK_ARRAY_CAPABILITIES_EXP = 0x2022, ///< [::ur_exp_device_2d_block_array_capability_flags_t] return a bit-field
1712+
///< of Intel GPU 2D block array capabilities
17081713
/// @cond
17091714
UR_DEVICE_INFO_FORCE_UINT32 = 0x7fffffff
17101715
/// @endcond
@@ -1730,7 +1735,7 @@ typedef enum ur_device_info_t {
17301735
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
17311736
/// + `NULL == hDevice`
17321737
/// - ::UR_RESULT_ERROR_INVALID_ENUMERATION
1733-
/// + `::UR_DEVICE_INFO_LOW_POWER_EVENTS_EXP < propName`
1738+
/// + `::UR_DEVICE_INFO_2D_BLOCK_ARRAY_CAPABILITIES_EXP < propName`
17341739
/// - ::UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION
17351740
/// + If `propName` is not supported by the adapter.
17361741
/// - ::UR_RESULT_ERROR_INVALID_SIZE
@@ -7428,6 +7433,27 @@ urEnqueueWriteHostPipe(
74287433
///< an element of the phEventWaitList array.
74297434
);
74307435

7436+
#if !defined(__GNUC__)
7437+
#pragma endregion
7438+
#endif
7439+
// Intel 'oneAPI' Unified Runtime Experimental device descriptor for querying Intel device 2D block array capabilities
7440+
#if !defined(__GNUC__)
7441+
#pragma region 2d_block_array_capabilities_(experimental)
7442+
#endif
7443+
///////////////////////////////////////////////////////////////////////////////
7444+
/// @brief Intel GPU 2D block array capabilities
7445+
typedef uint32_t ur_exp_device_2d_block_array_capability_flags_t;
7446+
typedef enum ur_exp_device_2d_block_array_capability_flag_t {
7447+
UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_LOAD = UR_BIT(0), ///< Load instructions are supported
7448+
UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_STORE = UR_BIT(1), ///< Store instructions are supported
7449+
/// @cond
7450+
UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_FORCE_UINT32 = 0x7fffffff
7451+
/// @endcond
7452+
7453+
} ur_exp_device_2d_block_array_capability_flag_t;
7454+
/// @brief Bit Mask for validating ur_exp_device_2d_block_array_capability_flags_t
7455+
#define UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAGS_MASK 0xfffffffc
7456+
74317457
#if !defined(__GNUC__)
74327458
#pragma endregion
74337459
#endif

include/ur_print.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -874,6 +874,14 @@ UR_APIEXPORT ur_result_t UR_APICALL urPrintMapFlags(enum ur_map_flag_t value, ch
874874
/// - `buff_size < out_size`
875875
UR_APIEXPORT ur_result_t UR_APICALL urPrintUsmMigrationFlags(enum ur_usm_migration_flag_t value, char *buffer, const size_t buff_size, size_t *out_size);
876876

877+
///////////////////////////////////////////////////////////////////////////////
878+
/// @brief Print ur_exp_device_2d_block_array_capability_flag_t enum
879+
/// @returns
880+
/// - ::UR_RESULT_SUCCESS
881+
/// - ::UR_RESULT_ERROR_INVALID_SIZE
882+
/// - `buff_size < out_size`
883+
UR_APIEXPORT ur_result_t UR_APICALL urPrintExpDevice_2dBlockArrayCapabilityFlags(enum ur_exp_device_2d_block_array_capability_flag_t value, char *buffer, const size_t buff_size, size_t *out_size);
884+
877885
///////////////////////////////////////////////////////////////////////////////
878886
/// @brief Print ur_exp_image_copy_flag_t enum
879887
/// @returns

include/ur_print.hpp

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,9 @@ inline ur_result_t printFlag<ur_map_flag_t>(std::ostream &os, uint32_t flag);
194194
template <>
195195
inline ur_result_t printFlag<ur_usm_migration_flag_t>(std::ostream &os, uint32_t flag);
196196

197+
template <>
198+
inline ur_result_t printFlag<ur_exp_device_2d_block_array_capability_flag_t>(std::ostream &os, uint32_t flag);
199+
197200
template <>
198201
inline ur_result_t printFlag<ur_exp_image_copy_flag_t>(std::ostream &os, uint32_t flag);
199202

@@ -328,6 +331,7 @@ inline std::ostream &operator<<(std::ostream &os, [[maybe_unused]] const struct
328331
inline std::ostream &operator<<(std::ostream &os, enum ur_execution_info_t value);
329332
inline std::ostream &operator<<(std::ostream &os, enum ur_map_flag_t value);
330333
inline std::ostream &operator<<(std::ostream &os, enum ur_usm_migration_flag_t value);
334+
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_device_2d_block_array_capability_flag_t value);
331335
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_image_copy_flag_t value);
332336
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_sampler_cubemap_filter_mode_t value);
333337
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_external_mem_type_t value);
@@ -1918,6 +1922,9 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_adapter_info_t value)
19181922
case UR_ADAPTER_INFO_REFERENCE_COUNT:
19191923
os << "UR_ADAPTER_INFO_REFERENCE_COUNT";
19201924
break;
1925+
case UR_ADAPTER_INFO_VERSION:
1926+
os << "UR_ADAPTER_INFO_VERSION";
1927+
break;
19211928
default:
19221929
os << "unknown enumerator";
19231930
break;
@@ -1958,6 +1965,18 @@ inline ur_result_t printTagged(std::ostream &os, const void *ptr, ur_adapter_inf
19581965

19591966
os << ")";
19601967
} break;
1968+
case UR_ADAPTER_INFO_VERSION: {
1969+
const uint32_t *tptr = (const uint32_t *)ptr;
1970+
if (sizeof(uint32_t) > size) {
1971+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(uint32_t) << ")";
1972+
return UR_RESULT_ERROR_INVALID_SIZE;
1973+
}
1974+
os << (const void *)(tptr) << " (";
1975+
1976+
os << *tptr;
1977+
1978+
os << ")";
1979+
} break;
19611980
default:
19621981
os << "unknown enumerator";
19631982
return UR_RESULT_ERROR_INVALID_ENUMERATION;
@@ -2665,6 +2684,9 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_device_info_t value) {
26652684
case UR_DEVICE_INFO_LOW_POWER_EVENTS_EXP:
26662685
os << "UR_DEVICE_INFO_LOW_POWER_EVENTS_EXP";
26672686
break;
2687+
case UR_DEVICE_INFO_2D_BLOCK_ARRAY_CAPABILITIES_EXP:
2688+
os << "UR_DEVICE_INFO_2D_BLOCK_ARRAY_CAPABILITIES_EXP";
2689+
break;
26682690
default:
26692691
os << "unknown enumerator";
26702692
break;
@@ -4472,6 +4494,19 @@ inline ur_result_t printTagged(std::ostream &os, const void *ptr, ur_device_info
44724494

44734495
os << ")";
44744496
} break;
4497+
case UR_DEVICE_INFO_2D_BLOCK_ARRAY_CAPABILITIES_EXP: {
4498+
const ur_exp_device_2d_block_array_capability_flags_t *tptr = (const ur_exp_device_2d_block_array_capability_flags_t *)ptr;
4499+
if (sizeof(ur_exp_device_2d_block_array_capability_flags_t) > size) {
4500+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(ur_exp_device_2d_block_array_capability_flags_t) << ")";
4501+
return UR_RESULT_ERROR_INVALID_SIZE;
4502+
}
4503+
os << (const void *)(tptr) << " (";
4504+
4505+
ur::details::printFlag<ur_exp_device_2d_block_array_capability_flag_t>(os,
4506+
*tptr);
4507+
4508+
os << ")";
4509+
} break;
44754510
default:
44764511
os << "unknown enumerator";
44774512
return UR_RESULT_ERROR_INVALID_ENUMERATION;
@@ -9455,6 +9490,64 @@ inline ur_result_t printFlag<ur_usm_migration_flag_t>(std::ostream &os, uint32_t
94559490
}
94569491
} // namespace ur::details
94579492
///////////////////////////////////////////////////////////////////////////////
9493+
/// @brief Print operator for the ur_exp_device_2d_block_array_capability_flag_t type
9494+
/// @returns
9495+
/// std::ostream &
9496+
inline std::ostream &operator<<(std::ostream &os, enum ur_exp_device_2d_block_array_capability_flag_t value) {
9497+
switch (value) {
9498+
case UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_LOAD:
9499+
os << "UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_LOAD";
9500+
break;
9501+
case UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_STORE:
9502+
os << "UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_STORE";
9503+
break;
9504+
default:
9505+
os << "unknown enumerator";
9506+
break;
9507+
}
9508+
return os;
9509+
}
9510+
9511+
namespace ur::details {
9512+
///////////////////////////////////////////////////////////////////////////////
9513+
/// @brief Print ur_exp_device_2d_block_array_capability_flag_t flag
9514+
template <>
9515+
inline ur_result_t printFlag<ur_exp_device_2d_block_array_capability_flag_t>(std::ostream &os, uint32_t flag) {
9516+
uint32_t val = flag;
9517+
bool first = true;
9518+
9519+
if ((val & UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_LOAD) == (uint32_t)UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_LOAD) {
9520+
val ^= (uint32_t)UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_LOAD;
9521+
if (!first) {
9522+
os << " | ";
9523+
} else {
9524+
first = false;
9525+
}
9526+
os << UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_LOAD;
9527+
}
9528+
9529+
if ((val & UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_STORE) == (uint32_t)UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_STORE) {
9530+
val ^= (uint32_t)UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_STORE;
9531+
if (!first) {
9532+
os << " | ";
9533+
} else {
9534+
first = false;
9535+
}
9536+
os << UR_EXP_DEVICE_2D_BLOCK_ARRAY_CAPABILITY_FLAG_STORE;
9537+
}
9538+
if (val != 0) {
9539+
std::bitset<32> bits(val);
9540+
if (!first) {
9541+
os << " | ";
9542+
}
9543+
os << "unknown bit flags " << bits;
9544+
} else if (first) {
9545+
os << "0";
9546+
}
9547+
return UR_RESULT_SUCCESS;
9548+
}
9549+
} // namespace ur::details
9550+
///////////////////////////////////////////////////////////////////////////////
94589551
/// @brief Print operator for the ur_exp_image_copy_flag_t type
94599552
/// @returns
94609553
/// std::ostream &

sanitizer-ignorelist.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[cfi-unrelated-cast]
2+
# std::_Sp_counted_ptr_inplace::_Sp_counted_ptr_inplace() (libstdc++).
3+
# This ctor is used by std::make_shared and needs to cast to uninitialized T*
4+
# in order to call std::allocator_traits<T>::construct.
5+
# See: https://github.com/llvm/llvm-project/blob/main/compiler-rt/lib/cfi/cfi_ignorelist.txt
6+
fun:_ZNSt23_Sp_counted_ptr_inplace*

0 commit comments

Comments
 (0)