JITRegistrar.h revision 234971
112048Speter//===-- JITRegistrar.h - Registers objects with a debugger ----------------===//
212048Speter//
312048Speter//                     The LLVM Compiler Infrastructure
412048Speter//
512048Speter// This file is distributed under the University of Illinois Open Source
612048Speter// License. See LICENSE.TXT for details.
712048Speter//
812048Speter//===----------------------------------------------------------------------===//
912048Speter
1012048Speter#ifndef LLVM_EXECUTION_ENGINE_JIT_REGISTRAR_H
1112048Speter#define LLVM_EXECUTION_ENGINE_JIT_REGISTRAR_H
1212048Speter
1312048Speter#include "llvm/Support/MemoryBuffer.h"
1412048Speter
1512048Speternamespace llvm {
1612048Speter
1712048Speter/// Global access point for the JIT debugging interface.
1812048Speterclass JITRegistrar {
1912048Speterpublic:
2012048Speter  /// Instantiates the JIT service.
2112048Speter  JITRegistrar() {}
2212048Speter
2312048Speter  /// Unregisters each object that was previously registered and releases all
2412048Speter  /// internal resources.
2512048Speter  virtual ~JITRegistrar() {}
2612048Speter
2712048Speter  /// Creates an entry in the JIT registry for the buffer @p Object,
2812048Speter  /// which must contain an object file in executable memory with any
2912048Speter  /// debug information for the debugger.
3012048Speter  virtual void registerObject(const MemoryBuffer &Object) = 0;
3112048Speter
3237001Scharnier  /// Removes the internal registration of @p Object, and
3350476Speter  /// frees associated resources.
3412048Speter  /// Returns true if @p Object was previously registered.
3512048Speter  virtual bool deregisterObject(const MemoryBuffer &Object) = 0;
3612048Speter
3712048Speter  /// Returns a reference to a GDB JIT registrar singleton
3812048Speter  static JITRegistrar& getGDBRegistrar();
3937001Scharnier};
4012048Speter
4112048Speter} // end namespace llvm
4212048Speter
4312048Speter#endif // LLVM_EXECUTION_ENGINE_JIT_REGISTRAR_H
4412048Speter