Changeset 4940 in CLRX


Ignore:
Timestamp:
Aug 31, 2019, 11:42:58 AM (3 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: DisasmROCm: Skip data of kernel descriptor in globaldata if LLVM10 binary.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdasm/DisasmROCm.cpp

    r4939 r4940  
    10401040        output.write(".globaldata\n", 12);
    10411041        output.write(".gdata:\n", 8); /// symbol used by text relocations
    1042         //if (rocmInput->llvm10BinFormat)
     1042        if (!rocmInput->llvm10BinFormat)
    10431043            printDisasmData(rocmInput->globalDataSize, rocmInput->globalData, output);
    1044         /*else
    1045         {
    1046         }*/
     1044        else
     1045        {
     1046            Array<size_t> kdescOffsets(rocmInput->kernelDescs.size());
     1047            for (size_t i = 0; i < rocmInput->kernelDescs.size(); i++)
     1048                kdescOffsets[i] = rocmInput->kernelDescs[i].sectionOffset;
     1049            std::sort(kdescOffsets.begin(), kdescOffsets.end());
     1050            auto kdit = kdescOffsets.begin();
     1051            for (size_t p = 0; p < rocmInput->globalDataSize; )
     1052            {
     1053                const size_t end = kdit != kdescOffsets.end() ?
     1054                        *kdit : rocmInput->globalDataSize;
     1055                if (kdit == kdescOffsets.end() || p < *kdit)
     1056                {
     1057                    printDisasmData(end-p, rocmInput->globalData+p, output);
     1058                    p = end;
     1059                }
     1060                if (kdit != kdescOffsets.end() && p == *kdit)
     1061                {
     1062                    output.write(".skip 64\n", 10);
     1063                    p += 64;
     1064                    ++kdit;
     1065                }
     1066            }
     1067        }
    10471068    }
    10481069   
Note: See TracChangeset for help on using the changeset viewer.