1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
/* dlfcn.h
This file is part of Cygwin.
This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */
#ifndef _DLFCN_H
#define _DLFCN_H
#include <sys/cdefs.h>
#include <limits.h>
#ifdef __cplusplus
extern "C" {
#endif
/* declarations used for dynamic linking support routines */
extern void *dlopen (const char *, int);
extern void *dlsym (void *, const char *);
extern int dlclose (void *);
extern char *dlerror (void);
/* specific to CYGWIN */
#define FORK_RELOAD 1
#define FORK_NO_RELOAD 0
extern void dlfork (int);
/* following doesn't exist in Win32 API .... */
#define RTLD_DEFAULT NULL
/* valid values for mode argument to dlopen */
#define RTLD_LOCAL 0 /* Symbols in this dlopen'ed obj are not */
/* visible to other dlopen'ed objs. */
#define RTLD_LAZY 1 /* Lazy function call binding. */
#define RTLD_NOW 2 /* Immediate function call binding. */
#define RTLD_GLOBAL 4 /* Symbols in this dlopen'ed obj are visible */
/* to other dlopen'ed objs. */
/* Non-standard GLIBC extensions */
#define RTLD_NODELETE 8 /* Don't unload lib in dlcose. */
#define RTLD_NOLOAD 16 /* Don't load lib, just return handle if lib */
/* is already loaded, NULL otherwise. */
#define RTLD_DEEPBIND 32 /* Place lookup scope so that this lib is */
/* preferred over global scope. */
#if __GNU_VISIBLE
typedef struct Dl_info Dl_info;
struct Dl_info
{
char dli_fname[PATH_MAX]; /* Filename of defining object */
void *dli_fbase; /* Load address of that object */
const char *dli_sname; /* Name of nearest lower symbol */
void *dli_saddr; /* Exact value of nearest symbol */
};
extern int dladdr (const void *addr, Dl_info *info);
#endif
#ifdef __cplusplus
}
#endif
#endif /* _DLFCN_H */
|