[BACK]Return to dlfcn_elf.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libc / dlfcn

Annotation of src/lib/libc/dlfcn/dlfcn_elf.c, Revision 1.5.40.1

1.5.40.1! matt        1: /*     $NetBSD: dlfcn_elf.c,v 1.5.32.1 2009/10/14 09:31:27 sborrill 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.40.1! matt       30: __RCSID("$NetBSD: dlfcn_elf.c,v 1.5.32.1 2009/10/14 09:31:27 sborrill 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.40.1! matt       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.40.1! matt       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.40.1! matt       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.40.1! matt       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.40.1! matt      119:
        !           120: /*ARGSUSED*/
        !           121: int
        !           122: dlinfo(void *handle, int req, void *v)
        !           123: {
        !           124:
        !           125:        return -1;
        !           126: }

CVSweb <webmaster@jp.NetBSD.org>