Changeset 4934 in CLRX


Ignore:
Timestamp:
Aug 25, 2019, 4:06:47 PM (3 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: ROCm: segfault and fails fixes (not all).

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r4933 r4934  
    951951    if (doDumpConfig && rocmInput->metadata!=nullptr)
    952952    {
    953         metadataInfo.parse(rocmInput->metadataSize, rocmInput->metadata);
     953        if (!rocmInput->metadataV3)
     954            metadataInfo.parse(rocmInput->metadataSize, rocmInput->metadata);
     955        else
     956            metadataInfo.parseMsgPack(rocmInput->metadataSize,
     957                        reinterpret_cast<const cxbyte*>(rocmInput->metadata));
    954958        haveMetadataInfo = true;
    955959    }
  • CLRadeonExtender/trunk/amdbin/ROCmBinaries.cpp

    r4931 r4934  
    114114        Elf64_Half shndx = ULEV(sym.st_shndx);
    115115        if (shndx==textIndex &&
    116             (symType==STT_GNU_IFUNC || (symType==STT_FUNC && !newBinFormat) ||
     116            (symType==STT_GNU_IFUNC ||
     117                (symType==STT_FUNC && (!newBinFormat || llvm10BinFormat)) ||
    117118                (bind==STB_GLOBAL && symType==STT_OBJECT)))
    118119            regionsNum++;
     
    166167            else if (symType==STT_FUNC)
    167168            {
    168                 if (newBinFormat)
     169                if (newBinFormat && !llvm10BinFormat)
    169170                    continue;
    170                 type = ROCmRegionType::FKERNEL;
     171                type = llvm10BinFormat ? ROCmRegionType::KERNEL : ROCmRegionType::FKERNEL;
    171172            }
    172173            symOffsets[j] = std::make_pair(value, j);
     
    196197        size_t end = (i<regionsNum) ? symOffsets[i].first : codeOffset+codeSize;
    197198        ROCmRegion& region = regions[symOffsets[i-1].second];
    198         if (region.type==ROCmRegionType::KERNEL && symOffsets[i-1].first+0x100 > end)
    199             throw BinException("Kernel size is too small!");
     199        if (!llvm10BinFormat)
     200            if (region.type==ROCmRegionType::KERNEL && symOffsets[i-1].first+0x100 > end)
     201                throw BinException("Kernel size is too small!");
    200202       
    201203        const size_t regSize = end - symOffsets[i-1].first;
Note: See TracChangeset for help on using the changeset viewer.