| 1542 | } |
| 1543 | |
| 1544 | std::vector<kitty_soinfo_t> LinkerScannerMgr::allSoInfo() const |
| 1545 | { |
| 1546 | std::vector<kitty_soinfo_t> infos{}; |
| 1547 | |
| 1548 | if (!_pMem || !isValid() || !_init) |
| 1549 | return infos; |
| 1550 | |
| 1551 | auto maps = KittyMemoryEx::getAllMaps(_pMem->processID()); |
| 1552 | uintptr_t si = solist(), prev = 0; |
| 1553 | while (si && KittyMemoryEx::getAddressMap(_pMem->processID(), si, maps).readable) |
| 1554 | { |
| 1555 | kitty_soinfo_t info = infoFromSoInfo_(si, maps); |
| 1556 | infos.push_back(info); |
| 1557 | |
| 1558 | prev = si; |
| 1559 | |
| 1560 | if (_pMem->Read(si + _soinfo_offsets.next, &si, sizeof(uintptr_t)) != sizeof(uintptr_t)) |
| 1561 | break; |
| 1562 | |
| 1563 | if (si == prev) |
| 1564 | break; |
| 1565 | } |
| 1566 | return infos; |
| 1567 | } |
| 1568 | |
| 1569 | kitty_soinfo_t LinkerScannerMgr::findSoInfo(const std::string &name) const |
| 1570 | { |
no test coverage detected