summaryrefslogtreecommitdiff
path: root/liboffloadmic
diff options
context:
space:
mode:
Diffstat (limited to 'liboffloadmic')
-rw-r--r--liboffloadmic/ChangeLog6
-rw-r--r--liboffloadmic/plugin/libgomp-plugin-intelmic.cpp24
2 files changed, 27 insertions, 3 deletions
diff --git a/liboffloadmic/ChangeLog b/liboffloadmic/ChangeLog
index 73c711587cb..67a3f6aee5d 100644
--- a/liboffloadmic/ChangeLog
+++ b/liboffloadmic/ChangeLog
@@ -1,3 +1,9 @@
+2015-08-24 Nathan Sidwell <nathan@codesourcery.com>
+
+ * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_version): New.
+ (GOMP_OFFLOAD_load_image): Add version arg and check it.
+ (GOMP_OFFLOAD_unload_image): Likewise.
+
2015-08-24 Thomas Schwinge <thomas@codesourcery.com>
* plugin/Makefile.am (include_src_dir): Set.
diff --git a/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp b/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
index aa2d7c69bcd..fde7d9e3820 100644
--- a/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
+++ b/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
@@ -328,12 +328,26 @@ offload_image (const void *target_image)
free (image);
}
+/* Return the libgomp version number we're compatible with. There is
+ no requirement for cross-version compatibility. */
+
+extern "C" unsigned
+GOMP_OFFLOAD_version (void)
+{
+ return GOMP_VERSION;
+}
+
extern "C" int
-GOMP_OFFLOAD_load_image (int device, const void *target_image,
- addr_pair **result)
+GOMP_OFFLOAD_load_image (int device, const unsigned version,
+ void *target_image, addr_pair **result)
{
TRACE ("(device = %d, target_image = %p)", device, target_image);
+ if (GOMP_VERSION_DEV (version) > GOMP_VERSION_INTEL_MIC)
+ GOMP_PLUGIN_fatal ("Offload data incompatible with intelmic plugin"
+ " (expected %u, received %u)",
+ GOMP_VERSION_INTEL_MIC, GOMP_VERSION_DEV (version));
+
/* If target_image is already present in address_table, then there is no need
to offload it. */
if (address_table->count (target_image) == 0)
@@ -354,8 +368,12 @@ GOMP_OFFLOAD_load_image (int device, const void *target_image,
}
extern "C" void
-GOMP_OFFLOAD_unload_image (int device, const void *target_image)
+GOMP_OFFLOAD_unload_image (int device, unsigned version,
+ const void *target_image)
{
+ if (GOMP_VERSION_DEV (version) > GOMP_VERSION_INTEL_MIC)
+ return;
+
TRACE ("(device = %d, target_image = %p)", device, target_image);
/* TODO: Currently liboffloadmic doesn't support __offload_unregister_image