#
# 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) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
#

#
# 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

#
# DO NOT TOUCH THIS FILE.
# This file declares interfaces that are cast in stone.
# They offer interfaces that will never change.
# DO NOT TOUCH THIS FILE.
#

# For ABI reasons, 32-bit sparc defines and uses some ABI related versions not
# used on the other platforms. Define sparc32 for convenience.
$if _sparc && _ELF32
$add sparc32
$endif

SYMBOL_VERSION SUNW_1.6.1 {
    global:
	_stack_grow			{ TYPE = FUNCTION };
    local:
	*;
} SUNW_1.6;

SYMBOL_VERSION SUNW_1.6 {
    global:
	cond_reltimedwait		{ TYPE = FUNCTION };
	pthread_cond_reltimedwait_np	{ TYPE = FUNCTION };
} SUNW_1.5;

SYMBOL_VERSION SUNW_1.5 {
    global:
	pthread_mutex_consistent_np	{ TYPE = FUNCTION };
	pthread_mutexattr_getrobust_np	{ TYPE = FUNCTION };
	pthread_mutexattr_setrobust_np	{ TYPE = FUNCTION };
} SUNW_1.4;

SYMBOL_VERSION SUNW_1.4 {
    global:
	getmsg				{ TYPE = FUNCTION };
	getpmsg				{ TYPE = FUNCTION };
	lockf				{ TYPE = FUNCTION };
	msgrcv				{ TYPE = FUNCTION };
	msgsnd				{ TYPE = FUNCTION };
	poll				{ TYPE = FUNCTION };
	pread				{ TYPE = FUNCTION };
	pthread_attr_getguardsize	{ TYPE = FUNCTION };
	pthread_attr_setguardsize	{ TYPE = FUNCTION };
	pthread_getconcurrency		{ TYPE = FUNCTION };
	pthread_mutexattr_gettype	{ TYPE = FUNCTION };
	pthread_mutexattr_settype	{ TYPE = FUNCTION };
	pthread_rwlockattr_destroy	{ TYPE = FUNCTION };
	pthread_rwlockattr_getpshared	{ TYPE = FUNCTION };
	pthread_rwlockattr_init		{ TYPE = FUNCTION };
	pthread_rwlockattr_setpshared	{ TYPE = FUNCTION };
	pthread_rwlock_destroy		{ TYPE = FUNCTION };
	pthread_rwlock_init		{ TYPE = FUNCTION };
	pthread_rwlock_rdlock		{ TYPE = FUNCTION };
	pthread_rwlock_tryrdlock	{ TYPE = FUNCTION };
	pthread_rwlock_trywrlock	{ TYPE = FUNCTION };
	pthread_rwlock_unlock		{ TYPE = FUNCTION };
	pthread_rwlock_wrlock		{ TYPE = FUNCTION };
	pthread_setconcurrency		{ TYPE = FUNCTION };
	putmsg				{ TYPE = FUNCTION };
	putpmsg				{ TYPE = FUNCTION };
	pwrite				{ TYPE = FUNCTION };
	readv				{ TYPE = FUNCTION };
	select				{ TYPE = FUNCTION };
	sigpause			{ TYPE = FUNCTION };
	usleep				{ TYPE = FUNCTION };
	wait3				{ TYPE = FUNCTION };
	waitid				{ TYPE = FUNCTION };
	writev				{ TYPE = FUNCTION };
	__xpg4_putmsg			{ TYPE = FUNCTION };
	__xpg4_putpmsg			{ TYPE = FUNCTION };

$if _ELF32		# Large file interfaces
	lockf64				{ TYPE = FUNCTION };
	pread64				{ TYPE = FUNCTION };
	pwrite64			{ TYPE = FUNCTION };
$endif
} SUNW_1.3;

SYMBOL_VERSION SUNW_1.3 {
    global:
	SUNW_1.3;
} SUNW_1.2;

SYMBOL_VERSION SUNW_1.2 {
    global:
	SUNW_1.2;
} SUNW_1.1;

SYMBOL_VERSION SUNW_1.1 {
    global:
	kill				{ TYPE = FUNCTION };

$if _ELF32		# Large file interfaces
	creat64				{ TYPE = FUNCTION };
	open64				{ TYPE = FUNCTION };
$endif
} SUNW_0.9;

SYMBOL_VERSION SUNW_0.9 {
    global:
	alarm				{ TYPE = FUNCTION };
	close				{ TYPE = FUNCTION; FLAGS = NODIRECT };
	creat				{ TYPE = FUNCTION };
	fcntl				{ TYPE = FUNCTION };
	fork				{ TYPE = FUNCTION; FLAGS = NODIRECT };
	fsync				{ TYPE = FUNCTION };
	msync				{ TYPE = FUNCTION };
	open				{ TYPE = FUNCTION };
	pause				{ TYPE = FUNCTION };
	pthread_attr_destroy		{ TYPE = FUNCTION };
	pthread_attr_getdetachstate	{ TYPE = FUNCTION };
	pthread_attr_getinheritsched	{ TYPE = FUNCTION };
	pthread_attr_getschedparam	{ TYPE = FUNCTION };
	pthread_attr_getschedpolicy	{ TYPE = FUNCTION };
	pthread_attr_getscope		{ TYPE = FUNCTION };
	pthread_attr_getstackaddr	{ TYPE = FUNCTION };
	pthread_attr_getstacksize	{ TYPE = FUNCTION };
	pthread_attr_init		{ TYPE = FUNCTION };
	pthread_attr_setdetachstate	{ TYPE = FUNCTION };
	pthread_attr_setinheritsched	{ TYPE = FUNCTION };
	pthread_attr_setschedparam	{ TYPE = FUNCTION };
	pthread_attr_setschedpolicy	{ TYPE = FUNCTION };
	pthread_attr_setscope		{ TYPE = FUNCTION };
	pthread_attr_setstackaddr	{ TYPE = FUNCTION };
	pthread_attr_setstacksize	{ TYPE = FUNCTION };
	pthread_cancel			{ TYPE = FUNCTION };
	__pthread_cleanup_pop		{ TYPE = FUNCTION };
	__pthread_cleanup_push		{ TYPE = FUNCTION };
	pthread_condattr_destroy	{ TYPE = FUNCTION };
	pthread_condattr_getpshared	{ TYPE = FUNCTION };
	pthread_condattr_init		{ TYPE = FUNCTION };
	pthread_condattr_setpshared	{ TYPE = FUNCTION };
	pthread_cond_broadcast		{ TYPE = FUNCTION };
	pthread_cond_destroy		{ TYPE = FUNCTION };
	pthread_cond_init		{ TYPE = FUNCTION };
	pthread_cond_signal		{ TYPE = FUNCTION };
	pthread_cond_timedwait		{ TYPE = FUNCTION };
	pthread_cond_wait		{ TYPE = FUNCTION };
	pthread_create			{ TYPE = FUNCTION };
	pthread_detach			{ TYPE = FUNCTION };
	pthread_equal			{ TYPE = FUNCTION };
	pthread_exit			{ TYPE = FUNCTION };
	pthread_getschedparam		{ TYPE = FUNCTION };
	pthread_getspecific		{ TYPE = FUNCTION };
	pthread_join			{ TYPE = FUNCTION };
	pthread_key_create		{ TYPE = FUNCTION };
	pthread_key_delete		{ TYPE = FUNCTION };
	pthread_kill			{ TYPE = FUNCTION };
	pthread_mutexattr_destroy	{ TYPE = FUNCTION };
	pthread_mutexattr_getprioceiling { TYPE = FUNCTION };
	pthread_mutexattr_getprotocol	{ TYPE = FUNCTION };
	pthread_mutexattr_getpshared	{ TYPE = FUNCTION };
	pthread_mutexattr_init		{ TYPE = FUNCTION };
	pthread_mutexattr_setprioceiling { TYPE = FUNCTION };
	pthread_mutexattr_setprotocol	{ TYPE = FUNCTION };
	pthread_mutexattr_setpshared	{ TYPE = FUNCTION };
	pthread_mutex_destroy		{ TYPE = FUNCTION };
	pthread_mutex_getprioceiling	{ TYPE = FUNCTION };
	pthread_mutex_init		{ TYPE = FUNCTION };
	pthread_mutex_lock		{ TYPE = FUNCTION };
	pthread_mutex_setprioceiling	{ TYPE = FUNCTION };
	pthread_mutex_trylock		{ TYPE = FUNCTION };
	pthread_mutex_unlock		{ TYPE = FUNCTION };
	pthread_once			{ TYPE = FUNCTION };
	pthread_self			{ TYPE = FUNCTION };
	pthread_setcancelstate		{ TYPE = FUNCTION };
	pthread_setcanceltype		{ TYPE = FUNCTION };
	pthread_setschedparam		{ TYPE = FUNCTION };
	pthread_setspecific		{ TYPE = FUNCTION };
	pthread_sigmask			{ TYPE = FUNCTION };
	pthread_testcancel		{ TYPE = FUNCTION };
	read				{ TYPE = FUNCTION };
	setitimer			{ TYPE = FUNCTION };
	sigpending			{ TYPE = FUNCTION };
	sigsetjmp			{ TYPE = FUNCTION };
	sigsuspend			{ TYPE = FUNCTION };
	tcdrain				{ TYPE = FUNCTION };
	wait				{ TYPE = FUNCTION };
	waitpid				{ TYPE = FUNCTION };
	write				{ TYPE = FUNCTION };
$if sparc32
} SUNW_0.7 SISCD_2.3b;

SYMBOL_VERSION SISCD_2.3b {
    global:
$endif
	thr_main			{ TYPE = FUNCTION };
	thr_stksegment			{ TYPE = FUNCTION };
$if sparc32
};
$else
} SUNW_0.7;
$endif

SYMBOL_VERSION SUNW_0.7 {
    global:
	_getfp				{ TYPE = FUNCTION };
	lwp_self			{ TYPE = FUNCTION };
	_mutex_held			{ TYPE = FUNCTION };
	_rw_read_held			{ TYPE = FUNCTION };
	_rw_write_held			{ TYPE = FUNCTION };
	_sema_held			{ TYPE = FUNCTION };
	setcontext			{ TYPE = FUNCTION };
	sigaction			{ TYPE = FUNCTION; FLAGS = NODIRECT };
	sigprocmask			{ TYPE = FUNCTION };
	sleep				{ TYPE = FUNCTION };
$if sparc32
} SISCD_2.3a;

SYMBOL_VERSION SISCD_2.3a {
    global:
$endif
	cond_broadcast			{ TYPE = FUNCTION };
	cond_destroy			{ TYPE = FUNCTION };
	cond_init			{ TYPE = FUNCTION };
	cond_signal			{ TYPE = FUNCTION };
	cond_timedwait			{ TYPE = FUNCTION };
	cond_wait			{ TYPE = FUNCTION };
	fork1				{ TYPE = FUNCTION };
	mutex_destroy			{ TYPE = FUNCTION };
	mutex_init			{ TYPE = FUNCTION };
	mutex_lock			{ TYPE = FUNCTION };
	mutex_trylock			{ TYPE = FUNCTION };
	mutex_unlock			{ TYPE = FUNCTION };
	rwlock_destroy			{ TYPE = FUNCTION };
	rwlock_init			{ TYPE = FUNCTION };
	rw_rdlock			{ TYPE = FUNCTION };
	rw_tryrdlock			{ TYPE = FUNCTION };
	rw_trywrlock			{ TYPE = FUNCTION };
	rw_unlock			{ TYPE = FUNCTION };
	rw_wrlock			{ TYPE = FUNCTION };
	sema_destroy			{ TYPE = FUNCTION };
	sema_init			{ TYPE = FUNCTION };
	sema_post			{ TYPE = FUNCTION };
	sema_trywait			{ TYPE = FUNCTION };
	sema_wait			{ TYPE = FUNCTION };
	sigwait				{ TYPE = FUNCTION };
	thr_continue			{ TYPE = FUNCTION };
	thr_create			{ TYPE = FUNCTION };
	thr_exit			{ TYPE = FUNCTION };
	thr_getconcurrency		{ TYPE = FUNCTION };
	thr_getprio			{ TYPE = FUNCTION };
	thr_getspecific			{ TYPE = FUNCTION };
	thr_join			{ TYPE = FUNCTION };
	thr_keycreate			{ TYPE = FUNCTION };
	thr_kill			{ TYPE = FUNCTION };
	thr_min_stack			{ TYPE = FUNCTION };
	thr_self			{ TYPE = FUNCTION };
	thr_setconcurrency		{ TYPE = FUNCTION };
	thr_setprio			{ TYPE = FUNCTION };
	thr_setspecific			{ TYPE = FUNCTION };
	thr_sigsetmask			{ TYPE = FUNCTION };
	thr_suspend			{ TYPE = FUNCTION };
	thr_yield			{ TYPE = FUNCTION };
};

SYMBOL_VERSION SUNWprivate_1.1 {
    global:
	_alarm				{ TYPE = FUNCTION };
	_assfail			{ TYPE = FUNCTION };
	_fork				{ TYPE = FUNCTION };
$if !(_x86 && _ELF32)
	_getsp				{ TYPE = FUNCTION };
$endif
	__gettsp			{ TYPE = FUNCTION };
	_mutex_destroy			{ TYPE = FUNCTION };
	mutex_held			{ TYPE = FUNCTION };
	_mutex_init			{ TYPE = FUNCTION };
	_mutex_lock			{ TYPE = FUNCTION };
	_mutex_unlock			{ TYPE = FUNCTION };
$if _sparc || (_x86 && _ELF32)
	_pthread_setcleanupinit		{ TYPE = FUNCTION };
$endif
	_resume				{ TYPE = FUNCTION };
	_resume_ret			{ TYPE = FUNCTION };
	_rwlock_destroy			{ TYPE = FUNCTION };
	rw_read_held			{ TYPE = FUNCTION };
	rw_write_held			{ TYPE = FUNCTION };
	_sema_destroy			{ TYPE = FUNCTION };
	sema_held			{ TYPE = FUNCTION };
	_setcontext			{ TYPE = FUNCTION };
	_setitimer			{ TYPE = FUNCTION };
	_sigaction			{ TYPE = FUNCTION; FLAGS = NODIRECT };
	_sigoff				{ TYPE = FUNCTION };
	_sigon				{ TYPE = FUNCTION };
	_sigprocmask			{ TYPE = FUNCTION };
	_sigsetjmp			{ TYPE = FUNCTION };
	_sigsuspend			{ TYPE = FUNCTION };
	_sleep				{ TYPE = FUNCTION };
	_thr_continue_allmutators	{ TYPE = FUNCTION };
	thr_continue_allmutators	{ TYPE = FUNCTION };
	_thr_continue_mutator		{ TYPE = FUNCTION };
	thr_continue_mutator		{ TYPE = FUNCTION };
	_thr_create			{ TYPE = FUNCTION };
	_thr_getspecific		{ TYPE = FUNCTION };
	_thr_getstate			{ TYPE = FUNCTION };
	thr_getstate			{ TYPE = FUNCTION };
	_thr_join			{ TYPE = FUNCTION };
	_thr_keycreate			{ TYPE = FUNCTION };
	_thr_main			{ TYPE = FUNCTION };
	_thr_mutators_barrier		{ TYPE = FUNCTION };
	thr_mutators_barrier		{ TYPE = FUNCTION };
	thr_probe_setup			{ TYPE = FUNCTION };
	_thr_self			{ TYPE = FUNCTION };
	_thr_setmutator			{ TYPE = FUNCTION };
	thr_setmutator			{ TYPE = FUNCTION };
	_thr_setspecific		{ TYPE = FUNCTION };
	_thr_setstate			{ TYPE = FUNCTION };
	thr_setstate			{ TYPE = FUNCTION };
	_thr_sighndlrinfo		{ TYPE = FUNCTION };
	thr_sighndlrinfo		{ TYPE = FUNCTION };
	thr_suspend_allmutators		{ TYPE = FUNCTION };
	_thr_suspend_allmutators	{ TYPE = FUNCTION };
	_thr_suspend_mutator		{ TYPE = FUNCTION };
	thr_suspend_mutator		{ TYPE = FUNCTION };
	_thr_wait_mutator		{ TYPE = FUNCTION };
	thr_wait_mutator		{ TYPE = FUNCTION };
$if _x86 && _ELF32
	___tls_get_addr			{ TYPE = FUNCTION };
$endif
	__tls_get_addr			{ TYPE = FUNCTION };
};

$if sparc32
SYMBOL_VERSION SISCD_2.3 {
    global:
	SISCD_2.3;
} SISCD_2.3a SISCD_2.3b;
$endif