LibC: Define Dl_info_t and add stub for dladdr
This commit is contained in:
parent
0bece8a54c
commit
36cb3d56fe
|
@ -1,5 +1,13 @@
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
|
extern "C" int __dladdr(const void*, Dl_info_t*) __attribute__((weak));
|
||||||
|
int dladdr(const void* __restrict addr, Dl_info_t* __restrict dlip)
|
||||||
|
{
|
||||||
|
if (&__dladdr == nullptr) [[unlikely]]
|
||||||
|
return 0;
|
||||||
|
return __dladdr(addr, dlip);
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" int __dlclose(void*) __attribute__((weak));
|
extern "C" int __dlclose(void*) __attribute__((weak));
|
||||||
int dlclose(void* handle)
|
int dlclose(void* handle)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,6 +15,18 @@ __BEGIN_DECLS
|
||||||
#define RTLD_NEXT ((void*)-1)
|
#define RTLD_NEXT ((void*)-1)
|
||||||
#define RTLD_DEFAULT ((void*) 0)
|
#define RTLD_DEFAULT ((void*) 0)
|
||||||
|
|
||||||
|
struct Dl_info
|
||||||
|
{
|
||||||
|
const char* dli_fname; /* Pathname of mapped object file. */
|
||||||
|
void* dli_fbase; /* Base of mapped address range. */
|
||||||
|
const char* dli_sname; /* Sumbol name or null pointer. */
|
||||||
|
void* dli_saddr; /* Symbol address or null pointer. */
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct Dl_info Dl_info_t; /* POSIX type */
|
||||||
|
typedef struct Dl_info Dl_info; /* Linux type */
|
||||||
|
|
||||||
|
int dladdr(const void* __restrict addr, Dl_info_t* __restrict dlip);
|
||||||
int dlclose(void* handle);
|
int dlclose(void* handle);
|
||||||
char* dlerror(void);
|
char* dlerror(void);
|
||||||
void* dlopen(const char* file, int mode);
|
void* dlopen(const char* file, int mode);
|
||||||
|
|
Loading…
Reference in New Issue