[Openmp-commits] [openmp] [Libomptarget] Make dynamic loading libffi more verbose. (PR #86891)
Ye Luo via Openmp-commits
openmp-commits at lists.llvm.org
Wed Mar 27 16:28:02 PDT 2024
https://github.com/ye-luo created https://github.com/llvm/llvm-project/pull/86891
None
>From 4a253da3e9fc9b6cd804f3cc6848019c63d29c8e Mon Sep 17 00:00:00 2001
From: Ye Luo <yeluo at anl.gov>
Date: Wed, 27 Mar 2024 18:21:07 -0500
Subject: [PATCH] [Libomptarget] Make dynamic loading libffi more verbose.
---
.../plugins-nextgen/host/dynamic_ffi/ffi.cpp | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/openmp/libomptarget/plugins-nextgen/host/dynamic_ffi/ffi.cpp b/openmp/libomptarget/plugins-nextgen/host/dynamic_ffi/ffi.cpp
index c79daa79858171..c586ad1c1969b3 100644
--- a/openmp/libomptarget/plugins-nextgen/host/dynamic_ffi/ffi.cpp
+++ b/openmp/libomptarget/plugins-nextgen/host/dynamic_ffi/ffi.cpp
@@ -11,6 +11,8 @@
//===----------------------------------------------------------------------===//
#include "llvm/Support/DynamicLibrary.h"
+
+#include "Shared/Debug.h"
#include <memory>
#include "DLWrap.h"
@@ -37,15 +39,21 @@ uint32_t ffi_init() {
std::string ErrMsg;
auto DynlibHandle = std::make_unique<llvm::sys::DynamicLibrary>(
llvm::sys::DynamicLibrary::getPermanentLibrary(FFI_PATH, &ErrMsg));
- if (!DynlibHandle->isValid())
+
+ if (!DynlibHandle->isValid()) {
+ DP("Unable to load library '%s': %s!\n", FFI_PATH, ErrMsg.c_str());
return DYNAMIC_FFI_FAIL;
+ }
for (size_t I = 0; I < dlwrap::size(); I++) {
const char *Sym = dlwrap::symbol(I);
void *P = DynlibHandle->getAddressOfSymbol(Sym);
- if (P == nullptr)
+ if (P == nullptr) {
+ DP("Unable to find '%s' in '%s'!\n", Sym, FFI_PATH);
return DYNAMIC_FFI_FAIL;
+ }
+ DP("Implementing %s with dlsym(%s) -> %p\n", Sym, Sym, P);
*dlwrap::pointer(I) = P;
}
@@ -53,8 +61,10 @@ uint32_t ffi_init() {
#define DYNAMIC_INIT(SYMBOL) \
{ \
void *SymbolPtr = DynlibHandle->getAddressOfSymbol(#SYMBOL); \
- if (!SymbolPtr) \
+ if (!SymbolPtr) { \
+ DP("Unable to find '%s' in '%s'!\n", #SYMBOL, FFI_PATH); \
return DYNAMIC_FFI_FAIL; \
+ } \
SYMBOL = *reinterpret_cast<decltype(SYMBOL) *>(SymbolPtr); \
}
DYNAMIC_INIT(ffi_type_void);
More information about the Openmp-commits
mailing list