#
# 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 2011 Nexenta Systems, Inc.  All rights reserved.
#
# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# Interface definition for libm.so.2
#
# For information regarding the establishment of versioned definitions see:
#	The Linker and Libraries Manual (version 2.5 or greater)
# This is part of the Developers Guide in the Answerbook.  Specifically refer
# to Chapter 2 under section "Defining Additional Symbols" through section
# "Reducing Symbol Scope", and Chapter 5 "Versioning".
#
# For specific rules for the modification (evolution) of these version
# definitions see:
#	psarc_1995_14: Integration of Scoped Libraries
#		(/shared/sac/PSARC/1995/014)
#	Policy for Shared Library Version Names and Interface Definitions
#		(/shared/ON/general_docs/scoping-rules.ps)

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

$if _ELF32
$add lf64
$endif
$if _sparc && _ELF32
$add sparc32
$endif
$if _sparc && _ELF64
$add sparcv9
$endif
$if _x86 && _ELF32
$add i386
$endif
$if _x86 && _ELF64
$add amd64
$endif

SYMBOL_VERSION SUNW_1.3 {
	global:
		__isnanf;			#LSARC/2003/658
		__isnanl;			#LSARC/2003/658
		_isnan 		{ FLAGS = NODYNSORT };	#LSARC/2003/658
		_isnand		{ FLAGS = NODYNSORT };	#LSARC/2003/658
		_isnanf		{ FLAGS = NODYNSORT };	#LSARC/2003/658
		_logb		{ FLAGS = NODYNSORT };	#LSARC/2003/658
		_modf		{ FLAGS = NODYNSORT };	#LSARC/2003/658
		_modff		{ FLAGS = NODYNSORT };	#LSARC/2003/658
		_nextafter	{ FLAGS = NODYNSORT };	#LSARC/2003/658
		_scalb		{ FLAGS = NODYNSORT };	#LSARC/2003/658
		isnand		{ FLAGS = NODYNSORT };	#LSARC/2003/658
		isnanf;				#LSARC/2003/658
		isnanl;				#LSARC/2003/658
} SUNW_1.2;

SYMBOL_VERSION SUNW_1.2 {
	global:
		__acoshf;
		__acoshl;
		__asinhf;
		__asinhl;
		__atanhf;
		__atanhl;
		__cabs;
		__cabsf;
		__cabsl;
		__cacos;
		__cacosf;
		__cacosh;
		__cacoshf;
		__cacoshl;
		__cacosl;
		__carg;
		__cargf;
		__cargl;
		__casin;
		__casinf;
		__casinh;
		__casinhf;
		__casinhl;
		__casinl;
		__catan;
		__catanf;
		__catanh;
		__catanhf;
		__catanhl;
		__catanl;
		__cbrtf;
		__cbrtl;
		__ccos;
		__ccosf;
		__ccosh;
		__ccoshf;
		__ccoshl;
		__ccosl;
		__cexp;
		__cexpf;
		__cexpl;
		__cimag;
		__cimagf;
		__cimagl;
		__clog;
		__clogf;
		__clogl;
		__conj;
		__conjf;
		__conjl;
		__copysignf;
		__copysignl;
		__cpow;
		__cpowf;
		__cpowl;
		__cproj;
		__cprojf;
		__cprojl;
		__creal;
		__crealf;
		__creall;
		__csin;
		__csinf;
		__csinh;
		__csinhf;
		__csinhl;
		__csinl;
		__csqrt;
		__csqrtf;
		__csqrtl;
		__ctan;
		__ctanf;
		__ctanh;
		__ctanhf;
		__ctanhl;
		__ctanl;
		__erfcf;
		__erfcl;
		__erff;
		__erfl;
		__exp2;
		__exp2f;
		__exp2l;
		__expm1f;
		__expm1l;
		__fdim;
		__fdimf;
		__fdiml;
		__feclearexcept;
		__fegetenv;
		__fegetexceptflag;
$if _x86
		__fegetprec;			#LSARC/1996/175
$endif
		__fegetround;
		__feholdexcept;
		__fenv_dfl_env;			#LSARC/1996/175
		__feraiseexcept;
		__fesetenv;
		__fesetexceptflag;
$if _x86
		__fesetprec;			#LSARC/1996/175
$endif
		__fesetround;
		__fetestexcept;
		__feupdateenv;
		__fex_get_handling;		#LSARC/1996/175
		__fex_get_log;			#LSARC/1996/175
		__fex_get_log_depth;		#LSARC/1996/175
		__fex_getexcepthandler;		#LSARC/1996/175
		__fex_log_entry;		#LSARC/1996/175
		__fex_merge_flags;		#LSARC/1996/175
		__fex_set_handling;		#LSARC/1996/175
		__fex_set_log;			#LSARC/1996/175
		__fex_set_log_depth;		#LSARC/1996/175
		__fex_setexcepthandler;		#LSARC/1996/175
		__fma;
		__fmaf;
		__fmal;
		__fmax;
		__fmaxf;
		__fmaxl;
		__fmin;
		__fminf;
		__fminl;
		__frexp;
		__gammaf;			#LSARC/2003/279
		__gammaf_r;			#LSARC/2003/279
		__gammal;			#LSARC/2003/279
		__gammal_r;			#LSARC/2003/279
		__hypotf;
		__hypotl;
		__ilogbf;
		__ilogbl;
		__j0f;				#LSARC/2003/279
		__j0l;				#LSARC/2003/279
		__j1f;				#LSARC/2003/279
		__j1l;				#LSARC/2003/279
		__jnf;				#LSARC/2003/279
		__jnl;				#LSARC/2003/279
		__ldexp;
		__lgammaf;
		__lgammaf_r;			#LSARC/2003/279
		__lgammal;
		__lgammal_r;			#LSARC/2003/279
$if amd64 || sparcv9
		__llrint	{ FLAGS = NODYNSORT };
		__llrintf	{ FLAGS = NODYNSORT };
		__llrintl	{ FLAGS = NODYNSORT };
		__llround	{ FLAGS = NODYNSORT };
		__llroundf	{ FLAGS = NODYNSORT };
		__llroundl	{ FLAGS = NODYNSORT };
$else
		__llrint;
		__llrintf;
		__llrintl;
		__llround;
		__llroundf;
		__llroundl;
$endif
		__log1pf;
		__log1pl;
		__log2;
		__log2f;
		__log2l;
		__logbf;
		__logbl;
$if amd64 || sparcv9
		__lrint 	{ FLAGS = NODYNSORT };
		__lrintf 	{ FLAGS = NODYNSORT };
		__lrintl 	{ FLAGS = NODYNSORT };
		__lround 	{ FLAGS = NODYNSORT };
		__lroundf 	{ FLAGS = NODYNSORT };
		__lroundl 	{ FLAGS = NODYNSORT };
$else
		__lrint;
		__lrintf;
		__lrintl;
		__lround;
		__lroundf;
		__lroundl;
$endif
		__modf;
		__nan;
		__nanf;
		__nanl;
		__nearbyint;
		__nearbyintf;
		__nearbyintl;
		__nextafterf;
		__nextafterl;
		__nexttoward;
		__nexttowardf;
		__nexttowardl;
		__remainderf;
		__remainderl;
		__remquo;
		__remquof;
		__remquol;
		__rintf;
		__rintl;
		__round;
		__roundf;
		__roundl;
		__scalbf;			#LSARC/2003/279
		__scalbl;			#LSARC/2003/279
		__scalbln;
		__scalblnf;
		__scalblnl;
		__scalbnf;
		__scalbnl;
		__signgamf;			#LSARC/2003/279
		__signgaml;			#LSARC/2003/279
		__significandf;			#LSARC/2003/279
		__significandl;			#LSARC/2003/279
		__sincos;			#LSARC/2003/279
		__sincosf;			#LSARC/2003/279
		__sincosl;			#LSARC/2003/279
		__tgamma;
		__tgammaf;
		__tgammal;
		__trunc;
		__truncf;
		__truncl;
		__xpg6 { FLAGS = NODIRECT };	#private contract with libc group
		__y0f;				#LSARC/2003/279
		__y0l;				#LSARC/2003/279
		__y1f;				#LSARC/2003/279
		__y1l;				#LSARC/2003/279
		__ynf;				#LSARC/2003/279
		__ynl;				#LSARC/2003/279
		acosf;
		acoshf;
		acoshl;
		acosl;
		asinf;
		asinhf;
		asinhl;
		asinl;
		atan2f;
		atan2l;
		atanf;
		atanhf;
		atanhl;
		atanl;
		cabs;
		cabsf;
		cabsl;
		cacos;
		cacosf;
		cacosh;
		cacoshf;
		cacoshl;
		cacosl;
		carg;
		cargf;
		cargl;
		casin;
		casinf;
		casinh;
		casinhf;
		casinhl;
		casinl;
		catan;
		catanf;
		catanh;
		catanhf;
		catanhl;
		catanl;
		cbrtf;
		cbrtl;
		ccos;
		ccosf;
		ccosh;
		ccoshf;
		ccoshl;
		ccosl;
		ceilf;
		ceill;
		cexp;
		cexpf;
		cexpl;
		cimag;
		cimagf;
		cimagl;
		clog;
		clogf;
		clogl;
		conj;
		conjf;
		conjl;
		copysignf;
		copysignl;
		cosf;
		coshf;
		coshl;
		cosl;
		cpow;
		cpowf;
		cpowl;
		cproj;
		cprojf;
		cprojl;
		creal;
		crealf;
		creall;
		csin;
		csinf;
		csinh;
		csinhf;
		csinhl;
		csinl;
		csqrt;
		csqrtf;
		csqrtl;
		ctan;
		ctanf;
		ctanh;
		ctanhf;
		ctanhl;
		ctanl;
		erfcf;
		erfcl;
		erff;
		erfl;
		exp2;
		exp2f;
		exp2l;
		expf;
		expl;
		expm1f;
		expm1l;
		fabsf;
		fabsl;
		fdim;
		fdimf;
		fdiml;
		feclearexcept;
		fegetenv;
		fegetexceptflag;
$if _x86
		fegetprec;			#LSARC/1996/175
$endif
		fegetround;
		feholdexcept;
		feraiseexcept;
		fesetenv;
		fesetexceptflag;
$if _x86
		fesetprec;			#LSARC/1996/175
$endif
		fesetround;
		fetestexcept;
		feupdateenv;
		fex_get_handling;		#LSARC/1996/175
		fex_get_log;			#LSARC/1996/175
		fex_get_log_depth;		#LSARC/1996/175
		fex_getexcepthandler;		#LSARC/1996/175
		fex_log_entry;			#LSARC/1996/175
		fex_merge_flags;		#LSARC/1996/175
		fex_set_handling;		#LSARC/1996/175
		fex_set_log;			#LSARC/1996/175
		fex_set_log_depth;		#LSARC/1996/175
		fex_setexcepthandler;		#LSARC/1996/175
		floorf;
		floorl;
		fma;
		fmaf;
		fmal;
		fmax;
		fmaxf;
		fmaxl;
		fmin;
		fminf;
		fminl;
		fmodf;
		fmodl;
		frexp;
		frexpf;
		frexpl;
		gammaf;				#LSARC/2003/279
		gammaf_r;			#LSARC/2003/279
		gammal;				#LSARC/2003/279
		gammal_r;			#LSARC/2003/279
		hypotf;
		hypotl;
		ilogbf;
		ilogbl;
		j0f;				#LSARC/2003/279
		j0l;				#LSARC/2003/279
		j1f;				#LSARC/2003/279
		j1l;				#LSARC/2003/279
		jnf;				#LSARC/2003/279
		jnl;				#LSARC/2003/279
		ldexp;
		ldexpf;
		ldexpl;
		lgammaf;
		lgammaf_r;			#LSARC/2003/279
		lgammal;
		lgammal_r;			#LSARC/2003/279
$if amd64 || sparcv9
		llrint 		{ FLAGS = NODYNSORT };
		llrintf 	{ FLAGS = NODYNSORT };
		llrintl 	{ FLAGS = NODYNSORT };
		llround 	{ FLAGS = NODYNSORT };
		llroundf 	{ FLAGS = NODYNSORT };
		llroundl 	{ FLAGS = NODYNSORT };
$else
		llrint;
		llrintf;
		llrintl;
		llround;
		llroundf;
		llroundl;
$endif
		log10f;
		log10l;
		log1pf;
		log1pl;
		log2;
		log2f;
		log2l;
		logbf;
		logbl;
		logf;
		logl;
		lrint;
		lrintf;
		lrintl;
		lround;
		lroundf;
		lroundl;
		modf;
		modff;
		modfl;
		nan;
		nanf;
		nanl;
		nearbyint;
		nearbyintf;
		nearbyintl;
		nextafterf;
		nextafterl;
		nexttoward;
		nexttowardf;
		nexttowardl;
		powf;
		powl;
		remainderf;
		remainderl;
		remquo;
		remquof;
		remquol;
		rintf;
		rintl;
		round;
		roundf;
		roundl;
		scalbf;				#LSARC/2003/279
		scalbl;				#LSARC/2003/279
		scalbln;
		scalblnf;
		scalblnl;
		scalbnf;
		scalbnl;
		signgamf;			#LSARC/2003/279
		signgaml;			#LSARC/2003/279
		significandf;			#LSARC/2003/279
		significandl;			#LSARC/2003/279
		sincos;				#LSARC/2003/279
		sincosf;			#LSARC/2003/279
		sincosl;			#LSARC/2003/279
		sinf;
		sinhf;
		sinhl;
		sinl;
		sqrtf;
		sqrtl;
		tanf;
		tanhf;
		tanhl;
		tanl;
		tgamma;
		tgammaf;
		tgammal;
		trunc;
		truncf;
		truncl;
		y0f;				#LSARC/2003/279
		y0l;				#LSARC/2003/279
		y1f;				#LSARC/2003/279
		y1l;				#LSARC/2003/279
		ynf;				#LSARC/2003/279
		ynl;				#LSARC/2003/279
} SUNW_1.1.1;

SYMBOL_VERSION SUNW_1.1.1 {
	global:
		__acosf;
		__acosl;
		__asinf;
		__asinl;
		__atan2f;
		__atan2l;
		__atanf;
		__atanl;
		__ceilf;
		__ceill;
		__cosf;
		__coshf;
		__coshl;
		__cosl;
		__expf;
		__expl;
		__fabsf;
		__fabsl;
		__floorf;
		__floorl;
		__fmodf;
		__fmodl;
		__frexpf;
		__frexpl;
		__ldexpf;
		__ldexpl;
		__log10f;
		__log10l;
		__logf;
		__logl;
		__modff;
		__modfl;
		__powf;
		__powl;
		__sinf;
		__sinhf;
		__sinhl;
		__sinl;
		__sqrtf;
		__sqrtl;
		__tanf;
		__tanhf;
		__tanhl;
		__tanl;
} SUNW_1.1;

SYMBOL_VERSION SUNW_1.1 {
	global:
		__acos;
		__acosh;
		__asin;
		__asinh;
		__atan;
		__atan2;
		__atanh;
		__cbrt;
		__ceil;
		__copysign;
		__cos;
		__cosh;
		__erf;
		__erfc;
		__exp;
		__expm1;
		__fabs;
		__floor;
		__fmod;
		__gamma;
		__gamma_r;
		__hypot;
		__ilogb;
		__isnan;
		__j0;
		__j1;
		__jn;
		__lgamma;
		__lgamma_r;
		__log;
		__log10;
		__log1p;
		__logb;
		__nextafter;
		__pow;
		__remainder;
		__rint;
		__scalb;
		__scalbn;
		__signgam;
		__significand;
		__sin;
		__sinh;
		__sqrt;
		__tan;
		__tanh;
		__y0;
		__y1;
		__yn;
		acos;
		acosh;
		asin;
		asinh;
		atan;
		atan2;
		atanh;
		cbrt;
		ceil;
		copysign;
		cos;
		cosh;
		erf;
		erfc;
		exp;
		expm1;
		fabs;
		floor;
		fmod;
		gamma;
		gamma_r;
		hypot;
		ilogb;
		isnan;
		j0;
		j1;
		jn;
		lgamma;
		lgamma_r;
		log;
		log10;
		log1p;
		logb;
		matherr { FLAGS = NODIRECT };
		nextafter;
		pow;
		remainder;
		rint;
		scalb;
		scalbn;
		signgam;
		significand;
		sin;
		sinh;
		sqrt;
		tan;
		tanh;
		y0;
		y1;
		yn;
};

$if amd64 || sparcv9
SYMBOL_VERSION SUNWprivate_1.2 {
$else
SYMBOL_VERSION SUNWprivate_1.3 {
$endif
	global:
		__libm_mt_fex_sync;		# -lmtsk
		__mt_fex_sync;			# -lmtsk
$if amd64 || sparcv9
} SUNWprivate_1.1;
$else
} SUNWprivate_1.2;

SYMBOL_VERSION SUNWprivate_1.2 {
	global:
		__libm_errno;	# SC3.0.1 -lmopt
} SUNWprivate_1.1;
$endif

SYMBOL_VERSION SUNWprivate_1.1 {
	global:
		_lib_version;
		__libm__rem_pio2;
		__libm__rem_pio2m;
	# anything else is local
	local:
		# For symbols with multiple names, move the less preferred
		# names out of .SUNW_dynsymsort
		feclearexcept96   { FLAGS = NODYNSORT };
		feraiseexcept96   { FLAGS = NODYNSORT };
		fetestexcept96    { FLAGS = NODYNSORT };
		fegetexceptflag96 { FLAGS = NODYNSORT };
		fesetexceptflag96 { FLAGS = NODYNSORT };
		feupdateenv96     { FLAGS = NODYNSORT };
		fegetenv96        { FLAGS = NODYNSORT };
		fesetenv96        { FLAGS = NODYNSORT };
		fegetround96      { FLAGS = NODYNSORT };
		*;	# symbols not mentioned in this file are scoped out
};