[gcc r14-9395] GCN, nvptx: Fatal error for missing symbols in 'libhsa-runtime64.so.1', 'libcuda.so.1'

Thomas Schwinge tschwinge@gcc.gnu.org
Fri Mar 8 15:36:02 GMT 2024


https://gcc.gnu.org/g:ab70addf560e18210d238edfd605fc91fcce9df1

commit r14-9395-gab70addf560e18210d238edfd605fc91fcce9df1
Author: Thomas Schwinge <tschwinge@baylibre.com>
Date:   Thu Mar 7 12:31:52 2024 +0100

    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:
---
 libgomp/plugin/plugin-gcn.c   | 3 ++-
 libgomp/plugin/plugin-nvptx.c | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c
index 2771123252a..4b7ab5e83c5 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 c04c3acd679..2bc7b850671 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


More information about the Gcc-cvs mailing list