This commit is contained in:
Aria 2025-03-21 22:23:30 +11:00
commit 9c94d113d3
Signed by untrusted user who does not match committer: aria
GPG key ID: 19AB7AA462B8AB3B
10260 changed files with 1237388 additions and 0 deletions

View file

@ -0,0 +1,46 @@
#include "StarDynamicLib.hpp"
#include <dlfcn.h>
#include <pthread.h>
#include <sys/time.h>
#include <errno.h>
namespace Star {
struct PrivateDynLib : public DynamicLib {
PrivateDynLib(void* handle)
: m_handle(handle) {}
~PrivateDynLib() {
dlclose(m_handle);
}
void* funcPtr(const char* name) {
return dlsym(m_handle, name);
}
void* m_handle;
};
String DynamicLib::libraryExtension() {
#ifdef STAR_SYSTEM_MACOS
return ".dylib";
#else
return ".so";
#endif
}
DynamicLibUPtr DynamicLib::loadLibrary(String const& libraryName) {
void* handle = dlopen(libraryName.utf8Ptr(), RTLD_NOW);
if (handle == NULL)
return {};
return make_unique<PrivateDynLib>(handle);
}
DynamicLibUPtr DynamicLib::currentExecutable() {
void* handle = dlopen(NULL, 0);
starAssert(handle);
return make_unique<PrivateDynLib>(handle);
}
}