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