Viewing file: LookupAndRecordAddrs.h (2.7 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
//===-- LookupAndRecordAddrs.h - Symbol lookup support utility --*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Record the addresses of a set of symbols into ExecutorAddr objects. // // This can be used to avoid repeated lookup (via ExecutionSession::lookup) of // the given symbols. // //===----------------------------------------------------------------------===//
#ifndef LLVM_EXECUTIONENGINE_ORC_LOOKUPANDRECORDADDRS_H #define LLVM_EXECUTIONENGINE_ORC_LOOKUPANDRECORDADDRS_H
#include "llvm/ADT/FunctionExtras.h" #include "llvm/ExecutionEngine/Orc/Core.h" #include "llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h"
#include <vector>
namespace llvm { namespace orc {
/// Record addresses of the given symbols in the given ExecutorAddrs. /// /// Useful for making permanent records of symbol addreses to call or /// access in the executor (e.g. runtime support functions in Platform /// subclasses). /// /// By default the symbols are looked up using /// SymbolLookupFlags::RequiredSymbol, and an error will be generated if any of /// the requested symbols are not defined. /// /// If SymbolLookupFlags::WeaklyReferencedSymbol is used then any missing /// symbols will have their corresponding address objects set to zero, and /// this function will never generate an error (the caller will need to check /// addresses before using them). /// /// Asynchronous version. void lookupAndRecordAddrs( unique_function<void(Error)> OnRecorded, ExecutionSession &ES, LookupKind K, const JITDylibSearchOrder &SearchOrder, std::vector<std::pair<SymbolStringPtr, ExecutorAddr *>> Pairs, SymbolLookupFlags LookupFlags = SymbolLookupFlags::RequiredSymbol);
/// Record addresses of the given symbols in the given ExecutorAddrs. /// /// Blocking version. Error lookupAndRecordAddrs( ExecutionSession &ES, LookupKind K, const JITDylibSearchOrder &SearchOrder, std::vector<std::pair<SymbolStringPtr, ExecutorAddr *>> Pairs, SymbolLookupFlags LookupFlags = SymbolLookupFlags::RequiredSymbol);
/// Record addresses of given symbols in the given ExecutorAddrs. /// /// ExecutorProcessControl lookup version. Lookups are always implicitly /// weak. Error lookupAndRecordAddrs( ExecutorProcessControl &EPC, tpctypes::DylibHandle H, std::vector<std::pair<SymbolStringPtr, ExecutorAddr *>> Pairs, SymbolLookupFlags LookupFlags = SymbolLookupFlags::RequiredSymbol);
} // End namespace orc } // End namespace llvm
#endif // LLVM_EXECUTIONENGINE_ORC_LOOKUPANDRECORDADDRS_H
|