Ignore:
Timestamp:
Nov 4, 2016, 2:25:42 PM (3 years ago)
Author:
matszpk
Message:

CLRadeonExtender: DisasmROCm: Fixed printing labels between data areas.

File:
1 edited

Legend:

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

    r2526 r2527  
    455455        const auto& namedLabels = isaDisassembler->getNamedLabels();
    456456        // real disassemble
    457         size_t prevRegionEnd = 0;
    458         bool prevIsKernel = false;
     457        size_t prevRegionPos = 0;
    459458        for (size_t i = 0; i < regionsNum; i++)
    460459        {
    461460            const ROCmDisasmRegionInput& region = rocmInput->regions[sorted[i].second];
    462461           
    463             if (prevIsKernel)
    464                 prevRegionEnd++;
    465             isaDisassembler->setInput(prevRegionEnd, code + region.offset,
    466                                     region.offset, prevRegionEnd);
    467             curLabel = std::lower_bound(labels.begin(), labels.end(), prevRegionEnd);
     462            isaDisassembler->setInput(prevRegionPos, code + region.offset,
     463                                    region.offset, prevRegionPos);
     464            curLabel = std::lower_bound(labels.begin(), labels.end(), prevRegionPos);
    468465            curNamedLabel = std::lower_bound(namedLabels.begin(), namedLabels.end(),
    469                 std::make_pair(prevRegionEnd, CString()),
     466                std::make_pair(prevRegionPos, CString()),
    470467                  [](const std::pair<size_t,CString>& a,
    471468                                 const std::pair<size_t, CString>& b)
     
    491488                    isaDisassembler->disassemble();
    492489                }
     490                prevRegionPos = region.offset + region.size + 1;
    493491            }
    494492            else if (doDumpData)
     
    498496                output.write("\n", 1);
    499497                printDisasmData(region.size, code + region.offset, output, true);
     498                prevRegionPos = region.offset+1;
    500499            }
    501             prevRegionEnd = region.offset + region.size;
    502             prevIsKernel = region.isKernel;
    503500        }
    504501    }
Note: See TracChangeset for help on using the changeset viewer.