dlfcn.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /* User functions for run-time dynamic loading.
  2. Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
  3. This file is part of the GNU C Library.
  4. The GNU C Library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Lesser General Public
  6. License as published by the Free Software Foundation; either
  7. version 2.1 of the License, or (at your option) any later version.
  8. The GNU C Library is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. Lesser General Public License for more details.
  12. You should have received a copy of the GNU Lesser General Public
  13. License along with the GNU C Library; if not, write to the Free
  14. Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  15. 02111-1307 USA. */
  16. #ifndef _DLFCN_H
  17. #define _DLFCN_H 1
  18. #include <features.h>
  19. /* Collect various system dependent definitions and declarations. */
  20. #include <bits/dlfcn.h>
  21. #ifdef __USE_GNU
  22. /* If the first argument of `dlsym' or `dlvsym' is set to RTLD_NEXT
  23. the run-time address of the symbol called NAME in the next shared
  24. object is returned. The "next" relation is defined by the order
  25. the shared objects were loaded. */
  26. # define RTLD_NEXT ((void *) -1l)
  27. /* If the first argument to `dlsym' or `dlvsym' is set to RTLD_DEFAULT
  28. the run-time address of the symbol called NAME in the global scope
  29. is returned. */
  30. # define RTLD_DEFAULT ((void *) 0)
  31. #endif
  32. __BEGIN_DECLS
  33. /* Open the shared object FILE and map it in; return a handle that can be
  34. passed to `dlsym' to get symbol values from it. */
  35. extern void *dlopen (__const char *__file, int __mode) __THROW;
  36. /* Unmap and close a shared object opened by `dlopen'.
  37. The handle cannot be used again after calling `dlclose'. */
  38. extern int dlclose (void *__handle) __THROW;
  39. /* Find the run-time address in the shared object HANDLE refers to
  40. of the symbol called NAME. */
  41. extern void *dlsym (void *__restrict __handle,
  42. __const char *__restrict __name) __THROW;
  43. #ifdef __USE_GNU
  44. /* Find the run-time address in the shared object HANDLE refers to
  45. of the symbol called NAME with VERSION. */
  46. extern void *dlvsym (void *__restrict __handle,
  47. __const char *__restrict __name,
  48. __const char *__restrict __version) __THROW;
  49. #endif
  50. /* When any of the above functions fails, call this function
  51. to return a string describing the error. Each call resets
  52. the error string so that a following call returns null. */
  53. extern char *dlerror (void) __THROW;
  54. #ifdef __USE_GNU
  55. /* Structure containing information about object searched using
  56. `dladdr'. */
  57. typedef struct
  58. {
  59. __const char *dli_fname; /* File name of defining object. */
  60. void *dli_fbase; /* Load address of that object. */
  61. __const char *dli_sname; /* Name of nearest symbol. */
  62. void *dli_saddr; /* Exact value of nearest symbol. */
  63. } Dl_info;
  64. /* Fill in *INFO with the following information about ADDRESS.
  65. Returns 0 iff no shared object's segments contain that address. */
  66. extern int dladdr (const void *__address, Dl_info *__info) __THROW;
  67. #endif
  68. __END_DECLS
  69. #endif /* dlfcn.h */