From: Thomas Schwinge Date: Thu, 7 Mar 2024 11:31:52 +0000 (+0100) Subject: GCN, nvptx: Fatal error for missing symbols in 'libhsa-runtime64.so.1', 'libcuda... X-Git-Tag: basepoints/gcc-15~744 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab70addf560e18210d238edfd605fc91fcce9df1;p=thirdparty%2Fgcc.git GCN, nvptx: Fatal error for missing symbols in 'libhsa-runtime64.so.1', 'libcuda.so.1' If 'libhsa-runtime64.so.1', 'libcuda.so.1' are not available, the corresponding libgomp plugin/device gets disabled, as before. But if they are available, report any inconsistencies such as missing symbols, similar to how we fail in presence of other issues during device initialization. libgomp/ * plugin/plugin-gcn.c (init_hsa_runtime_functions): Fatal error for missing symbols. * plugin/plugin-nvptx.c (init_cuda_lib): Likewise. --- diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c index 2771123252a8..4b7ab5e83c57 100644 --- a/libgomp/plugin/plugin-gcn.c +++ b/libgomp/plugin/plugin-gcn.c @@ -1382,9 +1382,10 @@ init_hsa_runtime_functions (void) #define DLSYM_FN(function) \ hsa_fns.function##_fn = dlsym (handle, #function); \ if (hsa_fns.function##_fn == NULL) \ - return false; + GOMP_PLUGIN_fatal ("'%s' is missing '%s'", hsa_runtime_lib, #function); #define DLSYM_OPT_FN(function) \ hsa_fns.function##_fn = dlsym (handle, #function); + void *handle = dlopen (hsa_runtime_lib, RTLD_LAZY); if (handle == NULL) return false; diff --git a/libgomp/plugin/plugin-nvptx.c b/libgomp/plugin/plugin-nvptx.c index c04c3acd6792..2bc7b850671a 100644 --- a/libgomp/plugin/plugin-nvptx.c +++ b/libgomp/plugin/plugin-nvptx.c @@ -126,7 +126,7 @@ init_cuda_lib (void) # define CUDA_ONE_CALL_1(call, allow_null) \ cuda_lib.call = dlsym (h, #call); \ if (!allow_null && cuda_lib.call == NULL) \ - return false; + GOMP_PLUGIN_fatal ("'%s' is missing '%s'", cuda_runtime_lib, #call); #include "cuda-lib.def" # undef CUDA_ONE_CALL # undef CUDA_ONE_CALL_1