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


[ROCm/clr commit: ba2b5ff9da]
Tento commit je obsažen v:
Siu Chi Chan
2018-11-21 12:07:28 -05:00
rodič f94d93e5ed
revize 0c610f5890
+8 -6
Zobrazit soubor
@@ -590,14 +590,16 @@ unordered_map<string, vector<pair<size_t, size_t>>>& 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);
}
}
});