summaryrefslogtreecommitdiff
path: root/usr/src/cmd/sgs/rtld/common/mapfile-vers
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:
	*;
};