1/* 2 * Copyright 2003-2012 Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _DLFCN_H 6#define _DLFCN_H 7 8 9#include <sys/types.h> 10 11 12#define RTLD_LAZY 0 /* relocations are performed as needed */ 13#define RTLD_NOW 1 /* the file gets relocated at load time */ 14#define RTLD_LOCAL 0 /* symbols are not available for relocating any other object */ 15#define RTLD_GLOBAL 2 /* all symbols are available */ 16 17/* not-yet-POSIX extensions (dlsym() handles) */ 18#define RTLD_DEFAULT ((void*)0) 19 /* find the symbol in the global scope */ 20#define RTLD_NEXT ((void*)-1L) 21 /* find the next definition of the symbol */ 22 23#ifdef __cplusplus 24extern "C" { 25#endif 26 27/* This is a gnu extension for the dladdr function */ 28typedef struct { 29 const char *dli_fname; /* Filename of defining object */ 30 void *dli_fbase; /* Load address of that object */ 31 const char *dli_sname; /* Name of nearest lower symbol */ 32 void *dli_saddr; /* Exact value of nearest symbol */ 33} Dl_info; 34 35extern int dlclose(void *image); 36extern char *dlerror(void); 37extern void *dlopen(const char *path, int mode); 38extern void *dlsym(void *image, const char *symbolName); 39extern int dladdr(const void *addr, Dl_info *info); 40 41#ifdef __cplusplus 42} 43#endif 44 45#endif /* _DLFCN_H */ 46