[MCJIT] Replace JITEventListener::anchor (temporarily removed in r222861), and
[oota-llvm.git] / include / llvm / ExecutionEngine / JITEventListener.h
index cef3aa27d5cedbadca28ed374ab613d7a0190ae0..c3edec8687834b6dd64001ba256b6a3e0a636239 100644 (file)
@@ -15,6 +15,7 @@
 #ifndef LLVM_EXECUTIONENGINE_JITEVENTLISTENER_H
 #define LLVM_EXECUTIONENGINE_JITEVENTLISTENER_H
 
+#include "RuntimeDyld.h"
 #include "llvm/Config/llvm-config.h"
 #include "llvm/IR/DebugLoc.h"
 #include "llvm/Support/DataTypes.h"
@@ -25,7 +26,10 @@ class Function;
 class MachineFunction;
 class OProfileWrapper;
 class IntelJITEventsWrapper;
-class ObjectImage;
+
+namespace object {
+  class ObjectFile;
+}
 
 /// JITEvent_EmittedFunctionDetails - Helper struct for containing information
 /// about a generated machine code function.
@@ -57,7 +61,7 @@ public:
 
 public:
   JITEventListener() {}
-  virtual ~JITEventListener();
+  virtual ~JITEventListener() {}
 
   /// NotifyObjectEmitted - Called after an object has been successfully
   /// emitted to memory.  NotifyFunctionEmitted will not be called for
@@ -67,11 +71,15 @@ public:
   /// The ObjectImage contains the generated object image
   /// with section headers updated to reflect the address at which sections
   /// were loaded and with relocations performed in-place on debug sections.
-  virtual void NotifyObjectEmitted(const ObjectImage &Obj) {}
+  virtual void NotifyObjectEmitted(const object::ObjectFile &Obj,
+                                   const RuntimeDyld::LoadedObjectInfo &L) {}
 
   /// NotifyFreeingObject - Called just before the memory associated with
   /// a previously emitted object is released.
-  virtual void NotifyFreeingObject(const ObjectImage &Obj) {}
+  virtual void NotifyFreeingObject(const object::ObjectFile &Obj) {}
+
+  // Get a pointe to the GDB debugger registration listener.
+  static JITEventListener *createGDBRegistrationListener();
 
 #if LLVM_USE_INTEL_JITEVENTS
   // Construct an IntelJITEventListener
@@ -105,7 +113,8 @@ public:
     return nullptr;
   }
 #endif // USE_OPROFILE
-
+private:
+  virtual void anchor();
 };
 
 } // end namespace llvm.