xref: /illumos-gate/usr/src/lib/libc/port/mapfile-vers (revision 8222814ef8560ee0ba222eca8ca5acffc6cd0e44)
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) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
24# Copyright 2018 Nexenta Systems, Inc.
25# Copyright (c) 2012 by Delphix. All rights reserved.
26# Copyright 2020 Joyent, Inc.
27# Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved.
28# Copyright (c) 2013 Gary Mills
29# Copyright 2014 Garrett D'Amore <garrett@damore.org>
30# Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
31#
32
33#
34# MAPFILE HEADER START
35#
36# WARNING:  STOP NOW.  DO NOT MODIFY THIS FILE.
37# Object versioning must comply with the rules detailed in
38#
39#	usr/src/lib/README.mapfiles
40#
41# You should not be making modifications here until you've read the most current
42# copy of that file. If you need help, contact a gatekeeper for guidance.
43#
44# MAPFILE HEADER END
45#
46
47$mapfile_version 2
48
49#
50# All function names added to this or any other libc mapfile
51# must be placed under the 'protected:' designation.
52# The 'global:' designation is used *only* for data
53# items and for the members of the malloc() family.
54#
55
56# Mnemonic conditional input identifiers:
57#
58# - amd64, i386, sparc32, sparcv9: Correspond to ISA subdirectories used to
59#	hold per-platform code. Note however that we use 'sparc32' instead of
60#	'sparc'. Since '_sparc' is predefined to apply to, all sparc platforms,
61#	naming the 32-bit version 'sparc' would be too likely to cause errors.
62#
63# -	lf64: Defined on platforms that offer the 32-bit largefile APIs
64#
65$if _ELF32
66$add lf64
67$endif
68$if _sparc && _ELF32
69$add sparc32
70$endif
71$if _sparc && _ELF64
72$add sparcv9
73$endif
74$if _x86 && _ELF32
75$add i386
76$endif
77$if _x86 && _ELF64
78$add amd64
79$endif
80
81SYMBOL_VERSION ILLUMOS_0.38 {
82    protected:
83	getgrouplist;
84} ILLUMOS_0.37;
85
86SYMBOL_VERSION ILLUMOS_0.37 {
87    global:
88	__stack_chk_guard	{
89				  ASSERT = {
90					  TYPE = OBJECT;
91					  SIZE = addrsize;
92					};
93				};
94    protected:
95	__stack_chk_fail;
96} ILLUMOS_0.36;
97
98SYMBOL_VERSION ILLUMOS_0.36 {
99    protected:
100	upanic;
101} ILLUMOS_0.35;
102
103SYMBOL_VERSION ILLUMOS_0.35 {
104    protected:
105	qsort_r;
106} ILLUMOS_0.34;
107
108SYMBOL_VERSION ILLUMOS_0.34 {
109    protected:
110	futimes;
111	lutimes;
112} ILLUMOS_0.33;
113
114SYMBOL_VERSION ILLUMOS_0.33 {
115    protected:
116	c16rtomb;
117	c32rtomb;
118	mbrtoc16;
119	mbrtoc32;
120} ILLUMOS_0.32;
121
122SYMBOL_VERSION ILLUMOS_0.32 {
123    protected:
124	fmemopen;
125	open_memstream;
126	open_wmemstream;
127} ILLUMOS_0.31;
128
129SYMBOL_VERSION ILLUMOS_0.31 {
130    protected:
131	__unlockpt_xpg4;
132} ILLUMOS_0.30;
133
134SYMBOL_VERSION ILLUMOS_0.30 {
135    protected:
136	reallocf;
137} ILLUMOS_0.29;
138
139SYMBOL_VERSION ILLUMOS_0.29 {
140    protected:
141	getrandom;
142} ILLUMOS_0.28;
143
144SYMBOL_VERSION ILLUMOS_0.28 {
145    protected:
146	pthread_attr_getname_np;
147	pthread_attr_setname_np;
148	pthread_getname_np;
149	pthread_setname_np;
150	thr_getname;
151	thr_setname;
152} ILLUMOS_0.27;
153
154SYMBOL_VERSION ILLUMOS_0.27 {	# memset_s(3C) and set_constraint_handler_s(3C)
155    protected:
156	abort_handler_s;
157	ignore_handler_s;
158	memset_s;
159	set_constraint_handler_s;
160} ILLUMOS_0.26;
161
162SYMBOL_VERSION ILLUMOS_0.26 {	# fts(3) LFS
163$if lf64
164    protected:
165	fts_children64;
166	fts_close64;
167	fts_open64;
168	fts_read64;
169	fts_set64;
170$endif
171} ILLUMOS_0.25;
172
173SYMBOL_VERSION ILLUMOS_0.25 {	# inet_* moved from libnsl/libsocket
174    protected:
175	inet_addr;
176	inet_aton;
177	inet_lnaof;
178	inet_makeaddr;
179	inet_netof;
180	inet_network;
181	inet_ntoa;
182	inet_ntoa_r;
183	inet_ntop;
184	inet_pton;
185} ILLUMOS_0.24;
186
187SYMBOL_VERSION ILLUMOS_0.24 {	# openbsd compat
188    protected:
189	freezero;
190	recallocarray;
191} ILLUMOS_0.23;
192
193SYMBOL_VERSION ILLUMOS_0.23 {	# openbsd compat
194    protected:
195	fts_children;
196	fts_close;
197	fts_open;
198	fts_read;
199	fts_set;
200	reallocarray;
201	strtonum;
202} ILLUMOS_0.22;
203
204SYMBOL_VERSION ILLUMOS_0.22 {	# endian(3C)
205    protected:
206	htobe16;
207	htobe32;
208	htobe64;
209	htole16;
210	htole32;
211	htole64;
212	betoh16;
213	letoh16;
214	be16toh;
215	le16toh;
216	betoh32;
217	letoh32;
218	be32toh;
219	le32toh;
220	betoh64;
221	letoh64;
222	be64toh;
223	le64toh;
224} ILLUMOS_0.21;
225
226SYMBOL_VERSION ILLUMOS_0.21 {
227    protected:
228	pthread_attr_get_np;
229} ILLUMOS_0.20;
230
231SYMBOL_VERSION ILLUMOS_0.20 {	# C11
232    protected:
233	aligned_alloc;
234	at_quick_exit;
235	call_once;
236	cnd_broadcast;
237	cnd_destroy;
238	cnd_init;
239	cnd_signal;
240	cnd_timedwait;
241	cnd_wait;
242	mtx_destroy;
243	mtx_init;
244	mtx_lock;
245	mtx_timedlock;
246	mtx_trylock;
247	mtx_unlock;
248	quick_exit;
249	thrd_create;
250	thrd_current;
251	thrd_detach;
252	thrd_equal;
253	thrd_exit;
254	thrd_join;
255	thrd_sleep;
256	thrd_yield;
257	timespec_get;
258	tss_create;
259	tss_delete;
260	tss_get;
261	tss_set;
262} ILLUMOS_0.19;
263
264SYMBOL_VERSION ILLUMOS_0.19 {	# flock
265    protected:
266	flock;
267} ILLUMOS_0.18;
268
269SYMBOL_VERSION ILLUMOS_0.18 {	# signalfd
270    protected:
271	signalfd;
272} ILLUMOS_0.17;
273
274SYMBOL_VERSION ILLUMOS_0.17 {	# glob(3C) LFS
275$if lf64
276    protected:
277	_glob_ext64;
278	_globfree_ext64;
279$endif
280} ILLUMOS_0.16;
281
282SYMBOL_VERSION ILLUMOS_0.16 {	# timerfd
283    protected:
284	timerfd_create;
285	timerfd_gettime;
286	timerfd_settime;
287} ILLUMOS_0.15;
288
289SYMBOL_VERSION ILLUMOS_0.15 {	# epoll(3C)
290    protected:
291	epoll_create;
292	epoll_create1;
293	epoll_ctl;
294	epoll_wait;
295	epoll_pwait;
296} ILLUMOS_0.14;
297
298SYMBOL_VERSION ILLUMOS_0.14 {	# strerror_l
299    protected:
300	strerror_l;
301} ILLUMOS_0.13;
302
303SYMBOL_VERSION ILLUMOS_0.13 {	# eventfd
304    protected:
305	eventfd;
306	eventfd_read;
307	eventfd_write;
308} ILLUMOS_0.12;
309
310SYMBOL_VERSION ILLUMOS_0.12 {	# arc4random and friends
311    protected:
312	arc4random;
313	arc4random_buf;
314	arc4random_uniform;
315	explicit_bzero;
316	getentropy;
317} ILLUMOS_0.11;
318
319SYMBOL_VERSION ILLUMOS_0.11 {	# Illumos additions
320    protected:
321	iswxdigit_l;
322	isxdigit_l;
323} ILLUMOS_0.10;
324
325SYMBOL_VERSION ILLUMOS_0.10 {	# Illumos additions
326    protected:
327	preadv;
328	pwritev;
329
330$if lf64
331	preadv64;
332	pwritev64;
333$endif
334} ILLUMOS_0.9;
335
336SYMBOL_VERSION ILLUMOS_0.9 {
337    protected:
338	wcsnrtombs;
339	wcsnrtombs_l;
340} ILLUMOS_0.8;
341
342SYMBOL_VERSION ILLUMOS_0.8 {	# POSIX 2008 newlocale and friends
343    protected:
344	__global_locale;
345	__mb_cur_max;
346	__mb_cur_max_l;
347	btowc_l;
348	duplocale;
349	fgetwc_l;
350	freelocale;
351	getwc_l;
352	isalnum_l;
353	isalpha_l;
354	isblank_l;
355	iscntrl_l;
356	isdigit_l;
357	isgraph_l;
358	islower_l;
359	isprint_l;
360	ispunct_l;
361	isspace_l;
362	isupper_l;
363	iswideogram;
364	iswideogram_l;
365	iswnumber;
366	iswnumber_l;
367	iswhexnumber;
368	iswhexnumber_l;
369	iswphonogram;
370	iswphonogram_l;
371	iswspecial;
372	iswspecial_l;
373	iswalnum_l;
374	iswalpha_l;
375	iswblank_l;
376	iswcntrl_l;
377	iswctype_l;
378	iswdigit_l;
379	iswgraph_l;
380	iswlower_l;
381	iswprint_l;
382	iswpunct_l;
383	iswspace_l;
384	iswupper_l;
385	mblen_l;
386	mbrlen_l;
387	mbsinit_l;
388	mbsnrtowcs;
389	mbsnrtowcs_l;
390	mbsrtowcs_l;
391	mbstowcs_l;
392	mbtowc_l;
393	newlocale;
394	nl_langinfo_l;
395	strcasecmp_l;
396	strcasestr_l;
397	strcoll_l;
398	strfmon_l;
399	strftime_l;
400	strncasecmp_l;
401	strptime_l;
402	strxfrm_l;
403	tolower_l;
404	toupper_l;
405	towlower_l;
406	towupper_l;
407	towctrans_l;
408	uselocale;
409	wcrtomb_l;
410	wcscasecmp_l;
411	wcscoll_l;
412	wcsncasecmp_l;
413	wcsrtombs_l;
414	wcstombs_l;
415	wcswidth_l;
416	wcsxfrm_l;
417	wctob_l;
418	wctomb_l;
419	wctrans_l;
420	wctype_l;
421	wcwidth_l;
422} ILLUMOS_0.7;
423
424SYMBOL_VERSION ILLUMOS_0.7 {	# Illumos additions
425    protected:
426	_glob_ext;
427	_globfree_ext;
428} ILLUMOS_0.6;
429
430SYMBOL_VERSION ILLUMOS_0.6 {	# Illumos additions
431    protected:
432	getloginx;
433	getloginx_r;
434	__posix_getloginx_r;
435} ILLUMOS_0.5;
436
437SYMBOL_VERSION ILLUMOS_0.5 {	# common C++ ABI exit handlers
438    protected:
439	__cxa_atexit;
440	__cxa_finalize;
441} ILLUMOS_0.4;
442
443SYMBOL_VERSION ILLUMOS_0.4 {	# Illumos additions
444    protected:
445	pipe2;
446	dup3;
447	mkostemp;
448	mkostemps;
449
450$if lf64
451	mkostemp64;
452	mkostemps64;
453$endif
454} ILLUMOS_0.3;
455
456SYMBOL_VERSION ILLUMOS_0.3 {	# Illumos additions
457    protected:
458	assfail3;
459} ILLUMOS_0.2;
460
461SYMBOL_VERSION ILLUMOS_0.2 {	# Illumos additions
462    protected:
463	posix_spawn_pipe_np;
464} ILLUMOS_0.1;
465
466SYMBOL_VERSION ILLUMOS_0.1 {	# Illumos additions
467    protected:
468	timegm;
469} SUNW_1.23;
470
471SYMBOL_VERSION SUNW_1.23 {	# SunOS 5.11 (Solaris 11)
472    global:
473	_nl_domain_bindings	{
474				  ASSERT = {
475					  TYPE = OBJECT;
476					  SIZE = addrsize;
477					};
478				};
479	_nl_msg_cat_cntr	{
480				  ASSERT = {
481					  TYPE = OBJECT;
482					  SIZE = 4;
483					};
484				};
485
486$if _ELF32
487	dl_iterate_phdr		{
488				  TYPE = FUNCTION;
489				  FILTER = /usr/lib/ld.so.1;
490				};
491$elif sparcv9
492	dl_iterate_phdr		{
493				  TYPE = FUNCTION;
494				  FILTER = /usr/lib/sparcv9/ld.so.1;
495				};
496$elif amd64
497	dl_iterate_phdr	{
498				  TYPE = FUNCTION;
499				  FILTER = /usr/lib/amd64/ld.so.1;
500				};
501$else
502$error unknown platform
503$endif
504
505    protected:
506
507$if sparc32
508	__align_cpy_1;
509$endif
510
511	addrtosymstr;
512	aio_cancel;
513	aiocancel;
514	aio_error;
515	aio_fsync;
516	aio_read;
517	aioread;
518	aio_return;
519	aio_suspend;
520	aiowait;
521	aio_waitn;
522	aio_write;
523	aiowrite;
524	asprintf;
525	assfail;
526	backtrace;
527	backtrace_symbols;
528	backtrace_symbols_fd;
529	canonicalize_file_name;
530	clearenv;
531	clock_getres;
532	clock_gettime;
533	clock_nanosleep;
534	clock_settime;
535	daemon;
536	dirfd;
537	door_bind;
538	door_call;
539	door_create;
540	door_cred;
541	door_getparam;
542	door_info;
543	door_return;
544	door_revoke;
545	door_server_create;
546	door_setparam;
547	door_ucred;
548	door_unbind;
549	door_xcreate;
550	err;
551	errx;
552	faccessat;
553	fchmodat;
554	fcloseall;
555	fdatasync;
556	ffsl;
557	ffsll;
558	fgetattr;
559	fls;
560	flsl;
561	flsll;
562	forkallx;
563	forkx;
564	fsetattr;
565	getattrat;
566	getdelim;
567	getline;
568	get_nprocs;
569	get_nprocs_conf;
570	getprogname;
571	htonl;
572	htonll;
573	htons;
574	linkat;
575	lio_listio;
576	memmem;
577	mkdirat;
578	mkdtemp;
579	mkfifoat;
580	mknodat;
581	mkstemps;
582	mmapobj;
583	mq_close;
584	mq_getattr;
585	mq_notify;
586	mq_open;
587	mq_receive;
588	mq_reltimedreceive_np;
589	mq_reltimedsend_np;
590	mq_send;
591	mq_setattr;
592	mq_timedreceive;
593	mq_timedsend;
594	mq_unlink;
595	nanosleep;
596	ntohl;
597	ntohll;
598	ntohs;
599	posix_fadvise;
600	posix_fallocate;
601	posix_madvise;
602	posix_memalign;
603	posix_spawn_file_actions_addclosefrom_np;
604	posix_spawnattr_getsigignore_np;
605	posix_spawnattr_setsigignore_np;
606	ppoll;
607	priv_basicset;
608	pthread_key_create_once_np;
609	pthread_mutexattr_getrobust;
610	pthread_mutexattr_setrobust;
611	pthread_mutex_consistent;
612	readlinkat;
613	sched_getparam;
614	sched_get_priority_max;
615	sched_get_priority_min;
616	sched_getscheduler;
617	sched_rr_get_interval;
618	sched_setparam;
619	sched_setscheduler;
620	sched_yield;
621	sem_close;
622	sem_destroy;
623	sem_getvalue;
624	sem_init;
625	sem_open;
626	sem_post;
627	sem_reltimedwait_np;
628	sem_timedwait;
629	sem_trywait;
630	sem_unlink;
631	sem_wait;
632	setattrat;
633	setprogname;
634	_sharefs;
635	shm_open;
636	shm_unlink;
637	sigqueue;
638	sigtimedwait;
639	sigwaitinfo;
640	smt_pause;
641	stpcpy;
642	stpncpy;
643	strcasestr;
644	strchrnul;
645	strndup;
646	strnlen;
647	strnstr;
648	strsep;
649	symlinkat;
650	thr_keycreate_once;
651	timer_create;
652	timer_delete;
653	timer_getoverrun;
654	timer_gettime;
655	timer_settime;
656	u8_strcmp;
657	u8_validate;
658	uconv_u16tou32;
659	uconv_u16tou8;
660	uconv_u32tou16;
661	uconv_u32tou8;
662	uconv_u8tou16;
663	uconv_u8tou32;
664	vasprintf;
665	verr;
666	verrx;
667	vforkx;
668	vwarn;
669	vwarnx;
670	warn;
671	warnx;
672	wcpcpy;
673	wcpncpy;
674	wcscasecmp;
675	wcsdup;
676	wcsncasecmp;
677	wcsnlen;
678
679$if lf64
680	aio_cancel64;
681	aio_error64;
682	aio_fsync64;
683	aio_read64;
684	aioread64;
685	aio_return64;
686	aio_suspend64;
687	aio_waitn64;
688	aio_write64;
689	aiowrite64;
690	lio_listio64;
691	mkstemps64;
692	posix_fadvise64;
693	posix_fallocate64;
694$endif
695} SUNW_1.22.7;
696
697SYMBOL_VERSION SUNW_1.22.7 {	# s10u10 - SunOS 5.10 (Solaris 10) patch additions
698    protected:
699	SUNW_1.22.7;
700} SUNW_1.22.6;
701
702SYMBOL_VERSION SUNW_1.22.6 {	# s10u9 - SunOS 5.10 (Solaris 10) patch additions
703    protected:
704	futimens;
705	utimensat;
706} SUNW_1.22.5;
707
708SYMBOL_VERSION SUNW_1.22.5 {	# s10u8 - SunOS 5.10 (Solaris 10) patch additions
709    protected:
710	getpagesizes2;
711} SUNW_1.22.4;
712
713SYMBOL_VERSION SUNW_1.22.4 {	# s10u7 - SunOS 5.10 (Solaris 10) patch additions
714    protected:
715	SUNW_1.22.4;
716} SUNW_1.22.3;
717
718SYMBOL_VERSION SUNW_1.22.3 {	# SunOS 5.10 (Solaris 10) patch additions
719    protected:
720	mutex_consistent;
721	u8_textprep_str;
722	uucopy;
723	uucopystr;
724} SUNW_1.22.2;
725
726SYMBOL_VERSION SUNW_1.22.2 {	# SunOS 5.10 (Solaris 10) patch additions
727    protected:
728	is_system_labeled;
729	ucred_getlabel;
730	_ucred_getlabel;
731} SUNW_1.22.1;
732
733SYMBOL_VERSION SUNW_1.22.1 {	# SunOS 5.10 (Solaris 10) patch additions
734    protected:
735	atomic_add_8;
736	atomic_add_8_nv;
737	atomic_add_char		{ FLAGS = NODYNSORT; };
738	atomic_add_char_nv	{ FLAGS = NODYNSORT; };
739	atomic_add_int		{ FLAGS = NODYNSORT; };
740	atomic_add_int_nv	{ FLAGS = NODYNSORT; };
741	atomic_add_ptr		{ FLAGS = NODYNSORT; };
742	atomic_add_ptr_nv	{ FLAGS = NODYNSORT; };
743	atomic_add_short	{ FLAGS = NODYNSORT; };
744	atomic_add_short_nv	{ FLAGS = NODYNSORT; };
745	atomic_and_16;
746	atomic_and_16_nv;
747	atomic_and_32_nv;
748	atomic_and_64;
749	atomic_and_64_nv;
750	atomic_and_8;
751	atomic_and_8_nv;
752	atomic_and_uchar	{ FLAGS = NODYNSORT; };
753	atomic_and_uchar_nv	{ FLAGS = NODYNSORT; };
754	atomic_and_uint_nv	{ FLAGS = NODYNSORT; };
755	atomic_and_ulong	{ FLAGS = NODYNSORT; };
756	atomic_and_ulong_nv	{ FLAGS = NODYNSORT; };
757	atomic_and_ushort	{ FLAGS = NODYNSORT; };
758	atomic_and_ushort_nv	{ FLAGS = NODYNSORT; };
759	atomic_cas_16;
760	atomic_cas_32;
761	atomic_cas_64;
762	atomic_cas_8;
763	atomic_cas_ptr		{ FLAGS = NODYNSORT; };
764	atomic_cas_uchar	{ FLAGS = NODYNSORT; };
765	atomic_cas_uint		{ FLAGS = NODYNSORT; };
766	atomic_cas_ulong	{ FLAGS = NODYNSORT; };
767	atomic_cas_ushort	{ FLAGS = NODYNSORT; };
768	atomic_clear_long_excl	{ FLAGS = NODYNSORT; };
769	atomic_dec_16;
770	atomic_dec_16_nv;
771	atomic_dec_32;
772	atomic_dec_32_nv;
773	atomic_dec_64;
774	atomic_dec_64_nv;
775	atomic_dec_8;
776	atomic_dec_8_nv;
777	atomic_dec_uchar	{ FLAGS = NODYNSORT; };
778	atomic_dec_uchar_nv	{ FLAGS = NODYNSORT; };
779	atomic_dec_uint		{ FLAGS = NODYNSORT; };
780	atomic_dec_uint_nv	{ FLAGS = NODYNSORT; };
781	atomic_dec_ulong	{ FLAGS = NODYNSORT; };
782	atomic_dec_ulong_nv	{ FLAGS = NODYNSORT; };
783	atomic_dec_ushort	{ FLAGS = NODYNSORT; };
784	atomic_dec_ushort_nv	{ FLAGS = NODYNSORT; };
785	atomic_inc_16;
786	atomic_inc_16_nv;
787	atomic_inc_32;
788	atomic_inc_32_nv;
789	atomic_inc_64;
790	atomic_inc_64_nv;
791	atomic_inc_8;
792	atomic_inc_8_nv;
793	atomic_inc_uchar	{ FLAGS = NODYNSORT; };
794	atomic_inc_uchar_nv	{ FLAGS = NODYNSORT; };
795	atomic_inc_uint		{ FLAGS = NODYNSORT; };
796	atomic_inc_uint_nv	{ FLAGS = NODYNSORT; };
797	atomic_inc_ulong	{ FLAGS = NODYNSORT; };
798	atomic_inc_ulong_nv	{ FLAGS = NODYNSORT; };
799	atomic_inc_ushort	{ FLAGS = NODYNSORT; };
800	atomic_inc_ushort_nv	{ FLAGS = NODYNSORT; };
801	atomic_or_16;
802	atomic_or_16_nv;
803	atomic_or_32_nv;
804	atomic_or_64;
805	atomic_or_64_nv;
806	atomic_or_8;
807	atomic_or_8_nv;
808	atomic_or_uchar		{ FLAGS = NODYNSORT; };
809	atomic_or_uchar_nv	{ FLAGS = NODYNSORT; };
810	atomic_or_uint_nv	{ FLAGS = NODYNSORT; };
811	atomic_or_ulong		{ FLAGS = NODYNSORT; };
812	atomic_or_ulong_nv	{ FLAGS = NODYNSORT; };
813	atomic_or_ushort	{ FLAGS = NODYNSORT; };
814	atomic_or_ushort_nv	{ FLAGS = NODYNSORT; };
815	atomic_set_long_excl	{ FLAGS = NODYNSORT; };
816	atomic_swap_16;
817	atomic_swap_32;
818	atomic_swap_64;
819	atomic_swap_8;
820	atomic_swap_ptr		{ FLAGS = NODYNSORT; };
821	atomic_swap_uchar	{ FLAGS = NODYNSORT; };
822	atomic_swap_uint	{ FLAGS = NODYNSORT; };
823	atomic_swap_ulong	{ FLAGS = NODYNSORT; };
824	atomic_swap_ushort	{ FLAGS = NODYNSORT; };
825	membar_consumer;
826	membar_enter;
827	membar_exit;
828	membar_producer;
829
830$if _ELF32
831	enable_extended_FILE_stdio;
832$endif
833
834$if i386
835	# Note: atomic_[and,dec,inc,or]_64_nv are also defined above. Here,
836	# we add the NODYNSORT attribute to them. On this platform, they are
837	# aliases for the non-_nv versions. If that is changed, these lines
838	# should be removed.
839	atomic_and_64_nv	{ FLAGS = NODYNSORT; };
840	atomic_dec_64_nv	{ FLAGS = NODYNSORT; };
841	atomic_inc_64_nv	{ FLAGS = NODYNSORT; };
842	atomic_or_64_nv		{ FLAGS = NODYNSORT; };
843$endif
844$if _sparc
845	# Note: atomic_OP_WIDTH_nv symbols are also defined above. Here,
846	# we add the NODYNSORT attribute to them. On this platform, they are
847	# aliases for the non-_nv versions. If that is changed, these lines
848	# should be removed.
849	atomic_add_8_nv		{ FLAGS = NODYNSORT; };
850	atomic_and_8_nv		{ FLAGS = NODYNSORT; };
851	atomic_and_16_nv	{ FLAGS = NODYNSORT; };
852	atomic_and_32_nv	{ FLAGS = NODYNSORT; };
853	atomic_and_64_nv	{ FLAGS = NODYNSORT; };
854	atomic_dec_8_nv		{ FLAGS = NODYNSORT; };
855	atomic_dec_16_nv	{ FLAGS = NODYNSORT; };
856	atomic_dec_32_nv	{ FLAGS = NODYNSORT; };
857	atomic_dec_64_nv	{ FLAGS = NODYNSORT; };
858	atomic_inc_8_nv		{ FLAGS = NODYNSORT; };
859	atomic_inc_16_nv	{ FLAGS = NODYNSORT; };
860	atomic_inc_32_nv	{ FLAGS = NODYNSORT; };
861	atomic_inc_64_nv	{ FLAGS = NODYNSORT; };
862	atomic_or_8_nv		{ FLAGS = NODYNSORT; };
863	atomic_or_16_nv		{ FLAGS = NODYNSORT; };
864	atomic_or_32_nv		{ FLAGS = NODYNSORT; };
865	atomic_or_64_nv		{ FLAGS = NODYNSORT; };
866$endif
867} SUNW_1.22;
868
869SYMBOL_VERSION SUNW_1.22 {	# SunOS 5.10 (Solaris 10)
870    global:
871$if _ELF32
872	dladdr		{ TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; };
873	dladdr1		{ TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; };
874	dlclose		{ TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; };
875	dldump		{ TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; };
876	dlerror		{ TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; };
877	dlinfo		{ TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; };
878	dlmopen		{ TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; };
879	dlopen		{ TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; };
880	dlsym		{ TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; };
881$elif sparcv9
882	dladdr		{ TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; };
883	dladdr1		{ TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; };
884	dlclose		{ TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; };
885	dldump		{ TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; };
886	dlerror		{ TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; };
887	dlinfo		{ TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; };
888	dlmopen		{ TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; };
889	dlopen		{ TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; };
890	dlsym		{ TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; };
891$elif amd64
892	dladdr		{ TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; };
893	dladdr1		{ TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; };
894	dlamd64getunwind	{
895				  TYPE = FUNCTION;
896				  FILTER = /usr/lib/amd64/ld.so.1;
897				};
898	dlclose		{ TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; };
899	dldump		{ TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; };
900	dlerror		{ TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; };
901	dlinfo		{ TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; };
902	dlmopen		{ TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; };
903	dlopen		{ TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; };
904	dlsym		{ TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; };
905$else
906$error unknown platform
907$endif
908
909    protected:
910	alphasort;
911	_alphasort;
912	atomic_add_16;
913	atomic_add_16_nv;
914	atomic_add_32;
915	atomic_add_32_nv;
916	atomic_add_64;
917	atomic_add_64_nv;
918	atomic_add_long			{ FLAGS = NODYNSORT; };
919	atomic_add_long_nv		{ FLAGS = NODYNSORT; };
920	atomic_and_32;
921	atomic_and_uint			{ FLAGS = NODYNSORT; };
922	atomic_or_32;
923	atomic_or_uint			{ FLAGS = NODYNSORT; };
924	_Exit;
925	getisax;
926	_getisax;
927	getopt_clip;
928	_getopt_clip;
929	getopt_long;
930	_getopt_long;
931	getopt_long_only;
932	_getopt_long_only;
933	getpeerucred;
934	_getpeerucred;
935	getpflags;
936	_getpflags;
937	getppriv;
938	_getppriv;
939	getprivimplinfo;
940	_getprivimplinfo;
941	getzoneid;
942	getzoneidbyname;
943	getzonenamebyid;
944	imaxabs;
945	imaxdiv;
946	isblank;
947	iswblank;
948	port_alert;
949	port_associate;
950	port_create;
951	port_dissociate;
952	port_get;
953	port_getn;
954	port_send;
955	port_sendn;
956	posix_openpt;
957	posix_spawn;
958	posix_spawnattr_destroy;
959	posix_spawnattr_getflags;
960	posix_spawnattr_getpgroup;
961	posix_spawnattr_getschedparam;
962	posix_spawnattr_getschedpolicy;
963	posix_spawnattr_getsigdefault;
964	posix_spawnattr_getsigmask;
965	posix_spawnattr_init;
966	posix_spawnattr_setflags;
967	posix_spawnattr_setpgroup;
968	posix_spawnattr_setschedparam;
969	posix_spawnattr_setschedpolicy;
970	posix_spawnattr_setsigdefault;
971	posix_spawnattr_setsigmask;
972	posix_spawn_file_actions_addclose;
973	posix_spawn_file_actions_adddup2;
974	posix_spawn_file_actions_addopen;
975	posix_spawn_file_actions_destroy;
976	posix_spawn_file_actions_init;
977	posix_spawnp;
978	priv_addset;
979	_priv_addset;
980	priv_allocset;
981	_priv_allocset;
982	priv_copyset;
983	_priv_copyset;
984	priv_delset;
985	_priv_delset;
986	priv_emptyset;
987	_priv_emptyset;
988	priv_fillset;
989	_priv_fillset;
990	__priv_free_info;
991	priv_freeset;
992	_priv_freeset;
993	priv_getbyname;
994	_priv_getbyname;
995	__priv_getbyname;
996	priv_getbynum;
997	_priv_getbynum;
998	__priv_getbynum;
999	__priv_getdata;
1000	priv_getsetbyname;
1001	_priv_getsetbyname;
1002	__priv_getsetbyname;
1003	priv_getsetbynum;
1004	_priv_getsetbynum;
1005	__priv_getsetbynum;
1006	priv_gettext;
1007	_priv_gettext;
1008	priv_ineffect;
1009	_priv_ineffect;
1010	priv_intersect;
1011	_priv_intersect;
1012	priv_inverse;
1013	_priv_inverse;
1014	priv_isemptyset;
1015	_priv_isemptyset;
1016	priv_isequalset;
1017	_priv_isequalset;
1018	priv_isfullset;
1019	_priv_isfullset;
1020	priv_ismember;
1021	_priv_ismember;
1022	priv_issubset;
1023	_priv_issubset;
1024	__priv_parse_info;
1025	priv_set;
1026	_priv_set;
1027	priv_set_to_str;
1028	_priv_set_to_str;
1029	__priv_set_to_str;
1030	priv_str_to_set;
1031	_priv_str_to_set;
1032	priv_union;
1033	_priv_union;
1034	pselect;
1035	pthread_attr_getstack;
1036	pthread_attr_setstack;
1037	pthread_barrierattr_destroy;
1038	pthread_barrierattr_getpshared;
1039	pthread_barrierattr_init;
1040	pthread_barrierattr_setpshared;
1041	pthread_barrier_destroy;
1042	pthread_barrier_init;
1043	pthread_barrier_wait;
1044	pthread_condattr_getclock;
1045	pthread_condattr_setclock;
1046	pthread_mutexattr_getrobust_np	{ FLAGS = NODYNSORT; };
1047	pthread_mutexattr_setrobust_np	{ FLAGS = NODYNSORT; };
1048	pthread_mutex_consistent_np	{ FLAGS = NODYNSORT; };
1049	pthread_mutex_reltimedlock_np;
1050	pthread_mutex_timedlock;
1051	pthread_rwlock_reltimedrdlock_np;
1052	pthread_rwlock_reltimedwrlock_np;
1053	pthread_rwlock_timedrdlock;
1054	pthread_rwlock_timedwrlock;
1055	pthread_setschedprio;
1056	pthread_spin_destroy;
1057	pthread_spin_init;
1058	pthread_spin_lock;
1059	pthread_spin_trylock;
1060	pthread_spin_unlock;
1061	rctlblk_set_recipient_pid;
1062	scandir;
1063	_scandir;
1064	schedctl_exit;
1065	schedctl_init;
1066	schedctl_lookup;
1067	sema_reltimedwait;
1068	sema_timedwait;
1069	setenv;
1070	setpflags;
1071	_setpflags;
1072	setppriv;
1073	_setppriv;
1074	strerror_r;
1075	strtof;
1076	strtoimax;
1077	strtold;
1078	strtoumax;
1079	ucred_free;
1080	_ucred_free;
1081	ucred_get;
1082	_ucred_get;
1083	ucred_getegid;
1084	_ucred_getegid;
1085	ucred_geteuid;
1086	_ucred_geteuid;
1087	ucred_getgroups;
1088	_ucred_getgroups;
1089	ucred_getpflags;
1090	_ucred_getpflags;
1091	ucred_getpid;
1092	_ucred_getpid;
1093	ucred_getprivset;
1094	_ucred_getprivset;
1095	ucred_getprojid;
1096	_ucred_getprojid;
1097	ucred_getrgid;
1098	_ucred_getrgid;
1099	ucred_getruid;
1100	_ucred_getruid;
1101	ucred_getsgid;
1102	_ucred_getsgid;
1103	ucred_getsuid;
1104	_ucred_getsuid;
1105	ucred_getzoneid;
1106	_ucred_getzoneid;
1107	ucred_size;
1108	_ucred_size;
1109	unsetenv;
1110	wcstof;
1111	wcstoimax;
1112	wcstold;
1113	wcstoll;
1114	wcstoull;
1115	wcstoumax;
1116
1117$if lf64
1118	alphasort64;
1119	_alphasort64;
1120	pselect_large_fdset;
1121	scandir64;
1122	_scandir64;
1123$endif
1124
1125$if _ELF64
1126	walkcontext;
1127$endif
1128
1129$if _sparc
1130	# Note: atomic_add_[16,32,64]_nv are also defined above. Here, we add
1131	# the NODYNSORT attribute to them. On this platform, they are aliases
1132	# for the non-_nv versions. If that is changed, these lines should be
1133	# removed.
1134	atomic_add_16_nv		{ FLAGS = NODYNSORT; };
1135	atomic_add_32_nv		{ FLAGS = NODYNSORT; };
1136	atomic_add_64_nv		{ FLAGS = NODYNSORT; };
1137$endif
1138
1139$if i386
1140	# Note: atomic_add_64_nv is also defined above. Here, we add the
1141	# NODYNSORT attribute to it. On this platform, it is an aliases for
1142	# atomic_add_64. If that is changed, this line should be removed.
1143	atomic_add_64_nv		{ FLAGS = NODYNSORT; };
1144$endif
1145
1146$if amd64
1147	# Exception unwind APIs required by the amd64 ABI
1148	_SUNW_Unwind_DeleteException;
1149	_SUNW_Unwind_ForcedUnwind;
1150	_SUNW_Unwind_GetCFA;
1151	_SUNW_Unwind_GetGR;
1152	_SUNW_Unwind_GetIP;
1153	_SUNW_Unwind_GetLanguageSpecificData;
1154	_SUNW_Unwind_GetRegionStart;
1155	_SUNW_Unwind_RaiseException;
1156	_SUNW_Unwind_Resume;
1157	_SUNW_Unwind_SetGR;
1158	_SUNW_Unwind_SetIP;
1159	_UA_CLEANUP_PHASE		{
1160					  ASSERT = {
1161						  TYPE = OBJECT;
1162						  SIZE = 4;
1163						};
1164					};
1165	_UA_FORCE_UNWIND		{
1166					  ASSERT = {
1167						  TYPE = OBJECT;
1168						  SIZE = 4;
1169						};
1170					};
1171	_UA_HANDLER_FRAME		{
1172					  ASSERT = {
1173						  TYPE = OBJECT;
1174						  SIZE = 4;
1175						};
1176					};
1177	_UA_SEARCH_PHASE		{
1178					  ASSERT = {
1179						  TYPE = OBJECT;
1180						  SIZE = 4;
1181						};
1182					};
1183	_Unwind_DeleteException;
1184	_Unwind_ForcedUnwind;
1185	_Unwind_GetCFA;
1186	_Unwind_GetGR;
1187	_Unwind_GetIP;
1188	_Unwind_GetLanguageSpecificData;
1189	_Unwind_GetRegionStart;
1190	_Unwind_RaiseException;
1191	_Unwind_Resume;
1192	_Unwind_SetGR;
1193	_Unwind_SetIP;
1194$endif
1195} SUNW_1.21.3;
1196
1197SYMBOL_VERSION SUNW_1.21.3 {	# SunOS 5.9 (Solaris 9) patch additions
1198    protected:
1199	forkall;
1200} SUNW_1.21.2;
1201
1202SYMBOL_VERSION SUNW_1.21.2 {	# SunOS 5.9 (Solaris 9) patch additions
1203    protected:
1204	getustack;
1205	_getustack;
1206	setustack;
1207	_setustack;
1208	stack_getbounds;
1209	_stack_getbounds;
1210	_stack_grow;
1211	stack_inbounds;
1212	_stack_inbounds;
1213	stack_setbounds;
1214	_stack_setbounds;
1215	stack_violation;
1216	_stack_violation;
1217
1218$if _sparc
1219	__makecontext_v2;
1220	___makecontext_v2;
1221$endif
1222} SUNW_1.21.1;
1223
1224SYMBOL_VERSION SUNW_1.21.1 {	# SunOS 5.9 (Solaris 9) patch additions
1225    protected:
1226	crypt_gensalt;
1227} SUNW_1.21;
1228
1229SYMBOL_VERSION SUNW_1.21 {	# SunOS 5.9 (Solaris 9)
1230    protected:
1231	attropen;
1232	_attropen;
1233	bind_textdomain_codeset;
1234	closefrom;
1235	_closefrom;
1236	cond_reltimedwait;
1237	dcngettext;
1238	dngettext;
1239	fchownat;
1240	_fchownat;
1241	fdopendir;
1242	_fdopendir;
1243	fdwalk;
1244	_fdwalk;
1245	fstatat;
1246	_fstatat;
1247	futimesat;
1248	_futimesat;
1249	getcpuid;
1250	_getcpuid;
1251	gethomelgroup;
1252	_gethomelgroup	{ FLAGS = NODYNSORT; };
1253	getpagesizes;
1254	getrctl;
1255	_getrctl;
1256	issetugid;
1257	_issetugid;
1258	_lwp_cond_reltimedwait;
1259	meminfo;
1260	_meminfo;
1261	ngettext;
1262	openat;
1263	_openat;
1264	printstack;
1265	priocntl;
1266	priocntlset;
1267	pset_getattr;
1268	pset_getloadavg;
1269	pset_list;
1270	pset_setattr;
1271	pthread_cond_reltimedwait_np;
1272	rctlblk_get_enforced_value;
1273	rctlblk_get_firing_time;
1274	rctlblk_get_global_action;
1275	rctlblk_get_global_flags;
1276	rctlblk_get_local_action;
1277	rctlblk_get_local_flags;
1278	rctlblk_get_privilege;
1279	rctlblk_get_recipient_pid;
1280	rctlblk_get_value;
1281	rctlblk_set_local_action;
1282	rctlblk_set_local_flags;
1283	rctlblk_set_privilege;
1284	rctlblk_set_value;
1285	rctlblk_size;
1286	rctl_walk;
1287	renameat;
1288	setrctl;
1289	_setrctl;
1290	unlinkat;
1291	_unlinkat;
1292	vfscanf;
1293	_vfscanf;
1294	vfwscanf;
1295	vscanf;
1296	_vscanf;
1297	vsscanf;
1298	_vsscanf;
1299	vswscanf;
1300	vwscanf;
1301
1302$if _ELF32
1303	walkcontext;
1304$endif
1305
1306$if lf64
1307	attropen64;
1308	_attropen64;
1309	fstatat64;
1310	_fstatat64;
1311	openat64;
1312	_openat64;
1313$endif
1314} SUNW_1.20.4;
1315
1316SYMBOL_VERSION SUNW_1.20.4 {	# SunOS 5.8 (Solaris 8) patch additions
1317    protected:
1318	semtimedop;
1319	_semtimedop;
1320} SUNW_1.20.1;
1321
1322SYMBOL_VERSION SUNW_1.20.1 {	# SunOS 5.8 (Solaris 8) patch additions
1323    protected:
1324	getacct;
1325	_getacct;
1326	getprojid;
1327	_getprojid;
1328	gettaskid;
1329	_gettaskid;
1330	msgids;
1331	_msgids;
1332	msgsnap;
1333	_msgsnap;
1334	putacct;
1335	_putacct;
1336	semids;
1337	_semids;
1338	settaskid;
1339	_settaskid;
1340	shmids;
1341	_shmids;
1342	wracct;
1343	_wracct;
1344} SUNW_1.20;
1345
1346SYMBOL_VERSION SUNW_1.20 {	# SunOS 5.8 (Solaris 8)
1347    protected:
1348	getextmntent;
1349	resetmnttab;
1350} SUNW_1.19;
1351
1352SYMBOL_VERSION SUNW_1.19 {
1353    protected:
1354	strlcat;
1355	strlcpy;
1356	umount2;
1357	_umount2;
1358} SUNW_1.18.1;
1359
1360SYMBOL_VERSION SUNW_1.18.1 {
1361    protected:
1362	__fsetlocking;
1363} SUNW_1.18;
1364
1365SYMBOL_VERSION SUNW_1.18 {	# SunOS 5.7 (Solaris 7)
1366    protected:
1367	btowc;
1368	__fbufsize;
1369	__flbf;
1370	_flushlbf;
1371	__fpending;
1372	__fpurge;
1373	__freadable;
1374	__freading;
1375	fwide;
1376	fwprintf;
1377	__fwritable;
1378	__fwriting;
1379	fwscanf;
1380	getloadavg;
1381	isaexec;
1382	mbrlen;
1383	mbrtowc;
1384	mbsinit;
1385	mbsrtowcs;
1386	pcsample;
1387	pthread_attr_getguardsize;
1388	pthread_attr_setguardsize;
1389	pthread_getconcurrency;
1390	pthread_mutexattr_gettype;
1391	pthread_mutexattr_settype;
1392	pthread_rwlockattr_destroy;
1393	pthread_rwlockattr_getpshared;
1394	pthread_rwlockattr_init;
1395	pthread_rwlockattr_setpshared;
1396	pthread_rwlock_destroy;
1397	pthread_rwlock_init;
1398	pthread_rwlock_rdlock;
1399	pthread_rwlock_tryrdlock;
1400	pthread_rwlock_trywrlock;
1401	pthread_rwlock_unlock;
1402	pthread_rwlock_wrlock;
1403	pthread_setconcurrency;
1404	swprintf;
1405	swscanf;
1406	__sysconf_xpg5;
1407	vfwprintf;
1408	vswprintf;
1409	vwprintf;
1410	wcrtomb;
1411	wcsrtombs;
1412	wcsstr;
1413	wctob;
1414	wmemchr;
1415	wmemcmp;
1416	wmemcpy;
1417	wmemmove;
1418	wmemset;
1419	wprintf;
1420	wscanf;
1421
1422$if _ELF32
1423	select_large_fdset;
1424$endif
1425} SUNW_1.17;
1426
1427# The empty versions SUNW_1.2 through SUNW_1.17 must be preserved because
1428# applications built on Solaris 2.6 Beta (when they did contain symbols)
1429# may depend on them.  All symbol content for SunOS 5.6 is now in SUNW_1.1
1430
1431SYMBOL_VERSION SUNW_1.17 {
1432    protected:
1433	SUNW_1.17;
1434} SUNW_1.16;
1435
1436SYMBOL_VERSION SUNW_1.16 {
1437    protected:
1438	SUNW_1.16;
1439} SUNW_1.15;
1440
1441SYMBOL_VERSION SUNW_1.15 {
1442    protected:
1443	SUNW_1.15;
1444} SUNW_1.14;
1445
1446SYMBOL_VERSION SUNW_1.14 {
1447    protected:
1448	SUNW_1.14;
1449} SUNW_1.13;
1450
1451SYMBOL_VERSION SUNW_1.13 {
1452    protected:
1453	SUNW_1.13;
1454} SUNW_1.12;
1455
1456SYMBOL_VERSION SUNW_1.12 {
1457    protected:
1458	SUNW_1.12;
1459} SUNW_1.11;
1460
1461SYMBOL_VERSION SUNW_1.11 {
1462    protected:
1463	SUNW_1.11;
1464} SUNW_1.10;
1465
1466SYMBOL_VERSION SUNW_1.10 {
1467    protected:
1468	SUNW_1.10;
1469} SUNW_1.9;
1470
1471SYMBOL_VERSION SUNW_1.9 {
1472    protected:
1473	SUNW_1.9;
1474} SUNW_1.8;
1475
1476SYMBOL_VERSION SUNW_1.8 {
1477    protected:
1478	SUNW_1.8;
1479} SUNW_1.7;
1480
1481SYMBOL_VERSION SUNW_1.7 {
1482    protected:
1483	SUNW_1.7;
1484} SUNW_1.6;
1485
1486SYMBOL_VERSION SUNW_1.6 {
1487    protected:
1488	SUNW_1.6;
1489} SUNW_1.5;
1490
1491SYMBOL_VERSION SUNW_1.5 {
1492    protected:
1493	SUNW_1.5;
1494} SUNW_1.4;
1495
1496SYMBOL_VERSION SUNW_1.4 {
1497    protected:
1498	SUNW_1.4;
1499} SUNW_1.3;
1500
1501SYMBOL_VERSION SUNW_1.3 {
1502    protected:
1503	SUNW_1.3;
1504} SUNW_1.2;
1505
1506SYMBOL_VERSION SUNW_1.2 {
1507    protected:
1508	SUNW_1.2;
1509} SUNW_1.1;
1510
1511SYMBOL_VERSION SUNW_1.1 {	# SunOS 5.6 (Solaris 2.6)
1512    global:
1513	__loc1		{
1514			  ASSERT = {
1515				  TYPE = OBJECT;
1516				  SIZE = addrsize;
1517				};
1518			};
1519    protected:
1520	basename;
1521	bindtextdomain;
1522	bsd_signal;
1523	dbm_clearerr;
1524	dbm_error;
1525	dcgettext;
1526	dgettext;
1527	directio;
1528	dirname;
1529	endusershell;
1530	_exithandle;
1531	fgetwc;
1532	fgetws;
1533	fpgetround;
1534	fpsetround;
1535	fputwc;
1536	fputws;
1537	fseeko;
1538	ftello;
1539	ftrylockfile;
1540	getexecname;
1541	_getexecname;
1542	getpassphrase;
1543	gettext;
1544	getusershell;
1545	getwc;
1546	getwchar;
1547	getws;
1548	isenglish;
1549	isideogram;
1550	isnumber;
1551	isphonogram;
1552	isspecial;
1553	iswalnum;
1554	iswalpha;
1555	iswcntrl;
1556	iswctype;
1557	iswdigit;
1558	iswgraph;
1559	iswlower;
1560	iswprint;
1561	iswpunct;
1562	iswspace;
1563	iswupper;
1564	iswxdigit;
1565	____loc1;
1566	_longjmp;
1567	_lwp_sema_trywait;
1568	ntp_adjtime;
1569	_ntp_adjtime;
1570	ntp_gettime;
1571	_ntp_gettime;
1572	__posix_asctime_r;
1573	__posix_ctime_r;
1574	__posix_getgrgid_r;
1575	__posix_getgrnam_r;
1576	__posix_getlogin_r;
1577	__posix_getpwnam_r;
1578	__posix_getpwuid_r;
1579	__posix_sigwait;
1580	__posix_ttyname_r;
1581	pset_assign;
1582	pset_bind;
1583	pset_create;
1584	pset_destroy;
1585	pset_info;
1586	pthread_atfork;
1587	pthread_attr_destroy;
1588	pthread_attr_getdetachstate;
1589	pthread_attr_getinheritsched;
1590	pthread_attr_getschedparam;
1591	pthread_attr_getschedpolicy;
1592	pthread_attr_getscope;
1593	pthread_attr_getstackaddr;
1594	pthread_attr_getstacksize;
1595	pthread_attr_init;
1596	pthread_attr_setdetachstate;
1597	pthread_attr_setinheritsched;
1598	pthread_attr_setschedparam;
1599	pthread_attr_setschedpolicy;
1600	pthread_attr_setscope;
1601	pthread_attr_setstackaddr;
1602	pthread_attr_setstacksize;
1603	pthread_cancel;
1604	__pthread_cleanup_pop;
1605	__pthread_cleanup_push;
1606	pthread_create;
1607	pthread_detach;
1608	pthread_equal;
1609	pthread_exit;
1610	pthread_getschedparam;
1611	pthread_getspecific;
1612	pthread_join;
1613	pthread_key_create;
1614	pthread_key_delete;
1615	pthread_kill;
1616	pthread_once;
1617	pthread_self;
1618	pthread_setcancelstate;
1619	pthread_setcanceltype;
1620	pthread_setschedparam;
1621	pthread_setspecific;
1622	pthread_sigmask;
1623	pthread_testcancel;
1624	putwc;
1625	putwchar;
1626	putws;
1627	regcmp;
1628	regex;
1629	resolvepath;
1630	_resolvepath;
1631	rwlock_destroy		{ FLAGS = NODYNSORT; };
1632	_rwlock_destroy		{ FLAGS = NODYNSORT; };
1633	sema_destroy;
1634	_sema_destroy;
1635	_setjmp;
1636	setusershell;
1637	siginterrupt;
1638	sigstack;
1639	snprintf;
1640	strtows;
1641	sync_instruction_memory;
1642	textdomain;
1643	thr_main;
1644	towctrans;
1645	towlower;
1646	towupper;
1647	ungetwc;
1648	vsnprintf;
1649	watoll;
1650	wcscat;
1651	wcschr;
1652	wcscmp;
1653	wcscoll;
1654	wcscpy;
1655	wcscspn;
1656	wcsftime;
1657	wcslen;
1658	wcsncat;
1659	wcsncmp;
1660	wcsncpy;
1661	wcspbrk;
1662	wcsrchr;
1663	wcsspn;
1664	wcstod;
1665	wcstok;
1666	wcstol;
1667	wcstoul;
1668	wcswcs;
1669	wcswidth;
1670	wcsxfrm;
1671	wctrans;
1672	wctype;
1673	wcwidth;
1674	wscasecmp;
1675	wscat;
1676	wschr;
1677	wscmp;
1678	wscol;
1679	wscoll;
1680	wscpy;
1681	wscspn;
1682	wsdup;
1683	wslen;
1684	wsncasecmp;
1685	wsncat;
1686	wsncmp;
1687	wsncpy;
1688	wspbrk;
1689	wsprintf;
1690	wsrchr;
1691	wsscanf;
1692	wsspn;
1693	wstod;
1694	wstok;
1695	wstol;
1696	wstoll;
1697	wstostr;
1698	wsxfrm;
1699	__xpg4_putmsg;
1700	__xpg4_putpmsg;
1701
1702$if lf64
1703	creat64;
1704	_creat64;
1705	fgetpos64;
1706	fopen64;
1707	freopen64;
1708	fseeko64;
1709	fsetpos64;
1710	fstat64;
1711	_fstat64;
1712	fstatvfs64;
1713	_fstatvfs64;
1714	ftello64;
1715	ftruncate64;
1716	_ftruncate64;
1717	ftw64;
1718	_ftw64;
1719	getdents64;
1720	_getdents64;
1721	getrlimit64;
1722	_getrlimit64;
1723	lockf64;
1724	_lockf64;
1725	lseek64;
1726	_lseek64;
1727	lstat64;
1728	_lstat64;
1729	mkstemp64;
1730	_mkstemp64;
1731	mmap64;
1732	_mmap64;
1733	nftw64;
1734	_nftw64;
1735	open64;
1736	_open64;
1737	__posix_readdir_r;
1738	pread64;
1739	_pread64;
1740	pwrite64;
1741	_pwrite64;
1742	readdir64;
1743	_readdir64;
1744	readdir64_r;
1745	_readdir64_r;
1746	setrlimit64;
1747	_setrlimit64;
1748	s_fcntl;
1749	_s_fcntl	{ FLAGS = NODYNSORT; };
1750	s_ioctl;
1751	stat64;
1752	_stat64;
1753	statvfs64;
1754	_statvfs64;
1755	tell64;
1756	_tell64;
1757	tmpfile64;
1758	truncate64;
1759	_truncate64;
1760	_xftw64;
1761$endif
1762
1763$if _sparc
1764	__flt_rounds;
1765$endif
1766} SUNW_0.9;
1767
1768SYMBOL_VERSION SUNW_0.9 {	# SunOS 5.5 (Solaris 2.5)
1769    protected:
1770	acl;
1771	bcmp;
1772	bcopy;
1773	bzero;
1774	facl;
1775	ftime;
1776	getdtablesize;
1777	gethostid;
1778	gethostname;
1779	getpagesize;
1780	getpriority;
1781	getrusage;
1782	getwd;
1783	index;
1784	initstate;
1785	killpg;
1786	_nsc_trydoorcall;
1787	pthread_condattr_destroy;
1788	pthread_condattr_getpshared;
1789	pthread_condattr_init;
1790	pthread_condattr_setpshared;
1791	pthread_cond_broadcast;
1792	pthread_cond_destroy;
1793	pthread_cond_init;
1794	pthread_cond_signal;
1795	pthread_cond_timedwait;
1796	pthread_cond_wait;
1797	pthread_mutexattr_destroy;
1798	pthread_mutexattr_getprioceiling;
1799	pthread_mutexattr_getprotocol;
1800	pthread_mutexattr_getpshared;
1801	pthread_mutexattr_init;
1802	pthread_mutexattr_setprioceiling;
1803	pthread_mutexattr_setprotocol;
1804	pthread_mutexattr_setpshared;
1805	pthread_mutex_destroy;
1806	pthread_mutex_getprioceiling;
1807	pthread_mutex_init;
1808	pthread_mutex_lock;
1809	pthread_mutex_setprioceiling;
1810	pthread_mutex_trylock;
1811	pthread_mutex_unlock;
1812	random;
1813	reboot;
1814	re_comp;
1815	re_exec;
1816	rindex;
1817	setbuffer;
1818	sethostname;
1819	setlinebuf;
1820	setpriority;
1821	setregid;
1822	setreuid;
1823	setstate;
1824	srandom;
1825	thr_min_stack;
1826	thr_stksegment;
1827	ualarm;
1828	usleep;
1829	wait3;
1830	wait4;
1831} SUNW_0.8;
1832
1833SYMBOL_VERSION SUNW_0.8 {	# SunOS 5.4 (Solaris 2.4)
1834    global:
1835	__xpg4		{
1836			  ASSERT = {
1837				  TYPE = OBJECT;
1838				  SIZE = 4;
1839				};
1840			  FLAGS = NODIRECT;
1841			};
1842    protected:
1843	addsev;
1844	cond_broadcast	{ FLAGS = NODYNSORT; };
1845	cond_destroy	{ FLAGS = NODYNSORT; };
1846	cond_init;
1847	cond_signal	{ FLAGS = NODYNSORT; };
1848	cond_timedwait;
1849	cond_wait;
1850	confstr;
1851	fnmatch;
1852	_getdate_err_addr;
1853	glob;
1854	globfree;
1855	iconv;
1856	iconv_close;
1857	iconv_open;
1858	lfmt;
1859	mutex_destroy	{ FLAGS = NODYNSORT; };
1860	mutex_init;
1861	mutex_lock	{ FLAGS = NODYNSORT; };
1862	mutex_trylock	{ FLAGS = NODYNSORT; };
1863	mutex_unlock	{ FLAGS = NODYNSORT; };
1864	pfmt;
1865	regcomp;
1866	regerror;
1867	regexec;
1868	regfree;
1869	rwlock_init;
1870	rw_rdlock	{ FLAGS = NODYNSORT; };
1871	rw_read_held;
1872	rw_tryrdlock	{ FLAGS = NODYNSORT; };
1873	rw_trywrlock	{ FLAGS = NODYNSORT; };
1874	rw_unlock	{ FLAGS = NODYNSORT; };
1875	rw_write_held;
1876	rw_wrlock	{ FLAGS = NODYNSORT; };
1877	sema_held;
1878	sema_init;
1879	sema_post;
1880	sema_trywait;
1881	sema_wait;
1882	setcat;
1883	sigfpe;
1884	strfmon;
1885	strptime;
1886	thr_continue;
1887	thr_create;
1888	thr_exit;
1889	thr_getconcurrency;
1890	thr_getprio;
1891	thr_getspecific;
1892	thr_join;
1893	thr_keycreate;
1894	thr_kill;
1895	thr_self	{ FLAGS = NODYNSORT; };
1896	thr_setconcurrency;
1897	thr_setprio;
1898	thr_setspecific;
1899	thr_sigsetmask;
1900	thr_suspend;
1901	thr_yield;
1902	vlfmt;
1903	vpfmt;
1904	wordexp;
1905	wordfree;
1906} SUNW_0.7;
1907
1908SYMBOL_VERSION SUNW_0.7 {	# SunOS 5.3 (Solaris 2.3)
1909    global:
1910	altzone			{
1911				  ASSERT = {
1912					  TYPE = OBJECT;
1913					  SIZE = addrsize;
1914					};
1915				};
1916	_ctype			{
1917				  ASSERT = {
1918					  BINDING = WEAK;
1919					  ALIAS = __ctype;
1920					};
1921				};
1922	isnanf			{ TYPE = FUNCTION; FILTER = libm.so.2; };
1923	lone			{ ASSERT = { TYPE = OBJECT; SIZE = 8; }; };
1924	lten			{ ASSERT = { TYPE = OBJECT; SIZE = 8; }; };
1925	lzero			{ ASSERT = { TYPE = OBJECT; SIZE = 8; }; };
1926	memalign		{ FLAGS = NODIRECT; };
1927	modff			{ TYPE = FUNCTION; FILTER = libm.so.2; };
1928	nss_default_finders	{
1929				  ASSERT = {
1930					  TYPE = OBJECT;
1931					  SIZE = addrsize;
1932					};
1933				};
1934	_sibuf			{
1935				  ASSERT = {
1936					  TYPE = OBJECT;
1937					  SIZE = 1032;
1938					};
1939				};
1940	_sobuf			{
1941				  ASSERT = {
1942					  TYPE = OBJECT;
1943					  SIZE = 1032;
1944					};
1945				};
1946	_sys_buslist		{
1947				  ASSERT = {
1948					  TYPE = OBJECT;
1949					  SIZE = addrsize[3];
1950					};
1951				};
1952	_sys_cldlist		{
1953				  ASSERT = {
1954					  TYPE = OBJECT;
1955					  SIZE = addrsize[6];
1956					};
1957				};
1958	_sys_fpelist		{
1959				  ASSERT = {
1960					  TYPE = OBJECT;
1961					  SIZE = addrsize[9];
1962					};
1963				};
1964	_sys_illlist		{
1965				  ASSERT = {
1966					  TYPE = OBJECT;
1967					  SIZE = addrsize[8];
1968					};
1969				};
1970	_sys_segvlist		{
1971				  ASSERT = {
1972					  TYPE = OBJECT;
1973					  SIZE = addrsize[2];
1974					};
1975				};
1976	_sys_siginfolistp	{
1977				  ASSERT = {
1978					  TYPE = OBJECT;
1979					  SIZE = addrsize;
1980					};
1981				};
1982	_sys_siglist		{
1983				  ASSERT = {
1984					  TYPE = OBJECT;
1985					  SIZE = addrsize[34];
1986					};
1987				};
1988	_sys_siglistn		{
1989				  ASSERT = {
1990					  TYPE = OBJECT;
1991					  SIZE = 4;
1992					};
1993				};
1994	_sys_siglistp		{
1995				  ASSERT = {
1996					  TYPE = OBJECT;
1997					  SIZE = addrsize;
1998					};
1999				};
2000	_sys_traplist		{
2001				  ASSERT = {
2002					  TYPE = OBJECT;
2003					  SIZE = addrsize[6];
2004					};
2005				};
2006	valloc			{ FLAGS = NODIRECT; };
2007
2008$if _ELF32
2009	_bufendtab		{
2010				  ASSERT = {
2011					  TYPE = OBJECT;
2012					  SIZE = 244;
2013					};
2014				};
2015	_lastbuf		{
2016				  ASSERT = {
2017					  TYPE = OBJECT;
2018					  SIZE = 4;
2019					};
2020				};
2021	sys_errlist		{
2022				  ASSERT = {
2023					  TYPE = OBJECT;
2024					  SIZE = 608;
2025					};
2026				};
2027	sys_nerr		{
2028				  ASSERT = {
2029					  BINDING = WEAK;
2030					  ALIAS = _sys_num_err;
2031					};
2032				};
2033	_sys_nsig		{
2034				  ASSERT = {
2035					  TYPE = OBJECT;
2036					  SIZE = 4;
2037					};
2038				};
2039$endif
2040
2041    protected:
2042	a64l;
2043	adjtime;
2044	ascftime;
2045	_assert;
2046	atoll;
2047	brk;
2048	__builtin_alloca;
2049	cftime;
2050	closelog;
2051	csetcol;
2052	csetlen;
2053	ctermid_r;
2054	dbm_close;
2055	dbm_delete;
2056	dbm_fetch;
2057	dbm_firstkey;
2058	dbm_nextkey;
2059	dbm_open;
2060	dbm_store;
2061	decimal_to_double;
2062	decimal_to_extended;
2063	decimal_to_quadruple;
2064	decimal_to_single;
2065	double_to_decimal;
2066	drand48;
2067	econvert;
2068	ecvt;
2069	endnetgrent;
2070	endspent;
2071	endutent;
2072	endutxent;
2073	erand48;
2074	euccol;
2075	euclen;
2076	eucscol;
2077	extended_to_decimal;
2078	fchroot;
2079	fconvert;
2080	fcvt;
2081	ffs;
2082	fgetspent;
2083	fgetspent_r;
2084	_filbuf;
2085	file_to_decimal;
2086	finite;
2087	_flsbuf;
2088	fork1			{ FLAGS = NODYNSORT; };
2089	fpclass;
2090	fpgetmask;
2091	fpgetsticky;
2092	fpsetmask;
2093	fpsetsticky;
2094	fstatfs;
2095	ftruncate;
2096	ftw;
2097	func_to_decimal;
2098	gconvert;
2099	gcvt;
2100	getdents;
2101	gethrtime;
2102	gethrvtime;
2103	getmntany;
2104	getmntent;
2105	getnetgrent;
2106	getnetgrent_r;
2107	getpw;
2108	getspent;
2109	getspent_r;
2110	getspnam;
2111	getspnam_r;
2112	getutent;
2113	getutid;
2114	getutline;
2115	getutmp;
2116	getutmpx;
2117	getutxent;
2118	getutxid;
2119	getutxline;
2120	getvfsany;
2121	getvfsent;
2122	getvfsfile;
2123	getvfsspec;
2124	getwidth;
2125	gsignal;
2126	hasmntopt;
2127	innetgr;
2128	insque;
2129	_insque;
2130	jrand48;
2131	l64a;
2132	ladd;
2133	lckpwdf;
2134	lcong48;
2135	ldivide;
2136	lexp10;
2137	llabs;
2138	lldiv;
2139	llog10;
2140	llseek;
2141	lltostr;
2142	lmul;
2143	lrand48;
2144	lshiftl;
2145	lsub;
2146	_lwp_cond_broadcast;
2147	_lwp_cond_signal;
2148	_lwp_cond_timedwait;
2149	_lwp_cond_wait;
2150	_lwp_continue;
2151	_lwp_info;
2152	_lwp_kill;
2153	_lwp_mutex_lock;
2154	_lwp_mutex_trylock;
2155	_lwp_mutex_unlock;
2156	_lwp_self;
2157	_lwp_sema_init;
2158	_lwp_sema_post;
2159	_lwp_sema_wait;
2160	_lwp_suspend;
2161	madvise;
2162	__major;
2163	__makedev;
2164	mincore;
2165	__minor;
2166	mkstemp;
2167	_mkstemp;
2168	mlockall;
2169	mrand48;
2170	munlockall;
2171	_mutex_held		{ FLAGS = NODYNSORT; };
2172	_mutex_lock		{ FLAGS = NODYNSORT; };
2173	nrand48;
2174	_nss_netdb_aliases;
2175	_nss_XbyY_buf_alloc;
2176	_nss_XbyY_buf_free;
2177	__nsw_extended_action;
2178	__nsw_freeconfig;
2179	__nsw_getconfig;
2180	openlog;
2181	plock;
2182	p_online;
2183	pread;
2184	__priocntl;
2185	__priocntlset;
2186	processor_bind;
2187	processor_info;
2188	psiginfo;
2189	psignal;
2190	putpwent;
2191	putspent;
2192	pututline;
2193	pututxline;
2194	pwrite;
2195	qeconvert;
2196	qecvt;
2197	qfconvert;
2198	qfcvt;
2199	qgconvert;
2200	qgcvt;
2201	quadruple_to_decimal;
2202	realpath;
2203	remque;
2204	_remque;
2205	_rw_read_held;
2206	_rw_write_held;
2207	seconvert;
2208	seed48;
2209	select;
2210	_sema_held;
2211	setegid;
2212	seteuid;
2213	setlogmask;
2214	setnetgrent;
2215	setspent;
2216	settimeofday;
2217	setutent;
2218	setutxent;
2219	sfconvert;
2220	sgconvert;
2221	sig2str;
2222	sigwait;
2223	single_to_decimal;
2224	srand48;
2225	ssignal;
2226	statfs;
2227	str2sig;
2228	strcasecmp;
2229	string_to_decimal;
2230	strncasecmp;
2231	strsignal;
2232	strtoll;
2233	strtoull;
2234	swapctl;
2235	_syscall;
2236	sysfs;
2237	syslog;
2238	_syslog;
2239	tmpnam_r;
2240	truncate;
2241	ttyslot;
2242	uadmin;
2243	ulckpwdf;
2244	ulltostr;
2245	unordered;
2246	updwtmp;
2247	updwtmpx;
2248	ustat;
2249	utimes;
2250	utmpname;
2251	utmpxname;
2252	vfork;
2253	vhangup;
2254	vsyslog;
2255	yield;
2256$if i386
2257	# Note: _syscall is also defined above.	 Here, we add the NODYNSORT
2258	# attribute to it.  On this platform, _syscall is an alias to syscall
2259	# If that is changed, this lines should be removed.
2260	_syscall	{ FLAGS = NODYNSORT; };
2261$endif
2262
2263	# The 32-bit sparc ABI requires SISCD_2.3. On other platforms, those symbols
2264	# go directly into SUNW_0.7.
2265$if sparc32
2266} SISCD_2.3;
2267
2268SYMBOL_VERSION SISCD_2.3 {
2269$endif
2270
2271    global:
2272	errno		{
2273			  ASSERT = {
2274				  TYPE = OBJECT;
2275				  SIZE = 4;
2276				};
2277			  FLAGS = NODIRECT;
2278			};
2279
2280$if _ELF64
2281	_iob		{ ASSERT = { TYPE = OBJECT; SIZE = 2560; }; };
2282$elif _ELF32
2283	_iob		{ ASSERT = { TYPE = OBJECT; SIZE = 960; }; };
2284$else
2285$error unknown ELFCLASS
2286$endif
2287
2288    protected:
2289	addseverity;
2290	_addseverity;
2291	asctime_r;
2292	crypt;
2293	_crypt;
2294	ctime_r;
2295	encrypt;
2296	_encrypt;
2297	endgrent;
2298	endpwent;
2299	___errno;
2300	fgetgrent;
2301	fgetgrent_r;
2302	fgetpwent;
2303	fgetpwent_r;
2304	flockfile;
2305	funlockfile;
2306	getchar_unlocked;
2307	getc_unlocked;
2308	getgrent;
2309	getgrent_r;
2310	getgrgid_r;
2311	getgrnam_r;
2312	getitimer;
2313	_getitimer;
2314	getlogin_r;
2315	getpwent;
2316	getpwent_r;
2317	getpwnam_r;
2318	getpwuid_r;
2319	gettimeofday;
2320	_gettimeofday;
2321	gmtime_r;
2322	localtime_r;
2323	putchar_unlocked;
2324	putc_unlocked;
2325	rand_r;
2326	readdir_r;
2327	setgrent;
2328	setitimer;
2329	_setitimer;
2330	setkey;
2331	_setkey;
2332	setpwent;
2333	strtok_r;
2334	sysinfo;
2335	_sysinfo;
2336	ttyname_r;
2337
2338$if _ELF32
2339	__div64;
2340	__mul64;
2341	__rem64;
2342	__udiv64;
2343	__urem64;
2344$endif
2345
2346$if sparc32
2347	__dtoll;
2348	__dtoull;
2349	__ftoll;
2350	__ftoull;
2351	_Q_lltoq;
2352	_Q_qtoll;
2353	_Q_qtoull;
2354	_Q_ulltoq;
2355	sbrk;
2356	_sbrk;
2357	__umul64	{ FLAGS = NODYNSORT; };	# Same address as __mul64
2358$endif
2359
2360	# On 32-bit platforms, the following symbols go into SYSVABI_1.3, but
2361	# on other platforms they go directly into the current version (which
2362	# will be either SUNW_0.7, or SISCD_2.3, depending on the similar
2363	# issue described above.
2364$if _ELF32
2365} SYSVABI_1.3;
2366
2367SYMBOL_VERSION SYSVABI_1.3 {
2368$endif
2369
2370    global:
2371	_altzone	{ ASSERT = { BINDING = WEAK; ALIAS = altzone; }; };
2372	calloc		{ FLAGS = NODIRECT; };
2373	__ctype		{
2374			  ASSERT = {
2375				  TYPE = OBJECT;
2376				  SIZE = 521;
2377				};
2378			};
2379	daylight	{ ASSERT = { TYPE = OBJECT; SIZE = 4; }; };
2380	_daylight	{ ASSERT = { BINDING = WEAK; ALIAS = daylight; }; };
2381	environ		{
2382			  ASSERT = {
2383				  BINDING = WEAK;
2384				  ALIAS = _environ;
2385				};
2386			  FLAGS = NODIRECT;
2387			};
2388	_environ	{
2389			  ASSERT = {
2390				  TYPE = OBJECT;
2391				  SIZE = addrsize;
2392				};
2393			  FLAGS = NODIRECT;
2394			};
2395	free		{ FLAGS = NODIRECT; };
2396	frexp		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2397	getdate_err	{ ASSERT = { TYPE = OBJECT; SIZE = 4; }; };
2398	_getdate_err	{
2399			  ASSERT = {
2400				  BINDING = WEAK;
2401				  ALIAS = getdate_err;
2402				};
2403			};
2404	getenv;
2405	__huge_val	{ ASSERT = { TYPE = OBJECT; SIZE = 8; }; };
2406	__iob		{ ASSERT = { BINDING = WEAK; ALIAS = _iob; }; };
2407	isnan		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2408	_isnan		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2409	isnand		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2410	_isnand		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2411	ldexp		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2412	logb		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2413	malloc		{ FLAGS = NODIRECT; };
2414	memcmp;
2415	memcpy;
2416	memmove;
2417	memset;
2418	modf		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2419	_modf		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2420	nextafter	{ TYPE = FUNCTION; FILTER = libm.so.2; };
2421	_nextafter	{ TYPE = FUNCTION; FILTER = libm.so.2; };
2422	_numeric	{ ASSERT = { TYPE = OBJECT; SIZE = 2; }; };
2423	optarg		{
2424			  ASSERT = {
2425				  TYPE = OBJECT;
2426				  SIZE = addrsize;
2427				};
2428			};
2429	opterr		{ ASSERT = { TYPE = OBJECT; SIZE = 4; }; };
2430	optind		{ ASSERT = { TYPE = OBJECT; SIZE = 4; }; };
2431	optopt		{ ASSERT = { TYPE = OBJECT; SIZE = 4; }; };
2432	realloc		{ FLAGS = NODIRECT; };
2433	scalb		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2434	_scalb		{ TYPE = FUNCTION; FILTER = libm.so.2; };
2435	timezone	{
2436			  ASSERT = {
2437				  TYPE = OBJECT;
2438				  SIZE = addrsize;
2439				};
2440			};
2441	_timezone	{ ASSERT = { BINDING = WEAK; ALIAS = timezone; }; };
2442	tzname		{
2443			  ASSERT = {
2444				  TYPE = OBJECT;
2445				  SIZE = addrsize[2];
2446				};
2447			};
2448	_tzname		{
2449			  ASSERT = {
2450				  BINDING = WEAK;
2451				  ALIAS = tzname;
2452				};
2453			};
2454$if i386
2455	_fp_hw		{ ASSERT = { TYPE = OBJECT; SIZE = 4; }; };
2456$endif
2457
2458    protected:
2459	abort;
2460	abs;
2461	access;
2462	_access;
2463	acct;
2464	_acct;
2465	alarm;
2466	_alarm;
2467	asctime;
2468	__assert;
2469	atexit;
2470	atof;
2471	atoi;
2472	atol;
2473	bsearch;
2474	catclose;
2475	_catclose;
2476	catgets;
2477	_catgets;
2478	catopen;
2479	_catopen;
2480	cfgetispeed;
2481	_cfgetispeed;
2482	cfgetospeed;
2483	_cfgetospeed;
2484	cfsetispeed;
2485	_cfsetispeed;
2486	cfsetospeed;
2487	_cfsetospeed;
2488	chdir;
2489	_chdir;
2490	chmod;
2491	_chmod;
2492	chown;
2493	_chown;
2494	chroot;
2495	_chroot;
2496	_cleanup;
2497	clearerr;
2498	clock;
2499	close;
2500	_close;
2501	closedir;
2502	_closedir;
2503	creat;
2504	_creat;
2505	ctermid;
2506	ctime;
2507	cuserid;
2508	_cuserid;
2509	difftime;
2510	div;
2511	dup;
2512	_dup;
2513	dup2;
2514	_dup2;
2515	execl;
2516	_execl;
2517	execle;
2518	_execle;
2519	execlp;
2520	_execlp;
2521	execv;
2522	_execv;
2523	execve;
2524	_execve;
2525	execvp;
2526	_execvp;
2527	exit;
2528	_exit;
2529	fattach;
2530	_fattach;
2531	fchdir;
2532	_fchdir;
2533	fchmod;
2534	_fchmod;
2535	fchown;
2536	_fchown;
2537	fclose;
2538	fcntl;
2539	_fcntl;
2540	fdetach;
2541	_fdetach;
2542	fdopen;
2543	_fdopen;
2544	feof;
2545	ferror;
2546	fflush;
2547	fgetc;
2548	fgetpos;
2549	fgets;
2550	__filbuf;
2551	fileno;
2552	_fileno;
2553	__flsbuf;
2554	fmtmsg;
2555	_fmtmsg;
2556	fopen;
2557	_fork;
2558	fork;
2559	fpathconf;
2560	_fpathconf;
2561	fprintf;
2562	fputc;
2563	fputs;
2564	fread;
2565	freopen;
2566	fscanf;
2567	fseek;
2568	fsetpos;
2569	fstat;
2570	_fstat;
2571	fstatvfs;
2572	_fstatvfs;
2573	fsync;
2574	_fsync;
2575	ftell;
2576	ftok;
2577	_ftok;
2578	fwrite;
2579	getc;
2580	getchar;
2581	getcontext;
2582	_getcontext;
2583	getcwd;
2584	_getcwd;
2585	getdate;
2586	_getdate;
2587	getegid;
2588	_getegid;
2589	geteuid;
2590	_geteuid;
2591	getgid;
2592	_getgid;
2593	getgrgid;
2594	getgrnam;
2595	getgroups;
2596	_getgroups;
2597	getlogin;
2598	getmsg;
2599	_getmsg;
2600	getopt;
2601	_getopt;
2602	getpass;
2603	_getpass;
2604	getpgid;
2605	_getpgid;
2606	getpgrp;
2607	_getpgrp;
2608	getpid;
2609	_getpid;
2610	getpmsg;
2611	_getpmsg;
2612	getppid;
2613	_getppid;
2614	getpwnam;
2615	getpwuid;
2616	getrlimit;
2617	_getrlimit;
2618	gets;
2619	getsid;
2620	_getsid;
2621	getsubopt;
2622	_getsubopt;
2623	gettxt;
2624	_gettxt;
2625	getuid;
2626	_getuid;
2627	getw;
2628	_getw;
2629	gmtime;
2630	grantpt;
2631	_grantpt;
2632	hcreate;
2633	_hcreate;
2634	hdestroy;
2635	_hdestroy;
2636	hsearch;
2637	_hsearch;
2638	initgroups;
2639	_initgroups;
2640	ioctl;
2641	_ioctl;
2642	isalnum;
2643	isalpha;
2644	isascii;
2645	_isascii;
2646	isastream;
2647	_isastream;
2648	isatty;
2649	_isatty;
2650	iscntrl;
2651	isdigit;
2652	isgraph;
2653	islower;
2654	isprint;
2655	ispunct;
2656	isspace;
2657	isupper;
2658	isxdigit;
2659	kill;
2660	_kill;
2661	labs;
2662	lchown;
2663	_lchown;
2664	ldiv;
2665	lfind;
2666	_lfind;
2667	link;
2668	_link;
2669	localeconv;
2670	localtime;
2671	lockf;
2672	_lockf;
2673	longjmp;
2674	lsearch;
2675	_lsearch;
2676	lseek;
2677	_lseek;
2678	lstat;
2679	_lstat;
2680	makecontext;
2681	_makecontext;
2682	mblen;
2683	mbstowcs;
2684	mbtowc;
2685	memccpy;
2686	_memccpy;
2687	memchr;
2688	memcntl;
2689	_memcntl;
2690	mkdir;
2691	_mkdir;
2692	mkfifo;
2693	_mkfifo;
2694	mknod;
2695	_mknod;
2696	mktemp;
2697	_mktemp;
2698	mktime;
2699	mlock;
2700	_mlock;
2701	mmap;
2702	_mmap;
2703	monitor;
2704	_monitor;
2705	mount;
2706	_mount;
2707	mprotect;
2708	_mprotect;
2709	msgctl;
2710	_msgctl;
2711	msgget;
2712	_msgget;
2713	msgrcv;
2714	_msgrcv;
2715	msgsnd;
2716	_msgsnd;
2717	msync;
2718	_msync;
2719	munlock;
2720	_munlock;
2721	munmap;
2722	_munmap;
2723	nftw;
2724	_nftw;
2725	nice;
2726	_nice;
2727	nl_langinfo;
2728	_nl_langinfo;
2729	open;
2730	_open;
2731	opendir;
2732	_opendir;
2733	pathconf;
2734	_pathconf;
2735	pause;
2736	_pause;
2737	pclose;
2738	_pclose;
2739	perror;
2740	pipe;
2741	_pipe;
2742	poll;
2743	_poll;
2744	popen;
2745	_popen;
2746	printf;
2747	profil;
2748	_profil;
2749	ptsname;
2750	_ptsname;
2751	putc;
2752	putchar;
2753	putenv;
2754	_putenv;
2755	putmsg;
2756	_putmsg;
2757	putpmsg;
2758	_putpmsg;
2759	puts;
2760	putw;
2761	_putw;
2762	qsort;
2763	raise;
2764	rand;
2765	read;
2766	_read;
2767	readdir;
2768	_readdir;
2769	readlink;
2770	_readlink;
2771	readv;
2772	_readv;
2773	remove;
2774	rename;
2775	_rename;
2776	rewind;
2777	rewinddir;
2778	_rewinddir;
2779	rmdir;
2780	_rmdir;
2781	scanf;
2782	seekdir;
2783	_seekdir;
2784	semctl;
2785	_semctl;
2786	semget;
2787	_semget;
2788	semop;
2789	_semop;
2790	setbuf;
2791	setcontext;
2792	_setcontext	{ FLAGS = NODYNSORT; };
2793	setgid;
2794	_setgid;
2795	setgroups;
2796	_setgroups;
2797	setjmp;
2798	setlabel;
2799	setlocale;
2800	setpgid;
2801	_setpgid;
2802	setpgrp;
2803	_setpgrp;
2804	setrlimit;
2805	_setrlimit;
2806	setsid;
2807	_setsid;
2808	setuid;
2809	_setuid;
2810	setvbuf;
2811	shmat;
2812	_shmat;
2813	shmctl;
2814	_shmctl;
2815	shmdt;
2816	_shmdt;
2817	shmget;
2818	_shmget;
2819	sigaction;
2820	_sigaction	{ FLAGS = NODYNSORT; };
2821	sigaddset;
2822	_sigaddset;
2823	sigaltstack;
2824	_sigaltstack;
2825	sigdelset;
2826	_sigdelset;
2827	sigemptyset;
2828	_sigemptyset;
2829	sigfillset;
2830	_sigfillset;
2831	sighold;
2832	_sighold;
2833	sigignore;
2834	_sigignore;
2835	sigismember;
2836	_sigismember;
2837	siglongjmp;
2838	_siglongjmp;
2839	signal;
2840	sigpause;
2841	_sigpause;
2842	sigpending;
2843	_sigpending;
2844	sigprocmask;
2845	_sigprocmask;
2846	sigrelse;
2847	_sigrelse;
2848	sigsend;
2849	_sigsend;
2850	sigsendset;
2851	_sigsendset;
2852	sigset;
2853	_sigset;
2854	sigsetjmp;
2855	_sigsetjmp	{ FLAGS = NODYNSORT; };
2856	sigsuspend;
2857	_sigsuspend;
2858	sleep;
2859	_sleep;
2860	sprintf;
2861	srand;
2862	sscanf;
2863	stat;
2864	_stat;
2865	statvfs;
2866	_statvfs;
2867	stime;
2868	_stime;
2869	strcat;
2870	strchr;
2871	strcmp;
2872	strcoll;
2873	strcpy;
2874	strcspn;
2875	strdup;
2876	_strdup;
2877	strerror;
2878	strftime;
2879	strlen;
2880	strncat;
2881	strncmp;
2882	strncpy;
2883	strpbrk;
2884	strrchr;
2885	strspn;
2886	strstr;
2887	strtod;
2888	strtok;
2889	strtol;
2890	strtoul;
2891	strxfrm;
2892	swab;
2893	_swab;
2894	swapcontext;
2895	_swapcontext;
2896	symlink;
2897	_symlink;
2898	sync;
2899	_sync;
2900	sysconf;
2901	_sysconf;
2902	system;
2903	tcdrain;
2904	_tcdrain;
2905	tcflow;
2906	_tcflow;
2907	tcflush;
2908	_tcflush;
2909	tcgetattr;
2910	_tcgetattr;
2911	tcgetpgrp;
2912	_tcgetpgrp;
2913	tcgetsid;
2914	_tcgetsid;
2915	tcsendbreak;
2916	_tcsendbreak;
2917	tcsetattr;
2918	_tcsetattr;
2919	tcsetpgrp;
2920	_tcsetpgrp;
2921	tdelete;
2922	_tdelete;
2923	tell;
2924	_tell;
2925	telldir;
2926	_telldir;
2927	tempnam;
2928	_tempnam;
2929	tfind;
2930	_tfind;
2931	time;
2932	_time;
2933	times;
2934	_times;
2935	tmpfile;
2936	tmpnam;
2937	toascii;
2938	_toascii;
2939	tolower;
2940	_tolower;
2941	toupper;
2942	_toupper;
2943	tsearch;
2944	_tsearch;
2945	ttyname;
2946	twalk;
2947	_twalk;
2948	tzset;
2949	_tzset;
2950	ulimit;
2951	_ulimit;
2952	umask;
2953	_umask;
2954	umount;
2955	_umount;
2956	uname;
2957	_uname;
2958	ungetc;
2959	unlink;
2960	_unlink;
2961	unlockpt;
2962	_unlockpt;
2963	utime;
2964	_utime;
2965	vfprintf;
2966	vprintf;
2967	vsprintf;
2968	wait;
2969	_wait;
2970	waitid;
2971	_waitid;
2972	waitpid;
2973	_waitpid;
2974	wcstombs;
2975	wctomb;
2976	write;
2977	_write;
2978	writev;
2979	_writev;
2980	_xftw;
2981
2982$if _ELF32
2983	ptrace;
2984	_ptrace;
2985$endif
2986
2987$if i386
2988	_fxstat;
2989	_lxstat;
2990	nuname;
2991	_nuname;
2992	_xmknod;
2993	_xstat;
2994$endif
2995
2996$if !sparc32
2997	sbrk;
2998$endif
2999
3000$if _sparc
3001	__dtou;
3002	__ftou;
3003$endif
3004
3005$if sparc32
3006	.div;
3007	.mul;
3008	.rem;
3009	.stret1;
3010	.stret2;
3011	.stret4;
3012	# .stret4 and .stret8 are the same thing
3013	.stret8		{ FLAGS = NODYNSORT; };
3014	.udiv;
3015	.umul;
3016	.urem;
3017	_Q_add;
3018	_Q_cmp;
3019	_Q_cmpe;
3020	_Q_div;
3021	_Q_dtoq;
3022	_Q_feq;
3023	_Q_fge;
3024	_Q_fgt;
3025	_Q_fle;
3026	_Q_flt;
3027	_Q_fne;
3028	_Q_itoq;
3029	_Q_mul;
3030	_Q_neg;
3031	_Q_qtod;
3032	_Q_qtoi;
3033	_Q_qtos;
3034	_Q_qtou;
3035	_Q_sqrt;
3036	_Q_stoq;
3037	_Q_sub;
3038	_Q_utoq;
3039$endif
3040
3041$if sparcv9
3042	# __align_cpy_1 is an alias for memcpy. Filter it out of
3043	# the .SUNW_dynsymsort section
3044	__align_cpy_1	{ FLAGS = NODYNSORT; };
3045	__align_cpy_16;
3046	__align_cpy_2;
3047	__align_cpy_4;
3048	# __align_cpy_8 is same as __align_cpy_16
3049	__align_cpy_8	{ FLAGS = NODYNSORT; };
3050	__dtoul;
3051	__ftoul;
3052	_Qp_add;
3053	_Qp_cmp;
3054	_Qp_cmpe;
3055	_Qp_div;
3056	_Qp_dtoq;
3057	_Qp_feq;
3058	_Qp_fge;
3059	_Qp_fgt;
3060	_Qp_fle;
3061	_Qp_flt;
3062	_Qp_fne;
3063	_Qp_itoq;
3064	_Qp_mul;
3065	_Qp_neg;
3066	_Qp_qtod;
3067	_Qp_qtoi;
3068	_Qp_qtos;
3069	_Qp_qtoui;
3070	_Qp_qtoux;
3071	_Qp_qtox;
3072	_Qp_sqrt;
3073	_Qp_stoq;
3074	_Qp_sub;
3075	_Qp_uitoq;
3076	_Qp_uxtoq;
3077	_Qp_xtoq;
3078	__sparc_utrap_install;
3079$endif
3080
3081	# On amd64, we also have SYSVABI_1.3, but it contains a small subset of
3082	# the symbols put in that version on other platforms.
3083$if amd64
3084} SYSVABI_1.3;
3085
3086SYMBOL_VERSION SYSVABI_1.3 {
3087$endif
3088    global:
3089$if !_sparc
3090	__flt_rounds	{ ASSERT = { TYPE = OBJECT; SIZE = 4; }; };
3091$endif
3092
3093    protected:
3094	_ctermid;
3095	_getgrgid;
3096	_getgrnam;
3097	_getlogin;
3098	_getpwnam;
3099	_getpwuid;
3100	_ttyname;
3101
3102$if !sparc32
3103	_sbrk;
3104$endif
3105
3106$if _x86
3107	_fpstart;
3108	__fpstart;
3109$endif
3110};
3111
3112
3113
3114# There should never be more than one SUNWprivate version.
3115# Don't add any more.  Add new private symbols to SUNWprivate_1.1
3116
3117SYMBOL_VERSION SUNWprivate_1.1 {
3118    global:
3119	___Argv			{
3120				  FLAGS = NODIRECT;
3121				  ASSERT = {
3122					  TYPE = OBJECT;
3123					  SIZE = addrsize;
3124					};
3125				};
3126	cfree			{ FLAGS = NODIRECT; };
3127	_cswidth		{
3128				  ASSERT = {
3129					  TYPE = OBJECT;
3130					  SIZE = 16;
3131					};
3132				};
3133	__ctype_mask		{
3134				  ASSERT = {
3135					  TYPE = OBJECT;
3136					  SIZE = addrsize;
3137					};
3138				};
3139	__environ_lock		{
3140				  FLAGS = NODIRECT;
3141				  ASSERT = {
3142					  TYPE = OBJECT;
3143					  SIZE = 24;
3144					};
3145				};
3146	__inf_read		{
3147				  ASSERT = {
3148					  TYPE = OBJECT;
3149					  SIZE = 4;
3150					};
3151				};
3152	__inf_written		{
3153				  ASSERT = {
3154					  TYPE = OBJECT;
3155					  SIZE = 4;
3156					};
3157				};
3158	__i_size		{
3159				  ASSERT = {
3160					  TYPE = OBJECT;
3161					  SIZE = 4;
3162					};
3163				};
3164	_isnanf			{
3165				  TYPE = FUNCTION;
3166				  FILTER = libm.so.2;
3167				};
3168	__iswrune;
3169	__libc_threaded		{
3170				  ASSERT = {
3171					  TYPE = OBJECT;
3172					  SIZE = 4;
3173					};
3174				};
3175	_lib_version		{
3176				  ASSERT = {
3177					  TYPE = OBJECT;
3178					  SIZE = 4;
3179					};
3180				  FLAGS = NODIRECT;
3181				};
3182	_logb			{
3183				  TYPE = FUNCTION;
3184				  FILTER = libm.so.2;
3185				};
3186	_lone			{
3187				  FLAGS = NODYNSORT;
3188				  ASSERT = {
3189					  BINDING = WEAK;
3190					  ALIAS = lone;
3191					};
3192				};
3193	_lten			{
3194				  FLAGS = NODYNSORT;
3195				  ASSERT = {
3196					  BINDING = WEAK;
3197					  ALIAS = lten;
3198					};
3199				};
3200	_lzero			{
3201				  FLAGS = NODYNSORT;
3202				  ASSERT = {
3203					  BINDING = WEAK;
3204					  ALIAS = lzero;
3205					};
3206				};
3207	__malloc_lock		{
3208				  ASSERT = {
3209					  TYPE = OBJECT;
3210					  SIZE = 24;
3211					};
3212				};
3213	_memcmp;
3214	_memcpy			{ FLAGS = NODYNSORT; };
3215	_memmove;
3216	_memset;
3217	_modff			{
3218				  TYPE = FUNCTION;
3219				  FILTER = libm.so.2;
3220				};
3221	__nan_read		{
3222				  ASSERT = {
3223					  TYPE = OBJECT;
3224					  SIZE = 4;
3225					};
3226				};
3227	__nan_written		{
3228				  ASSERT = {
3229					  TYPE = OBJECT;
3230					  SIZE = 4;
3231					};
3232				};
3233	__nextwctype;
3234	__nis_debug_bind	{
3235				  ASSERT = {
3236					  TYPE = OBJECT;
3237					  SIZE = 4;
3238					};
3239				};
3240	__nis_debug_calls	{
3241				  ASSERT = {
3242					  TYPE = OBJECT;
3243					  SIZE = 4;
3244					};
3245				};
3246	__nis_debug_file	{
3247				  ASSERT = {
3248					  TYPE = OBJECT;
3249					  SIZE = addrsize;
3250					};
3251				};
3252	__nis_debug_rpc		{
3253				  ASSERT = {
3254					  TYPE = OBJECT;
3255					  SIZE = 4;
3256					};
3257				};
3258	__nis_prefsrv		{
3259				  ASSERT = {
3260					  TYPE = OBJECT;
3261					  SIZE = addrsize;
3262					};
3263				};
3264	__nis_preftype		{
3265				  ASSERT = {
3266					  TYPE = OBJECT;
3267					  SIZE = addrsize;
3268					};
3269				};
3270	__nis_server		{
3271				  ASSERT = {
3272					  TYPE = OBJECT;
3273					  SIZE = addrsize;
3274					};
3275				};
3276	_nss_default_finders	{
3277				  ASSERT = {
3278					  BINDING = WEAK;
3279					  ALIAS = nss_default_finders;
3280					};
3281				};
3282	__progname		{
3283				  ASSERT = {
3284					  TYPE = OBJECT;
3285					  SIZE = addrsize;
3286					};
3287				  FLAGS = NODIRECT;
3288				};
3289
3290$if _ELF64
3291	_smbuf			{
3292				  ASSERT = {
3293					  TYPE = OBJECT;
3294					  SIZE = 168;
3295					};
3296				};
3297$elif _ELF32
3298	_smbuf			{
3299				  ASSERT = {
3300					  TYPE = OBJECT;
3301					  SIZE = 488;
3302					};
3303				};
3304$else
3305$error unknown ELFCLASS
3306$endif
3307	_sp			{
3308				  ASSERT = {
3309					  TYPE = OBJECT;
3310					  SIZE = 4;
3311					};
3312				};
3313	__strdupa_str		{
3314				  ASSERT = {
3315					  TYPE = TLS;
3316					  SIZE = addrsize;
3317					};
3318				  FLAGS = NODIRECT;
3319				};
3320	__strdupa_len		{
3321				  ASSERT = {
3322					  TYPE = TLS;
3323					  SIZE = addrsize;
3324					};
3325				  FLAGS = NODIRECT;
3326				};
3327	_tdb_bootstrap		{
3328				  ASSERT = {
3329					  BINDING = WEAK;
3330					  ALIAS = __tdb_bootstrap;
3331					};
3332				};
3333	__threaded		{
3334				  ASSERT = {
3335					  TYPE = OBJECT;
3336					  SIZE = 4;
3337					};
3338				};
3339	thr_probe_getfunc_addr	{
3340				  ASSERT = {
3341					  TYPE = OBJECT;
3342					  SIZE = addrsize;
3343					};
3344				};
3345	__trans_lower		{
3346				  ASSERT = {
3347					  TYPE = OBJECT;
3348					  SIZE = addrsize;
3349					};
3350				};
3351	__trans_upper		{
3352				  ASSERT = {
3353					  TYPE = OBJECT;
3354					  SIZE = addrsize;
3355					};
3356				};
3357	_uberdata		{
3358				  ASSERT = {
3359					  BINDING = WEAK;
3360					  ALIAS = __uberdata;
3361					};
3362				};
3363	__xpg6			{
3364				  ASSERT = {
3365					  TYPE = OBJECT;
3366					  SIZE = 4;
3367					};
3368				  FLAGS = NODIRECT;
3369				};
3370
3371$if _ELF32
3372	_dladdr			{
3373				  TYPE = FUNCTION;
3374				  FILTER = /usr/lib/ld.so.1;
3375				};
3376	_dladdr1		{
3377				  TYPE = FUNCTION;
3378				  FILTER = /usr/lib/ld.so.1;
3379				};
3380	_dlclose		{
3381				  TYPE = FUNCTION;
3382				  FILTER = /usr/lib/ld.so.1;
3383				};
3384	_dldump			{
3385				  TYPE = FUNCTION;
3386				  FILTER = /usr/lib/ld.so.1;
3387				};
3388	_dlerror		{
3389				  TYPE = FUNCTION;
3390				  FILTER = /usr/lib/ld.so.1;
3391				};
3392	_dlinfo			{
3393				  TYPE = FUNCTION;
3394				  FILTER = /usr/lib/ld.so.1;
3395				};
3396	_dlmopen		{
3397				  TYPE = FUNCTION;
3398				  FILTER = /usr/lib/ld.so.1;
3399				};
3400	_dlopen			{
3401				  TYPE = FUNCTION;
3402				  FILTER = /usr/lib/ld.so.1;
3403				};
3404	_dlsym			{
3405				  TYPE = FUNCTION;
3406				  FILTER = /usr/lib/ld.so.1;
3407				};
3408	_ld_libc		{
3409				  TYPE = FUNCTION;
3410				  FILTER = /usr/lib/ld.so.1;
3411				};
3412	_sys_errlist		{
3413				  ASSERT = {
3414					  BINDING = WEAK;
3415					  ALIAS = sys_errlist;
3416					};
3417				};
3418	_sys_errs		{
3419				  ASSERT = {
3420					  TYPE = OBJECT;
3421					  SIZE = 3216;
3422					};
3423				};
3424	_sys_index		{
3425				  ASSERT = {
3426					  TYPE = OBJECT;
3427					  SIZE = 608;
3428					};
3429				};
3430	_sys_nerr		{
3431				  FLAGS = NODYNSORT;
3432				  ASSERT = {
3433					  BINDING = WEAK;
3434					  ALIAS = _sys_num_err;
3435					};
3436				};
3437	_sys_num_err		{
3438				  ASSERT = {
3439					  TYPE = OBJECT;
3440					  SIZE = 4;
3441					};
3442				};
3443$elif sparcv9
3444	_dladdr			{
3445				  TYPE = FUNCTION;
3446				  FILTER = /usr/lib/sparcv9/ld.so.1;
3447				};
3448	_dladdr1		{
3449				  TYPE = FUNCTION;
3450				  FILTER = /usr/lib/sparcv9/ld.so.1;
3451				};
3452	_dlclose		{
3453				  TYPE = FUNCTION;
3454				  FILTER = /usr/lib/sparcv9/ld.so.1;
3455				};
3456	_dldump			{
3457				  TYPE = FUNCTION;
3458				  FILTER = /usr/lib/sparcv9/ld.so.1;
3459				};
3460	_dlerror		{
3461				  TYPE = FUNCTION;
3462				  FILTER = /usr/lib/sparcv9/ld.so.1;
3463				};
3464	_dlinfo			{
3465				  TYPE = FUNCTION;
3466				  FILTER = /usr/lib/sparcv9/ld.so.1;
3467				};
3468	_dlmopen		{
3469				  TYPE = FUNCTION;
3470				  FILTER = /usr/lib/sparcv9/ld.so.1;
3471				};
3472	_dlopen			{
3473				  TYPE = FUNCTION;
3474				  FILTER = /usr/lib/sparcv9/ld.so.1;
3475				};
3476	_dlsym			{
3477				  TYPE = FUNCTION;
3478				  FILTER = /usr/lib/sparcv9/ld.so.1;
3479				};
3480	_ld_libc		{
3481				  TYPE = FUNCTION;
3482				  FILTER = /usr/lib/sparcv9/ld.so.1;
3483				};
3484$elif amd64
3485	_dladdr			{
3486				  TYPE = FUNCTION;
3487				  FILTER = /usr/lib/amd64/ld.so.1;
3488				};
3489	_dladdr1		{
3490				  TYPE = FUNCTION;
3491				  FILTER = /usr/lib/amd64/ld.so.1;
3492				};
3493	_dlamd64getunwind	{
3494				  TYPE = FUNCTION;
3495				  FILTER = /usr/lib/amd64/ld.so.1;
3496				};
3497	_dlclose		{
3498				  TYPE = FUNCTION;
3499				  FILTER = /usr/lib/amd64/ld.so.1;
3500				};
3501	_dldump			{
3502				  TYPE = FUNCTION;
3503				  FILTER = /usr/lib/amd64/ld.so.1;
3504				};
3505	_dlerror		{
3506				  TYPE = FUNCTION;
3507				  FILTER = /usr/lib/amd64/ld.so.1;
3508				};
3509	_dlinfo			{
3510				  TYPE = FUNCTION;
3511				  FILTER = /usr/lib/amd64/ld.so.1;
3512				};
3513	_dlmopen		{
3514				  TYPE = FUNCTION;
3515				  FILTER = /usr/lib/amd64/ld.so.1;
3516				};
3517	_dlopen			{
3518				  TYPE = FUNCTION;
3519				  FILTER = /usr/lib/amd64/ld.so.1;
3520				};
3521	_dlsym			{
3522				  TYPE = FUNCTION;
3523				  FILTER = /usr/lib/amd64/ld.so.1;
3524				};
3525	_ld_libc		{
3526				  TYPE = FUNCTION;
3527				  FILTER = /usr/lib/amd64/ld.so.1;
3528				};
3529$else
3530$error unknown platform
3531$endif
3532
3533$if _sparc
3534	__lyday_to_month;
3535	__mon_lengths;
3536	__yday_to_month;
3537$endif
3538$if i386
3539	_sse_hw			{
3540				  ASSERT = {
3541					  TYPE = OBJECT;
3542					  SIZE = 4;
3543					};
3544				};
3545$endif
3546
3547    protected:
3548	acctctl;
3549	allocids;
3550	_assert_c99;
3551	__assert_c99;
3552	_assfail;
3553	attr_count;
3554	attr_to_data_type;
3555	attr_to_name;
3556	attr_to_option;
3557	attr_to_xattr_view;
3558	_autofssys;
3559	_bufsync;
3560	_cladm;
3561	__class_quadruple;
3562	core_get_default_content;
3563	core_get_default_path;
3564	core_get_global_content;
3565	core_get_global_path;
3566	core_get_options;
3567	core_get_process_content;
3568	core_get_process_path;
3569	core_set_default_content;
3570	core_set_default_path;
3571	core_set_global_content;
3572	core_set_global_path;
3573	core_set_options;
3574	core_set_process_content;
3575	core_set_process_path;
3576	dbm_close_status;
3577	dbm_do_nextkey;
3578	dbm_setdefwrite;
3579	_D_cplx_div;
3580	_D_cplx_div_ix;
3581	_D_cplx_div_rx;
3582	_D_cplx_mul;
3583	defclose_r;
3584	defcntl;
3585	defcntl_r;
3586	defopen;
3587	defopen_r;
3588	defread;
3589	defread_r;
3590	_delete;
3591	_dgettext;
3592	_doprnt;
3593	_doscan;
3594	_errfp;
3595	_errxfp;
3596	exportfs;
3597	_F_cplx_div;
3598	_F_cplx_div_ix;
3599	_F_cplx_div_rx;
3600	_F_cplx_mul;
3601	__fgetwc_xpg5;
3602	__fgetws_xpg5;
3603	_findbuf;
3604	_findiop;
3605	__fini_daemon_priv;
3606	_finite;
3607	_fork1			{ FLAGS = NODYNSORT; };
3608	_forkall		{ FLAGS = NODYNSORT; };
3609	_fpclass;
3610	_fpgetmask;
3611	_fpgetround;
3612	_fpgetsticky;
3613	_fprintf;
3614	_fpsetmask;
3615	_fpsetround;
3616	_fpsetsticky;
3617	__fputwc_xpg5;
3618	__fputws_xpg5;
3619	_ftw;
3620	_gcvt;
3621	_getarg;
3622	__getcontext;
3623	_getdents;
3624	_get_exit_frame_monitor;
3625	_getfp;
3626	_getgroupsbymember;
3627	_getlogin_r;
3628	_getsp;
3629	__gettsp;
3630	getvmusage;
3631	__getwchar_xpg5;
3632	__getwc_xpg5;
3633	gtty;
3634	__idmap_flush_kcache;
3635	__idmap_reg;
3636	__idmap_unreg;
3637	__init_daemon_priv;
3638	__init_suid_priv;
3639	_insert;
3640	inst_sync;
3641	_iswctype;
3642	klpd_create;
3643	klpd_getpath;
3644	klpd_getport;
3645	klpd_getucred;
3646	klpd_register;
3647	klpd_register_id;
3648	klpd_unregister;
3649	klpd_unregister_id;
3650	_lgrp_home_fast		{ FLAGS = NODYNSORT; };
3651	_lgrpsys;
3652	_lltostr;
3653	_lock_clear;
3654	_lock_try;
3655	_ltzset;
3656	lwp_self;
3657	makeut;
3658	makeutx;
3659	_mbftowc;
3660	mcfiller;
3661	mntopt;
3662	modctl;
3663	modutx;
3664	msgctl64;
3665	__multi_innetgr;
3666	_mutex_destroy		{ FLAGS = NODYNSORT; };
3667	mutex_enter;
3668	mutex_exit;
3669	mutex_held;
3670	_mutex_init		{ FLAGS = NODYNSORT; };
3671	_mutex_unlock		{ FLAGS = NODYNSORT; };
3672	name_to_attr;
3673	nfs_getfh;
3674	nfssvc;
3675	_nfssys;
3676	__nis_get_environment;
3677	_nss_db_state_destr;
3678	nss_default_key2str;
3679	nss_delete;
3680	nss_endent;
3681	nss_getent;
3682	_nss_initf_group;
3683	_nss_initf_netgroup;
3684	_nss_initf_passwd;
3685	_nss_initf_shadow;
3686	nss_packed_arg_init;
3687	nss_packed_context_init;
3688	nss_packed_getkey;
3689	nss_packed_set_status;
3690	nss_search;
3691	nss_setent;
3692	_nss_XbyY_fgets;
3693	_nss_XbyY_fini;
3694	__nsw_extended_action_v1;
3695	__nsw_freeconfig_v1;
3696	__nsw_getconfig_v1;
3697	__nthreads;
3698	__openattrdirat;
3699	option_to_attr;
3700	__priv_bracket;
3701	__priv_relinquish;
3702	psecflags;
3703	pset_assign_forced;
3704	pset_bind_lwp;
3705	_psignal;
3706	pthread_attr_getdaemonstate_np;
3707	pthread_attr_setdaemonstate_np;
3708	_pthread_setcleanupinit;
3709	__putwchar_xpg5;
3710	__putwc_xpg5;
3711	rctlctl;
3712	rctllist;
3713	_realbufend;
3714	_resume;
3715	_resume_ret;
3716	_rpcsys;
3717	_sbrk_grow_aligned;
3718	scrwidth;
3719	secflag_by_name;
3720	secflag_clear;
3721	secflags_copy;
3722	secflags_difference;
3723	secflags_fullset;
3724	secflags_intersection;
3725	secflags_isempty;
3726	secflag_isset;
3727	secflags_issubset;
3728	secflags_issuperset;
3729	secflag_set;
3730	secflag_to_bit;
3731	secflag_to_str;
3732	secflags_union;
3733	psecflags_validate_delta;
3734	secflags_zero;
3735	psecflags_default;
3736	secflags_parse;
3737	secflags_to_str;
3738	psecflags_validate;
3739	semctl64;
3740	_semctl64;
3741	set_setcontext_enforcement;
3742	_setbufend;
3743	__set_errno;
3744	setprojrctl;
3745	_setregid;
3746	_setreuid;
3747	setsigacthandler;
3748	shmctl64;
3749	_shmctl64;
3750	sigflag;
3751	_signal;
3752	_sigoff;
3753	_sigon;
3754	_so_accept;
3755	_so_bind;
3756	_sockconfig;
3757	_so_connect;
3758	_so_getpeername;
3759	_so_getsockname;
3760	_so_getsockopt;
3761	_so_listen;
3762	_so_recv;
3763	_so_recvfrom;
3764	_so_recvmsg;
3765	_so_send;
3766	_so_sendmsg;
3767	_so_sendto;
3768	_so_setsockopt;
3769	_so_shutdown;
3770	_so_socket;
3771	_so_socketpair;
3772	str2group;
3773	str2passwd;
3774	str2spwd;
3775	__strptime_dontzero;
3776	stty;
3777	syscall;
3778	_sysconfig;
3779	__systemcall;
3780	thr_continue_allmutators;
3781	_thr_continue_allmutators;
3782	thr_continue_mutator;
3783	_thr_continue_mutator;
3784	thr_getstate;
3785	_thr_getstate;
3786	thr_mutators_barrier;
3787	_thr_mutators_barrier;
3788	thr_probe_setup;
3789	_thr_schedctl;
3790	thr_setmutator;
3791	_thr_setmutator;
3792	thr_setstate;
3793	_thr_setstate;
3794	thr_sighndlrinfo;
3795	_thr_sighndlrinfo;
3796	_thr_slot_offset;
3797	thr_suspend_allmutators;
3798	_thr_suspend_allmutators;
3799	thr_suspend_mutator;
3800	_thr_suspend_mutator;
3801	thr_wait_mutator;
3802	_thr_wait_mutator;
3803	__tls_get_addr;
3804	_tmem_get_base;
3805	_tmem_get_nentries;
3806	_tmem_set_cleanup;
3807	tpool_create;
3808	tpool_dispatch;
3809	tpool_destroy;
3810	tpool_wait;
3811	tpool_suspend;
3812	tpool_suspended;
3813	tpool_resume;
3814	tpool_member;
3815	_ttyname_dev;
3816	_ucred_alloc;
3817	ucred_getamask;
3818	_ucred_getamask;
3819	ucred_getasid;
3820	_ucred_getasid;
3821	ucred_getatid;
3822	_ucred_getatid;
3823	ucred_getauid;
3824	_ucred_getauid;
3825	_ulltostr;
3826	_uncached_getgrgid_r;
3827	_uncached_getgrnam_r;
3828	_uncached_getpwnam_r;
3829	_uncached_getpwuid_r;
3830	__ungetwc_xpg5;
3831	_unordered;
3832	utssys;
3833	_verrfp;
3834	_verrxfp;
3835	_vwarnfp;
3836	_vwarnxfp;
3837	_warnfp;
3838	_warnxfp;
3839	__wcsftime_xpg5;
3840	__wcstok_xpg5;
3841	wdbindf;
3842	wdchkind;
3843	wddelim;
3844	_wrtchk;
3845	_xflsbuf;
3846	_xgetwidth;
3847	zone_add_datalink;
3848	zone_boot;
3849	zone_check_datalink;
3850	zone_create;
3851	zone_destroy;
3852	zone_enter;
3853	zone_getattr;
3854	zone_get_id;
3855	zone_list;
3856	zone_list_datalink;
3857	zonept;
3858	zone_remove_datalink;
3859	zone_setattr;
3860	zone_shutdown;
3861	zone_version;
3862
3863$if _ELF32
3864	__divdi3;
3865	_file_set;
3866	_fprintf_c89;
3867	_fscanf_c89;
3868	_fwprintf_c89;
3869	_fwscanf_c89;
3870	_imaxabs_c89;
3871	_imaxdiv_c89;
3872	__moddi3;
3873	_printf_c89;
3874	_scanf_c89;
3875	_snprintf_c89;
3876	_sprintf_c89;
3877	_sscanf_c89;
3878	_strtoimax_c89;
3879	_strtoumax_c89;
3880	_swprintf_c89;
3881	_swscanf_c89;
3882	__udivdi3;
3883	__umoddi3;
3884	_vfprintf_c89;
3885	_vfscanf_c89;
3886	_vfwprintf_c89;
3887	_vfwscanf_c89;
3888	_vprintf_c89;
3889	_vscanf_c89;
3890	_vsnprintf_c89;
3891	_vsprintf_c89;
3892	_vsscanf_c89;
3893	_vswprintf_c89;
3894	_vswscanf_c89;
3895	_vwprintf_c89;
3896	_vwscanf_c89;
3897	_wcstoimax_c89;
3898	_wcstoumax_c89;
3899	_wprintf_c89;
3900	_wscanf_c89;
3901$endif
3902
3903$if _sparc
3904	_cerror;
3905	install_utrap;
3906	_install_utrap;
3907	nop;
3908	_Q_cplx_div;
3909	_Q_cplx_div_ix;
3910	_Q_cplx_div_rx;
3911	_Q_cplx_lr_div;
3912	_Q_cplx_lr_div_ix;
3913	_Q_cplx_lr_div_rx;
3914	_Q_cplx_lr_mul;
3915	_Q_cplx_mul;
3916	_QgetRD;
3917	_xregs_clrptr;
3918$endif
3919
3920$if sparc32
3921	__ashldi3;
3922	__ashrdi3;
3923	_cerror64;
3924	__cmpdi2;
3925	__floatdidf;
3926	__floatdisf;
3927	__floatundidf;
3928	__floatundisf;
3929	__lshrdi3;
3930	__muldi3;
3931	__ucmpdi2;
3932$endif
3933
3934$if sparcv9
3935	__multi3;
3936$endif
3937
3938$if _x86
3939	_D_cplx_lr_div;
3940	_D_cplx_lr_div_ix;
3941	_D_cplx_lr_div_rx;
3942	_F_cplx_lr_div;
3943	_F_cplx_lr_div_ix;
3944	_F_cplx_lr_div_rx;
3945	__fltrounds;
3946	sysi86;
3947	_sysi86;
3948	_X_cplx_div;
3949	_X_cplx_div_ix;
3950	_X_cplx_div_rx;
3951	_X_cplx_lr_div;
3952	_X_cplx_lr_div_ix;
3953	_X_cplx_lr_div_rx;
3954	_X_cplx_mul;
3955	__xgetRD;
3956	__xtol;
3957	__xtoll;
3958	__xtoul;
3959	__xtoull;
3960$endif
3961
3962$if i386
3963	__divrem64;
3964	___tls_get_addr;
3965	__udivrem64;
3966$endif
3967
3968	# The following functions should not be exported from libc,
3969	# but /lib/libm.so.2, some older versions of the Studio
3970	# compiler/debugger components, and some ancient programs
3971	# found in /usr/dist reference them.  When we no longer
3972	# care about these old and broken binary objects, these
3973	# symbols should be deleted.
3974	_brk					{ FLAGS = NODYNSORT; };
3975	_cond_broadcast				{ FLAGS = NODYNSORT; };
3976	_cond_init				{ FLAGS = NODYNSORT; };
3977	_cond_signal				{ FLAGS = NODYNSORT; };
3978	_cond_wait				{ FLAGS = NODYNSORT; };
3979	_ecvt					{ FLAGS = NODYNSORT; };
3980	_fcvt					{ FLAGS = NODYNSORT; };
3981	_getc_unlocked				{ FLAGS = NODYNSORT; };
3982	_llseek					{ FLAGS = NODYNSORT; };
3983	_pthread_attr_getdetachstate		{ FLAGS = NODYNSORT; };
3984	_pthread_attr_getinheritsched		{ FLAGS = NODYNSORT; };
3985	_pthread_attr_getschedparam		{ FLAGS = NODYNSORT; };
3986	_pthread_attr_getschedpolicy		{ FLAGS = NODYNSORT; };
3987	_pthread_attr_getscope			{ FLAGS = NODYNSORT; };
3988	_pthread_attr_getstackaddr		{ FLAGS = NODYNSORT; };
3989	_pthread_attr_getstacksize		{ FLAGS = NODYNSORT; };
3990	_pthread_attr_init			{ FLAGS = NODYNSORT; };
3991	_pthread_condattr_getpshared		{ FLAGS = NODYNSORT; };
3992	_pthread_condattr_init			{ FLAGS = NODYNSORT; };
3993	_pthread_cond_init			{ FLAGS = NODYNSORT; };
3994	_pthread_create				{ FLAGS = NODYNSORT; };
3995	_pthread_getschedparam			{ FLAGS = NODYNSORT; };
3996	_pthread_join				{ FLAGS = NODYNSORT; };
3997	_pthread_key_create			{ FLAGS = NODYNSORT; };
3998	_pthread_mutexattr_getprioceiling	{ FLAGS = NODYNSORT; };
3999	_pthread_mutexattr_getprotocol		{ FLAGS = NODYNSORT; };
4000	_pthread_mutexattr_getpshared		{ FLAGS = NODYNSORT; };
4001	_pthread_mutexattr_init			{ FLAGS = NODYNSORT; };
4002	_pthread_mutex_getprioceiling		{ FLAGS = NODYNSORT; };
4003	_pthread_mutex_init			{ FLAGS = NODYNSORT; };
4004	_pthread_sigmask			{ FLAGS = NODYNSORT; };
4005	_rwlock_init				{ FLAGS = NODYNSORT; };
4006	_rw_rdlock				{ FLAGS = NODYNSORT; };
4007	_rw_unlock				{ FLAGS = NODYNSORT; };
4008	_rw_wrlock				{ FLAGS = NODYNSORT; };
4009	_sbrk_unlocked				{ FLAGS = NODYNSORT; };
4010	_select					{ FLAGS = NODYNSORT; };
4011	_sema_init				{ FLAGS = NODYNSORT; };
4012	_sema_post				{ FLAGS = NODYNSORT; };
4013	_sema_trywait				{ FLAGS = NODYNSORT; };
4014	_sema_wait				{ FLAGS = NODYNSORT; };
4015	_sysfs					{ FLAGS = NODYNSORT; };
4016	_thr_create				{ FLAGS = NODYNSORT; };
4017	_thr_exit				{ FLAGS = NODYNSORT; };
4018	_thr_getprio				{ FLAGS = NODYNSORT; };
4019	_thr_getspecific			{ FLAGS = NODYNSORT; };
4020	_thr_join				{ FLAGS = NODYNSORT; };
4021	_thr_keycreate				{ FLAGS = NODYNSORT; };
4022	_thr_kill				{ FLAGS = NODYNSORT; };
4023	_thr_main				{ FLAGS = NODYNSORT; };
4024	_thr_self				{ FLAGS = NODYNSORT; };
4025	_thr_setspecific			{ FLAGS = NODYNSORT; };
4026	_thr_sigsetmask				{ FLAGS = NODYNSORT; };
4027	_thr_stksegment				{ FLAGS = NODYNSORT; };
4028	_ungetc_unlocked			{ FLAGS = NODYNSORT; };
4029
4030    local:
4031	_ti_thr_self				{ FLAGS = NODYNSORT; };
4032	__imax_lldiv				{ FLAGS = NODYNSORT; };
4033
4034	*;
4035$if lf64
4036	_seekdir64		{ FLAGS = NODYNSORT; };
4037	_telldir64		{ FLAGS = NODYNSORT; };
4038$endif
4039
4040$if _sparc
4041	__cerror		{ FLAGS = NODYNSORT; };
4042$endif
4043
4044$if sparc32
4045	__cerror64		{ FLAGS = NODYNSORT; };
4046$endif
4047
4048$if sparcv9
4049	__cleanup		{ FLAGS = NODYNSORT; };
4050$endif
4051
4052$if i386
4053	_syscall6		{ FLAGS = NODYNSORT; };
4054	__systemcall6		{ FLAGS = NODYNSORT; };
4055$endif
4056
4057$if amd64
4058	___tls_get_addr		{ FLAGS = NODYNSORT; };
4059$endif
4060};
4061