From ba2b5ff9da12d163bf0731223ec9b0121a09e14e Mon Sep 17 00:00:00 2001 From: Siu Chi Chan Date: Wed, 21 Nov 2018 12:07:28 -0500 Subject: [PATCH] Fix issue in kernarg metadata parsing due to early finalization The logic to parse the kernel metadata is unaware that enabling of early finalization could result in multiple code blobs in a single .kernel section. This teaches the HIP runtime to handle that. Change-Id: I1581b42f0da8b30233d7898014f7468728c1d489 --- hipamd/src/program_state.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/hipamd/src/program_state.cpp b/hipamd/src/program_state.cpp index 7e42a44245..2fda546b54 100644 --- a/hipamd/src/program_state.cpp +++ b/hipamd/src/program_state.cpp @@ -590,14 +590,16 @@ unordered_map>>& kernargs() { static once_flag f; call_once(f, []() { - for (auto&& blob : code_object_blobs()) { - stringstream tmp{std::string{ - blob.second.front().cbegin(), blob.second.front().cend()}}; + for (auto&& blobs_for_one_arch : code_object_blobs()) { + for (auto && blob : blobs_for_one_arch.second) { + stringstream tmp{std::string{ + blob.cbegin(), blob.cend()}}; - elfio reader; - if (!reader.load(tmp)) continue; + elfio reader; + if (!reader.load(tmp)) continue; - read_kernarg_metadata(reader, r); + read_kernarg_metadata(reader, r); + } } });