summaryrefslogtreecommitdiff
path: root/offload/liboffload/src
diff options
context:
space:
mode:
authorRoss Brunton <ross@codeplay.com>2025-07-11 15:29:53 +0100
committerGitHub <noreply@github.com>2025-07-11 15:29:53 +0100
commit84e15d08c26eb56ca1edf35a17652ba0456d903b (patch)
tree4dd0599604848f48eab0e095a74c7a6b9cb8397b /offload/liboffload/src
parenta386d0e13f7c7f2f894999d9cd56d6aa8fc90d58 (diff)
[Offload] Add `olGetSymbolInfo[Size]` (#147962)
This mirrors the similar functions for other handles. The only implemented info at the moment is the symbol's kind.
Diffstat (limited to 'offload/liboffload/src')
-rw-r--r--offload/liboffload/src/OffloadImpl.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/offload/liboffload/src/OffloadImpl.cpp b/offload/liboffload/src/OffloadImpl.cpp
index af07a6786cfe..6d98c33ffb8d 100644
--- a/offload/liboffload/src/OffloadImpl.cpp
+++ b/offload/liboffload/src/OffloadImpl.cpp
@@ -748,5 +748,33 @@ Error olGetSymbol_impl(ol_program_handle_t Program, const char *Name,
}
}
+Error olGetSymbolInfoImplDetail(ol_symbol_handle_t Symbol,
+ ol_symbol_info_t PropName, size_t PropSize,
+ void *PropValue, size_t *PropSizeRet) {
+ InfoWriter Info(PropSize, PropValue, PropSizeRet);
+
+ switch (PropName) {
+ case OL_SYMBOL_INFO_KIND:
+ return Info.write<ol_symbol_kind_t>(Symbol->Kind);
+ default:
+ return createOffloadError(ErrorCode::INVALID_ENUMERATION,
+ "olGetSymbolInfo enum '%i' is invalid", PropName);
+ }
+
+ return Error::success();
+}
+
+Error olGetSymbolInfo_impl(ol_symbol_handle_t Symbol, ol_symbol_info_t PropName,
+ size_t PropSize, void *PropValue) {
+
+ return olGetSymbolInfoImplDetail(Symbol, PropName, PropSize, PropValue,
+ nullptr);
+}
+
+Error olGetSymbolInfoSize_impl(ol_symbol_handle_t Symbol,
+ ol_symbol_info_t PropName, size_t *PropSizeRet) {
+ return olGetSymbolInfoImplDetail(Symbol, PropName, 0, nullptr, PropSizeRet);
+}
+
} // namespace offload
} // namespace llvm