summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/dlfcn.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2002-09-17 01:49:00 +0000
committerpeter <peter@FreeBSD.org>2002-09-17 01:49:00 +0000
commita51c9b66271f0551fb83b90a7db6c464eac2318b (patch)
tree7d8147c99f6bfb34b7cb47ad46e24a4f7dc93102 /lib/libc/gen/dlfcn.c
parent2a4cb24fb4a35753b66a2503614b874481e35535 (diff)
downloadFreeBSD-src-a51c9b66271f0551fb83b90a7db6c464eac2318b.zip
FreeBSD-src-a51c9b66271f0551fb83b90a7db6c464eac2318b.tar.gz
Initiate deorbit burn for the i386-only a.out related support. Moves are
under way to move the remnants of the a.out toolchain to ports. As the comment in src/Makefile said, this stuff is deprecated and one should not expect this to remain beyond 4.0-REL. It has already lasted WAY beyond that. Notable exceptions: gcc - I have not touched the a.out generation stuff there. ldd/ldconfig - still have some code to interface with a.out rtld. old as/ld/etc - I have not removed these yet, pending their move to ports. some includes - necessary for ldd/ldconfig for now. Tested on: i386 (extensively), alpha
Diffstat (limited to 'lib/libc/gen/dlfcn.c')
-rw-r--r--lib/libc/gen/dlfcn.c79
1 files changed, 1 insertions, 78 deletions
diff --git a/lib/libc/gen/dlfcn.c b/lib/libc/gen/dlfcn.c
index 4a3500d..ff1d900 100644
--- a/lib/libc/gen/dlfcn.c
+++ b/lib/libc/gen/dlfcn.c
@@ -28,12 +28,8 @@
__FBSDID("$FreeBSD$");
/*
- * Linkage to services provided by the dynamic linker. These are
- * implemented differently in ELF and a.out, because the dynamic
- * linkers have different interfaces.
+ * Linkage to services provided by the dynamic linker.
*/
-#ifdef __ELF__
-
#include <dlfcn.h>
#include <stddef.h>
@@ -107,76 +103,3 @@ dlsym(void * __restrict handle, const char * __restrict name)
_rtld_error(sorry);
return NULL;
}
-
-#else /* a.out format */
-
-#include <sys/types.h>
-#include <nlist.h> /* XXX - Required by link.h */
-#include <dlfcn.h>
-#include <link.h>
-#include <stddef.h>
-
-/*
- * For a.out, entry to the dynamic linker is via these trampolines.
- * They enter the dynamic linker through the ld_entry struct that was
- * passed back from the dynamic linker at startup time.
- */
-
-/* GCC is needed because we use its __builtin_return_address construct. */
-
-#ifndef __GNUC__
-#error "GCC is needed to compile this file"
-#endif
-
-/*
- * These variables are set by code in crt0.o. For compatibility with
- * old executables, they must be common, not extern.
- */
-struct ld_entry *__ldso_entry; /* Entry points to dynamic linker */
-int __ldso_version; /* Dynamic linker version number */
-
-int
-dladdr(const void *addr, Dl_info *dlip)
-{
- if (__ldso_entry == NULL || __ldso_version < LDSO_VERSION_HAS_DLADDR)
- return 0;
- return (__ldso_entry->dladdr)(addr, dlip);
-}
-
-int
-dlclose(void *handle)
-{
- if (__ldso_entry == NULL)
- return -1;
- return (__ldso_entry->dlclose)(handle);
-}
-
-const char *
-dlerror(void)
-{
- if (__ldso_entry == NULL)
- return "Service unavailable";
- return (__ldso_entry->dlerror)();
-}
-
-void *
-dlopen(const char *name, int mode)
-{
- if (__ldso_entry == NULL)
- return NULL;
- return (__ldso_entry->dlopen)(name, mode);
-}
-
-void *
-dlsym(void * __restrict handle, const char * __restrict name)
-{
- if (__ldso_entry == NULL)
- return NULL;
- if (__ldso_version >= LDSO_VERSION_HAS_DLSYM3) {
- void *retaddr = __builtin_return_address(0); /* __GNUC__ only */
- return (__ldso_entry->dlsym3)(handle, name, retaddr);
- } else
- return (__ldso_entry->dlsym)(handle, name);
-}
-
-#endif /* __ELF__ */
OpenPOWER on IntegriCloud