Line data Source code
1 : //===------ OrcError.h - Reject symbol lookup requests ------*- C++ -*-===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 : //
10 : // Define an error category, error codes, and helper utilities for Orc.
11 : //
12 : //===----------------------------------------------------------------------===//
13 :
14 : #ifndef LLVM_EXECUTIONENGINE_ORC_ORCERROR_H
15 : #define LLVM_EXECUTIONENGINE_ORC_ORCERROR_H
16 :
17 : #include "llvm/Support/Error.h"
18 : #include <system_error>
19 :
20 : namespace llvm {
21 : namespace orc {
22 :
23 : enum class OrcErrorCode : int {
24 : // RPC Errors
25 : UnknownORCError = 1,
26 : DuplicateDefinition,
27 : JITSymbolNotFound,
28 : RemoteAllocatorDoesNotExist,
29 : RemoteAllocatorIdAlreadyInUse,
30 : RemoteMProtectAddrUnrecognized,
31 : RemoteIndirectStubsOwnerDoesNotExist,
32 : RemoteIndirectStubsOwnerIdAlreadyInUse,
33 : RPCConnectionClosed,
34 : RPCCouldNotNegotiateFunction,
35 : RPCResponseAbandoned,
36 : UnexpectedRPCCall,
37 : UnexpectedRPCResponse,
38 : UnknownErrorCodeFromRemote,
39 : UnknownResourceHandle
40 : };
41 :
42 : std::error_code orcError(OrcErrorCode ErrCode);
43 :
44 2 : class DuplicateDefinition : public ErrorInfo<DuplicateDefinition> {
45 : public:
46 : static char ID;
47 :
48 : DuplicateDefinition(std::string SymbolName);
49 : std::error_code convertToErrorCode() const override;
50 : void log(raw_ostream &OS) const override;
51 : const std::string &getSymbolName() const;
52 : private:
53 : std::string SymbolName;
54 : };
55 :
56 4 : class JITSymbolNotFound : public ErrorInfo<JITSymbolNotFound> {
57 : public:
58 : static char ID;
59 :
60 : JITSymbolNotFound(std::string SymbolName);
61 : std::error_code convertToErrorCode() const override;
62 : void log(raw_ostream &OS) const override;
63 : const std::string &getSymbolName() const;
64 : private:
65 : std::string SymbolName;
66 : };
67 :
68 : } // End namespace orc.
69 : } // End namespace llvm.
70 :
71 : #endif // LLVM_EXECUTIONENGINE_ORC_ORCERROR_H
|