Lines Matching defs:sym
292 bool ElfParser::IsFunc(const SymType sym)
294 return ((sym.st_shndx != SHN_UNDEF) &&
295 (ELF32_ST_TYPE(sym.st_info) == STT_FUNC || ELF32_ST_TYPE(sym.st_info) == STT_GNU_IFUNC));
324 SymType sym;
325 if (!Read(offset, &sym, sizeof(sym))) {
328 if (sym.st_value == 0 || sym.st_size == 0) {
332 if (isFunc && (!ParseElfSymbolName(linkShdrInfo, sym, elfSymbol.nameStr))) {
335 elfSymbol.value = static_cast<uint64_t>(sym.st_value);
336 elfSymbol.size = static_cast<uint64_t>(sym.st_size);
337 elfSymbol.name = static_cast<uint32_t>(sym.st_name);
345 bool ElfParser::ParseElfSymbolName(ShdrInfo linkShdr, SymType sym, std::string& nameStr)
347 if (!IsFunc(sym) || (static_cast<uint64_t>(sym.st_name) >= linkShdr.size) || mmap_->Get() == nullptr) {
350 uintptr_t nameOffset = static_cast<uintptr_t>(linkShdr.offset + sym.st_name);
371 SymType sym;
372 if (!Read(offset, &sym, sizeof(sym))) { // todo inplace search
375 if (sym.st_value == 0 || sym.st_size == 0) {
379 if ((sym.st_value <= addr) && (addr < (sym.st_value + sym.st_size)) &&
380 ParseElfSymbolName(linkShdrInfo, sym, elfSymbol.nameStr)) {
381 elfSymbol.value = static_cast<uint64_t>(sym.st_value);
382 elfSymbol.size = static_cast<uint64_t>(sym.st_size);
383 elfSymbol.name = static_cast<uint32_t>(sym.st_name);