diff --git a/projects/clr/rocclr/runtime/device/pal/palprogram.cpp b/projects/clr/rocclr/runtime/device/pal/palprogram.cpp index 73b11c2da0..c5b5ac9a1a 100644 --- a/projects/clr/rocclr/runtime/device/pal/palprogram.cpp +++ b/projects/clr/rocclr/runtime/device/pal/palprogram.cpp @@ -20,6 +20,7 @@ #include "hsa_ext_image.h" #include "amd_hsa_loader.hpp" #if defined(WITH_LIGHTNING_COMPILER) +#include "AMDGPUPTNote.h" #include "AMDGPURuntimeMetadata.h" #include "driver/AmdCompiler.h" #include "libraries.amdgcn.inc" @@ -1603,9 +1604,14 @@ LightningProgram::setKernels( address name = (address) ¬e[1]; address desc = name + amd::alignUp(note->n_namesz, sizeof(int)); - if (note->n_type == 7 /*NT_AMDGPU_HSA_RUNTIME_METADATA_1_0*/ - && note->n_namesz == sizeof "AMD" - && !memcmp(name, "AMD", note->n_namesz)) { + if (note->n_type == AMDGPU::PT_NOTE::NT_AMDGPU_HSA_RUNTIME_METADATA_V_1) { + buildLog_ += "Error: object code with metadata v1 is not " \ + "supported\n"; + return false; + } + else if (note->n_type == AMDGPU::PT_NOTE::NT_AMDGPU_HSA_RUNTIME_METADATA + && note->n_namesz == sizeof AMDGPU::PT_NOTE::NoteName + && !memcmp(name, AMDGPU::PT_NOTE::NoteName, note->n_namesz)) { std::string metadataStr((const char *) desc, (size_t) note->n_descsz); metadata_ = new AMDGPU::RuntimeMD::Program::Metadata(metadataStr); // We've found and loaded the runtime metadata, exit the diff --git a/projects/clr/rocclr/runtime/device/rocm/rocprogram.cpp b/projects/clr/rocclr/runtime/device/rocm/rocprogram.cpp index 78b9f901ec..9dcbba16c1 100644 --- a/projects/clr/rocclr/runtime/device/rocm/rocprogram.cpp +++ b/projects/clr/rocclr/runtime/device/rocm/rocprogram.cpp @@ -10,6 +10,7 @@ #include "compiler/lib/utils/options.hpp" #include "rockernel.hpp" #if defined(WITH_LIGHTNING_COMPILER) +#include "AMDGPUPTNote.h" #include "libelf/gelf.h" #include "driver/AmdCompiler.h" #include "libraries.amdgcn.inc" @@ -927,9 +928,14 @@ HSAILProgram::setKernels_LC(amd::option::Options *options, void* binary, size_t address name = (address) ¬e[1]; address desc = name + amd::alignUp(note->n_namesz, sizeof(int)); - if (note->n_type == 7 /*AMDGPU::PT_NOTE::NT_AMDGPU_HSA_RUNTIME_METADATA*/ - && note->n_namesz == sizeof "AMD" - && !memcmp(name, "AMD", note->n_namesz)) { + if (note->n_type == AMDGPU::PT_NOTE::NT_AMDGPU_HSA_RUNTIME_METADATA_V_1) { + buildLog_ += "Error: object code with metadata v1 is not " \ + "supported\n"; + return false; + } + else if (note->n_type == AMDGPU::PT_NOTE::NT_AMDGPU_HSA_RUNTIME_METADATA + && note->n_namesz == sizeof AMDGPU::PT_NOTE::NoteName + && !memcmp(name, AMDGPU::PT_NOTE::NoteName, note->n_namesz)) { std::string metadataStr((const char *) desc, (size_t) note->n_descsz); metadata_ = new AMDGPU::RuntimeMD::Program::Metadata(metadataStr); // We've found and loaded the runtime metadata, exit the