| 24 | } |
| 25 | |
| 26 | void StringTable::buildStringTable(uint64_t vmaddr, uint8_t *data, uint64_t size) { |
| 27 | uint64_t cur = 0; |
| 28 | this->vmaddr = vmaddr; |
| 29 | stringData = data; |
| 30 | stringDataSize = size; |
| 31 | while (cur < size) { |
| 32 | const char *symName = (const char *)data; |
| 33 | uint64_t slen = strlen(symName); |
| 34 | index2Names[cur] = std::string(symName); |
| 35 | |
| 36 | cur += slen + 1; |
| 37 | data += slen + 1; |
| 38 | } |
| 39 | } |
| 40 | |
| 41 | std::string StringTable::getStringAtIndex(uint64_t index) { |
| 42 | if (index2Names.find(index) == index2Names.end()) { |