Annotation of src/lib/libc/dlfcn/dlfcn_elf.c, Revision 1.5.32.1
1.5.32.1! sborrill 1: /* $NetBSD: dlfcn_elf.c,v 1.5 2004/07/18 17:26:19 thorpej Exp $ */
1.1 minoura 2:
3: /*
4: * Copyright (c) 2000 Takuya SHIOZAKI
5: * All rights reserved.
6: *
7: * Redistribution and use in source and binary forms, with or without
8: * modification, are permitted provided that the following conditions
9: * are met:
10: * 1. Redistributions of source code must retain the above copyright
11: * notice, this list of conditions and the following disclaimer.
12: * 2. Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: *
16: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26: */
27:
28: #include <sys/cdefs.h>
29: #if defined(LIBC_SCCS) && !defined(lint)
1.5.32.1! sborrill 30: __RCSID("$NetBSD: dlfcn_elf.c,v 1.5 2004/07/18 17:26:19 thorpej Exp $");
1.1 minoura 31: #endif /* LIBC_SCCS and not lint */
32:
33: #include "namespace.h"
34:
1.5 thorpej 35: #undef dlopen
36: #undef dlclose
37: #undef dlsym
38: #undef dlerror
39: #undef dladdr
1.5.32.1! sborrill 40: #undef dfinfo
1.5 thorpej 41:
42: #define dlopen ___dlopen
43: #define dlclose ___dlclose
44: #define dlsym ___dlsym
45: #define dlerror ___dlerror
46: #define dladdr ___dladdr
1.5.32.1! sborrill 47: #define dlinfo ___dlinfo
1.5 thorpej 48:
1.1 minoura 49: #define ELFSIZE ARCH_ELFSIZE
50: #include "rtld.h"
51:
52: #ifdef __weak_alias
1.5 thorpej 53: __weak_alias(dlopen,___dlopen)
54: __weak_alias(dlclose,___dlclose)
55: __weak_alias(dlsym,___dlsym)
56: __weak_alias(dlerror,___dlerror)
57: __weak_alias(dladdr,___dladdr)
1.5.32.1! sborrill 58: __weak_alias(dlinfo,___dlinfo)
1.5 thorpej 59:
60: __weak_alias(__dlopen,___dlopen)
61: __weak_alias(__dlclose,___dlclose)
62: __weak_alias(__dlsym,___dlsym)
63: __weak_alias(__dlerror,___dlerror)
64: __weak_alias(__dladdr,___dladdr)
1.5.32.1! sborrill 65: __weak_alias(__dlinfo,___dlinfo)
1.1 minoura 66: #endif
67:
1.4 skrll 68: /*
69: * For ELF, the dynamic linker directly resolves references to its
70: * services to functions inside the dynamic linker itself. These
71: * weak-symbol stubs are necessary so that "ld" won't complain about
72: * undefined symbols. The stubs are executed only when the program is
73: * linked statically, or when a given service isn't implemented in the
74: * dynamic linker. They must return an error if called, and they must
75: * be weak symbols so that the dynamic linker can override them.
76: */
77:
78: static char dlfcn_error[] = "Service unavailable";
79:
80: /*ARGSUSED*/
81: void *
82: dlopen(const char *name, int mode)
83: {
84:
85: return NULL;
86: }
87:
88: /*ARGSUSED*/
89: int
90: dlclose(void *fd)
91: {
92:
93: return -1;
94: }
95:
96: /*ARGSUSED*/
97: void *
98: dlsym(void *handle, const char *name)
99: {
100:
101: return NULL;
102: }
103:
104: /*ARGSUSED*/
105: __aconst char *
106: dlerror()
107: {
108:
109: return dlfcn_error;
110: }
111:
112: /*ARGSUSED*/
113: int
114: dladdr(const void *addr, Dl_info *dli)
115: {
116:
117: return 0;
118: }
1.5.32.1! sborrill 119:
! 120: /*ARGSUSED*/
! 121: int
! 122: dlinfo(void *handle, int req, void *v)
! 123: {
! 124:
! 125: return -1;
! 126: }
CVSweb <webmaster@jp.NetBSD.org>