diff options
author | jdp <jdp@FreeBSD.org> | 1999-04-07 02:43:11 +0000 |
---|---|---|
committer | jdp <jdp@FreeBSD.org> | 1999-04-07 02:43:11 +0000 |
commit | fd4074472e9ad1ab43fe3c0be1485762859d7254 (patch) | |
tree | f346235f0243c542ee429cf4148837fc8c63fced /lib | |
parent | 7c9bf17e255d3dab0dd8586726cc51fedda0b184 (diff) | |
download | FreeBSD-src-fd4074472e9ad1ab43fe3c0be1485762859d7254.zip FreeBSD-src-fd4074472e9ad1ab43fe3c0be1485762859d7254.tar.gz |
Add a new function dlversion() which returns the version number of
the dynamic linker in the same form as __FreeBSD_version. This is
mainly intended for checking the dynamic linker version during a make
world.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/gen/dlfcn.c | 17 | ||||
-rw-r--r-- | lib/libc/gen/dlopen.3 | 19 |
2 files changed, 34 insertions, 2 deletions
diff --git a/lib/libc/gen/dlfcn.c b/lib/libc/gen/dlfcn.c index 79021e7..38b9553 100644 --- a/lib/libc/gen/dlfcn.c +++ b/lib/libc/gen/dlfcn.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: dlfcn.c,v 1.1 1998/02/09 06:05:24 jdp Exp $ + * $Id: dlfcn.c,v 1.2 1998/03/07 19:57:05 jdp Exp $ */ /* @@ -94,6 +94,14 @@ dlsym(void *handle, const char *name) return NULL; } +#pragma weak dlversion +int +dlversion(void) +{ + _rtld_error(sorry); + return 0; +} + #else /* a.out format */ #include <sys/types.h> @@ -165,4 +173,11 @@ dlsym(void *handle, const char *name) return (__ldso_entry->dlsym)(handle, name); } +/* We don't support dlversion() on a.out systems. */ +int +dlversion(void) +{ + return 0; +} + #endif /* __ELF__ */ diff --git a/lib/libc/gen/dlopen.3 b/lib/libc/gen/dlopen.3 index 9e848f9..e56e3ae 100644 --- a/lib/libc/gen/dlopen.3 +++ b/lib/libc/gen/dlopen.3 @@ -34,7 +34,7 @@ .Os FreeBSD .Dt DLOPEN 3 .Sh NAME -.Nm dlopen, dlsym, dlerror, dlclose +.Nm dlopen, dlsym, dlerror, dlclose, dlversion .Nd programmatic interface to the dynamic linker .Sh SYNOPSIS .Fd #include <dlfcn.h> @@ -46,6 +46,8 @@ .Fn dlerror "void" .Ft int .Fn dlclose "void *handle" +.Ft int +.Fn dlversion "void" .Sh DESCRIPTION These functions provide a simple programmatic interface to the services of the dynamic linker. @@ -219,6 +221,19 @@ The object-intrinsic functions and .Fn _fini are called with no arguments, and are not expected to return values. +.Pp +.Fn dlversion +returns the version number of the dynamic linker. Interpreted +as a decimal number, the version number has the form +.Em rrrsss . +.Em rrr +corresponds to the base operating system release version, e.g., 400 +for release 4.0.0. +.Em sss +is a serial number that increases monotonically within each release +version. If the installed dynamic linker is too old to support +.Fn dlversion , +0 is returned. .Sh NOTES ELF executables need to be linked using the @@ -234,6 +249,8 @@ and return the null pointer in the event of errors. .Fn dlclose returns 0 on success, or -1 if an error occurred. +.Fn dlversion +returns 0 if the dynamic linker is too old to support it. Whenever an error has been detected, a message detailing it can be retrieved via a call to .Fn dlerror . |