1# 2# CDDL HEADER START 3# 4# The contents of this file are subject to the terms of the 5# Common Development and Distribution License (the "License"). 6# You may not use this file except in compliance with the License. 7# 8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9# or http://www.opensolaris.org/os/licensing. 10# See the License for the specific language governing permissions 11# and limitations under the License. 12# 13# When distributing Covered Code, include this CDDL HEADER in each 14# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15# If applicable, add the following below this CDDL HEADER, with the 16# fields enclosed by brackets "[]" replaced with your own identifying 17# information: Portions Copyright [yyyy] [name of copyright owner] 18# 19# CDDL HEADER END 20# 21 22# 23# Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved. 24# 25# Generic interface definition for usr/src/cmd/sgs/rtld. 26# 27 28# 29# MAPFILE HEADER START 30# 31# WARNING: STOP NOW. DO NOT MODIFY THIS FILE. 32# Object versioning must comply with the rules detailed in 33# 34# usr/src/lib/README.mapfiles 35# 36# You should not be making modifications here until you've read the most current 37# copy of that file. If you need help, contact a gatekeeper for guidance. 38# 39# MAPFILE HEADER END 40# 41 42$mapfile_version 2 43 44# 45# All symbols in ld.so.1 are private as no-one should bind to these directly. 46# 47SYMBOL_VERSION SUNWprivate_1.3 { 48 protected: 49 dladdr; # Standard dlopen(3x) family 50 dladdr1; 51 dldump; 52 dlclose; 53 dlerror; 54 dlinfo; 55 dlopen; 56 dlmopen; 57 dlsym; 58 59 _dladdr; # these should not exist 60 _dladdr1; 61 _dldump; 62 _dlclose; 63 _dlerror; 64 _dlinfo; 65 _dlopen; 66 _dlmopen; 67 _dlsym; 68 69 _ld_libc; # provides libc initialization 70 71 _elf_rtbndr; # dbx expects to find these 72 elf_rtbndr; 73 _rt_boot; # Provides basic adb symbol offsets 74 75 rtld_db_dlactivity; # Required to support librtld_db 76 rtld_db_preinit; 77 rtld_db_postinit; 78 r_debug { 79 ASSERT = { 80 TYPE = OBJECT; 81$if _x86 && _ELF32 82 SIZE = 44; 83$elif _x86 && _ELF64 84 SIZE = 80; 85$elif _sparc && _ELF32 86 SIZE = 44; 87$elif _sparc && _ELF64 88 SIZE = 80; 89$else 90$error Unknown platform 91$endif 92 }; 93 }; 94 95 elf_plt_write; 96 is_so_loaded; 97 lml_main { 98 ASSERT = { 99 TYPE = OBJECT; 100$if _ELF32 101 SIZE = addrsize[41]; 102$elif _ELF64 103 SIZE = addrsize[38]; 104$else 105$error Unknown platform 106$endif 107 }; 108 }; 109 lookup_sym; 110 111 alist_append; # librtld support 112 ld_entry_cnt { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; 113 # Diagnostic support 114 dbg_desc { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; 115 dbg_print; 116 eprintf; # Error message printing 117 veprintf; 118 119 dgettext; # Messaging support 120 strerror; 121 122 calloc; # Memory management (mapmalloc). 123 free; 124 malloc; 125 realloc; 126 127 # PLT tracing getenv() support. 128 _environ { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; 129 environ { 130 ASSERT = { 131 BINDING = WEAK; 132 ALIAS = _environ; 133 }; 134 }; 135 136 memcpy; # Some routines are useful for support 137 snprintf; # libraries such as liblddbg. 138 sprintf; # Note that some of these functions 139 strcat; # (like sprintf) may have reduced 140 strcmp; # functionality over libc, as a simpler 141 strcpy; # implementation is provided in ld.so.1. 142 strlen; 143 strrchr; 144 strtok_r; 145 ___errno; 146 qsort; 147 dl_iterate_phdr; 148 149$if _x86 && _ELF64 150 # amd64 ABI exception unwinding 151 _dlamd64getunwind; 152 dlamd64getunwind; 153$endif 154 155 # doXX_reloc_rtld and relocXX_table are required to 156 # support librtld.so. 157$if _ELF32 158 do32_reloc_rtld; 159 reloc32_table { 160 ASSERT = { 161 TYPE = OBJECT; 162$if _x86 163 SIZE = addrsize[132]; 164$elif _sparc 165 SIZE = addrsize[264]; 166$else 167$error Unknown architecture 168$endif 169 }; 170 }; 171$elif _ELF64 172 do64_reloc_rtld; 173 reloc64_table { 174 ASSERT = { 175 TYPE = OBJECT; 176$if _x86 177 SIZE = addrsize[86]; 178$elif _sparc 179 SIZE = addrsize[176]; 180$else 181$error Unknown architecture 182$endif 183 }; 184 }; 185$else 186$error unknown ELFCLASS 187$endif 188 local: 189 *; 190}; 191