1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-12 12:42:30 +04:00
Files
unleashed-firmware/lib/flipper_application/api_hashtable/api_hashtable.cpp
あく acc39a4bc0 Api Symbols: replace asserts with checks (#3507)
* Api Symbols: replace asserts with checks
* Api Symbols: replace asserts with checks part 2
* Update no args function signatures with void, to help compiler to track incorrect usage
* More unavoidable void
* Update PVS config and code to make it happy
* Format sources
* nfc: fix checks
* dead code cleanup & include fixes

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2024-03-19 23:43:52 +09:00

42 lines
1.0 KiB
C++

#include "api_hashtable.h"
#include <furi.h>
#include <algorithm>
#define TAG "ApiHashtable"
bool elf_resolve_from_hashtable(
const ElfApiInterface* interface,
uint32_t hash,
Elf32_Addr* address) {
furi_check(interface);
furi_check(address);
bool result = false;
const HashtableApiInterface* hashtable_interface =
static_cast<const HashtableApiInterface*>(interface);
sym_entry key = {
.hash = hash,
.address = 0,
};
auto find_res =
std::lower_bound(hashtable_interface->table_cbegin, hashtable_interface->table_cend, key);
if((find_res == hashtable_interface->table_cend || (find_res->hash != hash))) {
FURI_LOG_T(
TAG, "Can't find symbol with hash %lx @ %p!", hash, hashtable_interface->table_cbegin);
result = false;
} else {
result = true;
*address = find_res->address;
}
return result;
}
uint32_t elf_symbolname_hash(const char* s) {
furi_check(s);
return elf_gnu_hash(s);
}