diff --git a/libomptarget/include/DeviceImage.h b/libomptarget/include/DeviceImage.h
index 63b4b6d..ba46a83 100644
--- a/libomptarget/include/DeviceImage.h
+++ b/libomptarget/include/DeviceImage.h
@@ -26,7 +26,6 @@
 class DeviceImageTy {
 
   std::unique_ptr<llvm::object::OffloadBinary> Binary;
-  llvm::SmallVector<std::unique_ptr<OffloadEntryTy>> OffloadEntries;
 
   __tgt_bin_desc *BinaryDesc;
   __tgt_device_image Image;
@@ -37,7 +36,9 @@
   __tgt_device_image &getExecutableImage() { return Image; }
   __tgt_bin_desc &getBinaryDesc() { return *BinaryDesc; }
 
-  auto entries() { return llvm::make_pointee_range(OffloadEntries); }
+  auto entries() {
+    return llvm::make_range(Image.EntriesBegin, Image.EntriesEnd);
+  }
 };
 
 #endif // OMPTARGET_DEVICE_IMAGE_H
diff --git a/libomptarget/include/OffloadEntry.h b/libomptarget/include/OffloadEntry.h
index f645fe8..5173841 100644
--- a/libomptarget/include/OffloadEntry.h
+++ b/libomptarget/include/OffloadEntry.h
@@ -36,11 +36,11 @@
   const char *getNameAsCStr() const { return OffloadEntry.name; }
   __tgt_bin_desc *getBinaryDescription() const;
 
-  bool isCTor() { return hasFlags(OMP_DECLARE_TARGET_CTOR); }
-  bool isDTor() { return hasFlags(OMP_DECLARE_TARGET_DTOR); }
-  bool isLink() { return hasFlags(OMP_DECLARE_TARGET_LINK); }
+  bool isCTor() const { return hasFlags(OMP_DECLARE_TARGET_CTOR); }
+  bool isDTor() const { return hasFlags(OMP_DECLARE_TARGET_DTOR); }
+  bool isLink() const { return hasFlags(OMP_DECLARE_TARGET_LINK); }
 
-  bool hasFlags(OpenMPOffloadingDeclareTargetFlags Flags) {
+  bool hasFlags(OpenMPOffloadingDeclareTargetFlags Flags) const {
     return Flags & OffloadEntry.flags;
   }
 };
diff --git a/libomptarget/include/device.h b/libomptarget/include/device.h
index d28d3c5..e94f488 100644
--- a/libomptarget/include/device.h
+++ b/libomptarget/include/device.h
@@ -159,7 +159,7 @@
   /// }
 
   /// Register \p Entry as an offload entry that is avalable on this device.
-  void addOffloadEntry(OffloadEntryTy &Entry);
+  void addOffloadEntry(const OffloadEntryTy &Entry);
 
   /// Print all offload entries to stderr.
   void dumpOffloadEntries();
@@ -170,7 +170,7 @@
 
   /// All offload entries available on this device.
   using DeviceOffloadEntriesMapTy =
-      llvm::DenseMap<llvm::StringRef, OffloadEntryTy *>;
+      llvm::DenseMap<llvm::StringRef, OffloadEntryTy>;
   ProtectedObj<DeviceOffloadEntriesMapTy> DeviceOffloadEntries;
 
   /// Handler to collect and organize host-2-device mapping information.
diff --git a/libomptarget/src/DeviceImage.cpp b/libomptarget/src/DeviceImage.cpp
index 1d39bb9..e42460b 100644
--- a/libomptarget/src/DeviceImage.cpp
+++ b/libomptarget/src/DeviceImage.cpp
@@ -27,10 +27,6 @@
                              __tgt_device_image &TgtDeviceImage)
     : BinaryDesc(&BinaryDesc), Image(TgtDeviceImage) {
 
-  for (__tgt_offload_entry &Entry :
-       llvm::make_range(Image.EntriesBegin, Image.EntriesEnd))
-    OffloadEntries.emplace_back(std::make_unique<OffloadEntryTy>(*this, Entry));
-
   llvm::StringRef ImageStr(
       static_cast<char *>(Image.ImageStart),
       llvm::omp::target::getPtrDiff(Image.ImageEnd, Image.ImageStart));
diff --git a/libomptarget/src/PluginManager.cpp b/libomptarget/src/PluginManager.cpp
index da2e081..83bf65f 100644
--- a/libomptarget/src/PluginManager.cpp
+++ b/libomptarget/src/PluginManager.cpp
@@ -97,8 +97,8 @@
                     toString(DeviceOrErr.takeError()).c_str());
 
     DeviceTy &Device = *DeviceOrErr;
-    for (OffloadEntryTy &Entry : DI.entries())
-      Device.addOffloadEntry(Entry);
+    for (__tgt_offload_entry &Entry : DI.entries())
+      Device.addOffloadEntry(OffloadEntryTy(DI, Entry));
   }
 }
 
diff --git a/libomptarget/src/device.cpp b/libomptarget/src/device.cpp
index dbad13b..fa89323 100644
--- a/libomptarget/src/device.cpp
+++ b/libomptarget/src/device.cpp
@@ -291,10 +291,9 @@
   return OFFLOAD_SUCCESS;
 }
 
-void DeviceTy::addOffloadEntry(OffloadEntryTy &Entry) {
+void DeviceTy::addOffloadEntry(const OffloadEntryTy &Entry) {
   std::lock_guard<decltype(PendingGlobalsMtx)> Lock(PendingGlobalsMtx);
-  DeviceOffloadEntries.getExclusiveAccessor()->insert(
-      {Entry.getName(), &Entry});
+  DeviceOffloadEntries.getExclusiveAccessor()->insert({Entry.getName(), Entry});
   if (Entry.isGlobal())
     return;
 
@@ -329,14 +328,14 @@
   fprintf(stderr, "Device %i offload entries:\n", DeviceID);
   for (auto &It : *DeviceOffloadEntries.getExclusiveAccessor()) {
     const char *Kind = "kernel";
-    if (It.second->isCTor())
+    if (It.second.isCTor())
       Kind = "constructor";
-    else if (It.second->isDTor())
+    else if (It.second.isDTor())
       Kind = "destructor";
-    else if (It.second->isLink())
+    else if (It.second.isLink())
       Kind = "link";
-    else if (It.second->isGlobal())
+    else if (It.second.isGlobal())
       Kind = "global var.";
-    fprintf(stderr, "  %11s: %s\n", Kind, It.second->getNameAsCStr());
+    fprintf(stderr, "  %11s: %s\n", Kind, It.second.getNameAsCStr());
   }
 }
