.sp
.BI "int dlclose(void *" handle );
.sp
+.B #define _GNU_SOURCE
+.br
+.B #include <dlfcn.h>
+.sp
+.BI "void *dlvsym(void *" handle ", char *" symbol ", char *" version );
+.sp
Link with \fI\-ldl\fP.
.SH DESCRIPTION
-The four functions
-.BR dlopen (),
-.BR dlsym (),
-.BR dlclose (),
-.BR dlerror ()
+The functions described in this page
provide an interface to the dynamic linking loader.
-Some additional nonstandard extensions to this API are documented below.
.SS dlerror()
The function
.BR dlerror ()
that occurred from
.BR dlopen (),
.BR dlsym ()
+.BR dlvsym (),
or
.BR dlclose ()
since the last call to
can find and invoke the "real" function provided in another library
(or for that matter, the "next" definition of the function in cases
where there are multiple layers of preloading).
+.SS dlvsym()
+The function
+.BR dlvsym ()
+does the same as
+.BR dlsym ()
+but takes a version string as an additional argument.
.SS dlclose()
The function
.BR dlclose ()
returns, and destructor routines are executed before
.BR dlclose ()
returns.
-.SS Glibc extension: dlvsym()
-Glibc adds the following function not described by POSIX,
-with prototype as follows:
-.sp
-.nf
-.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
-.B #include <dlfcn.h>
-.sp
-.BI "void *dlvsym(void *" handle ", char *" symbol ", char *" version );
-.fi
-.PP
-The function
-.BR dlvsym (),
-provided by glibc since version 2.1,
-does the same as
-.BR dlsym ()
-but takes a version string as an additional argument.
.SH VERSIONS
.BR dlopen (),
.BR dlsym (),
.BR dlopen (),
and
.BR dlsym ().
+The
+.BR dlvsym ()
+function is a GNU extension.
.SH NOTES
The symbols
.B RTLD_DEFAULT