mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-03-10 08:31:29 +00:00
[K/N] Support AddressToSymbol using dladdr, if availible
This commit is contained in:
@@ -324,6 +324,26 @@ extern "C" bool AddressToSymbol(const void* address, char* resultBuffer, size_t
|
||||
return theExeSymbolTable->functionAddressToSymbol(address, resultBuffer, resultBufferSize);
|
||||
}
|
||||
|
||||
#elif __has_include("dlfcn.h")
|
||||
|
||||
#include <dlfcn.h>
|
||||
|
||||
extern "C" bool AddressToSymbol(const void* address, char* resultBuffer, size_t resultBufferSize) {
|
||||
if (address == nullptr) return false;
|
||||
const char *result = nullptr;
|
||||
Dl_info info;
|
||||
if (dladdr(address, &info) != 0 && info.dli_sname != nullptr) {
|
||||
result = info.dli_sname;
|
||||
}
|
||||
if (result == nullptr) {
|
||||
return false;
|
||||
} else {
|
||||
strncpy(resultBuffer, result, resultBufferSize);
|
||||
resultBuffer[resultBufferSize - 1] = '\0';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
extern "C" bool AddressToSymbol(const void* address, char* resultBuffer, size_t resultBufferSize) {
|
||||
|
||||
Reference in New Issue
Block a user