diff options
Diffstat (limited to 'liboffloadmic')
-rw-r--r-- | liboffloadmic/ChangeLog | 6 | ||||
-rw-r--r-- | liboffloadmic/plugin/libgomp-plugin-intelmic.cpp | 24 |
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 |