Canonicalize header guards into a common format.
[oota-llvm.git] / lib / ExecutionEngine / RuntimeDyld / JITRegistrar.h
1 //===-- JITRegistrar.h - Registers objects with a debugger ----------------===//
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 #ifndef LLVM_LIB_EXECUTIONENGINE_RUNTIMEDYLD_JITREGISTRAR_H
11 #define LLVM_LIB_EXECUTIONENGINE_RUNTIMEDYLD_JITREGISTRAR_H
12
13 #include "llvm/ExecutionEngine/ObjectBuffer.h"
14
15 namespace llvm {
16
17 /// Global access point for the JIT debugging interface.
18 class JITRegistrar {
19   virtual void anchor();
20 public:
21   /// Instantiates the JIT service.
22   JITRegistrar() {}
23
24   /// Unregisters each object that was previously registered and releases all
25   /// internal resources.
26   virtual ~JITRegistrar() {}
27
28   /// Creates an entry in the JIT registry for the buffer @p Object,
29   /// which must contain an object file in executable memory with any
30   /// debug information for the debugger.
31   virtual void registerObject(const ObjectBuffer &Object) = 0;
32
33   /// Removes the internal registration of @p Object, and
34   /// frees associated resources.
35   /// Returns true if @p Object was previously registered.
36   virtual bool deregisterObject(const ObjectBuffer &Object) = 0;
37
38   /// Returns a reference to a GDB JIT registrar singleton
39   static JITRegistrar& getGDBRegistrar();
40 };
41
42 } // end namespace llvm
43
44 #endif