Page MenuHomeFreeBSD

D28577.id83659.diff
No OneTemporary

D28577.id83659.diff

Index: lib/msun/Makefile
===================================================================
--- lib/msun/Makefile
+++ lib/msun/Makefile
@@ -34,6 +34,9 @@
CFLAGS+= -I${.CURDIR}/${ARCH_SUBDIR}
+.include "math-builtins.mk"
+
+
.PATH: ${.CURDIR}/bsdsrc
.PATH: ${.CURDIR}/src
.PATH: ${.CURDIR}/man
Index: lib/msun/math-builtins.mk
===================================================================
--- /dev/null
+++ lib/msun/math-builtins.mk
@@ -0,0 +1,273 @@
+# $FreeBSD$
+
+# Disable compiler builtins which are math-related, to force the compiler to
+# emit calls to the libm functions, and not calculate any results in advance,
+# even optimize away such calls.
+
+MATH_BUILTINS+= acos
+MATH_BUILTINS+= acosf
+MATH_BUILTINS+= acosh
+MATH_BUILTINS+= acoshf
+MATH_BUILTINS+= acoshl
+MATH_BUILTINS+= acosl
+MATH_BUILTINS+= asin
+MATH_BUILTINS+= asinf
+MATH_BUILTINS+= asinh
+MATH_BUILTINS+= asinhf
+MATH_BUILTINS+= asinhl
+MATH_BUILTINS+= asinl
+MATH_BUILTINS+= atan
+MATH_BUILTINS+= atan2
+MATH_BUILTINS+= atan2f
+MATH_BUILTINS+= atan2l
+MATH_BUILTINS+= atanf
+MATH_BUILTINS+= atanh
+MATH_BUILTINS+= atanhf
+MATH_BUILTINS+= atanhl
+MATH_BUILTINS+= atanl
+MATH_BUILTINS+= cabs
+MATH_BUILTINS+= cabsf
+MATH_BUILTINS+= cabsl
+MATH_BUILTINS+= cacos
+MATH_BUILTINS+= cacosf
+MATH_BUILTINS+= cacosh
+MATH_BUILTINS+= cacoshf
+MATH_BUILTINS+= cacoshl
+MATH_BUILTINS+= cacosl
+MATH_BUILTINS+= carg
+MATH_BUILTINS+= cargf
+MATH_BUILTINS+= cargl
+MATH_BUILTINS+= casin
+MATH_BUILTINS+= casinf
+MATH_BUILTINS+= casinh
+MATH_BUILTINS+= casinhf
+MATH_BUILTINS+= casinhl
+MATH_BUILTINS+= casinl
+MATH_BUILTINS+= catan
+MATH_BUILTINS+= catanf
+MATH_BUILTINS+= catanh
+MATH_BUILTINS+= catanhf
+MATH_BUILTINS+= catanhl
+MATH_BUILTINS+= catanl
+MATH_BUILTINS+= cbrt
+MATH_BUILTINS+= cbrtf
+MATH_BUILTINS+= cbrtl
+MATH_BUILTINS+= ccos
+MATH_BUILTINS+= ccosf
+MATH_BUILTINS+= ccosh
+MATH_BUILTINS+= ccoshf
+MATH_BUILTINS+= ceil
+MATH_BUILTINS+= ceilf
+MATH_BUILTINS+= ceill
+MATH_BUILTINS+= cexp
+MATH_BUILTINS+= cexpf
+MATH_BUILTINS+= cimag
+MATH_BUILTINS+= cimagf
+MATH_BUILTINS+= cimagl
+MATH_BUILTINS+= clog
+MATH_BUILTINS+= clogf
+MATH_BUILTINS+= clogl
+MATH_BUILTINS+= conj
+MATH_BUILTINS+= conjf
+MATH_BUILTINS+= conjl
+MATH_BUILTINS+= copysign
+MATH_BUILTINS+= copysignf
+MATH_BUILTINS+= copysignl
+MATH_BUILTINS+= cos
+MATH_BUILTINS+= cosf
+MATH_BUILTINS+= cosh
+MATH_BUILTINS+= coshf
+MATH_BUILTINS+= coshl
+MATH_BUILTINS+= cosl
+MATH_BUILTINS+= cpow
+MATH_BUILTINS+= cpowf
+MATH_BUILTINS+= cpowl
+MATH_BUILTINS+= cproj
+MATH_BUILTINS+= cprojf
+MATH_BUILTINS+= cprojl
+MATH_BUILTINS+= creal
+MATH_BUILTINS+= crealf
+MATH_BUILTINS+= creall
+MATH_BUILTINS+= csin
+MATH_BUILTINS+= csinf
+MATH_BUILTINS+= csinh
+MATH_BUILTINS+= csinhf
+MATH_BUILTINS+= csqrt
+MATH_BUILTINS+= csqrtf
+MATH_BUILTINS+= csqrtl
+MATH_BUILTINS+= ctan
+MATH_BUILTINS+= ctanf
+MATH_BUILTINS+= ctanh
+MATH_BUILTINS+= ctanhf
+MATH_BUILTINS+= drem
+MATH_BUILTINS+= dremf
+MATH_BUILTINS+= erf
+MATH_BUILTINS+= erfc
+MATH_BUILTINS+= erfcf
+MATH_BUILTINS+= erfcl
+MATH_BUILTINS+= erff
+MATH_BUILTINS+= erfl
+MATH_BUILTINS+= exp
+MATH_BUILTINS+= exp2
+MATH_BUILTINS+= exp2f
+MATH_BUILTINS+= exp2l
+MATH_BUILTINS+= expf
+MATH_BUILTINS+= expl
+MATH_BUILTINS+= expm1
+MATH_BUILTINS+= expm1f
+MATH_BUILTINS+= expm1l
+MATH_BUILTINS+= fabs
+MATH_BUILTINS+= fabsf
+MATH_BUILTINS+= fabsl
+MATH_BUILTINS+= fdim
+MATH_BUILTINS+= fdimf
+MATH_BUILTINS+= fdiml
+MATH_BUILTINS+= finite
+MATH_BUILTINS+= finitef
+MATH_BUILTINS+= floor
+MATH_BUILTINS+= floorf
+MATH_BUILTINS+= floorl
+MATH_BUILTINS+= fma
+MATH_BUILTINS+= fmaf
+MATH_BUILTINS+= fmal
+MATH_BUILTINS+= fmax
+MATH_BUILTINS+= fmaxf
+MATH_BUILTINS+= fmaxl
+MATH_BUILTINS+= fmin
+MATH_BUILTINS+= fminf
+MATH_BUILTINS+= fminl
+MATH_BUILTINS+= fmod
+MATH_BUILTINS+= fmodf
+MATH_BUILTINS+= fmodl
+MATH_BUILTINS+= frexp
+MATH_BUILTINS+= frexpf
+MATH_BUILTINS+= frexpl
+MATH_BUILTINS+= gamma
+MATH_BUILTINS+= gamma_r
+MATH_BUILTINS+= gammaf
+MATH_BUILTINS+= gammaf_r
+MATH_BUILTINS+= hypot
+MATH_BUILTINS+= hypotf
+MATH_BUILTINS+= hypotl
+MATH_BUILTINS+= ilogb
+MATH_BUILTINS+= ilogbf
+MATH_BUILTINS+= ilogbl
+MATH_BUILTINS+= isinf
+MATH_BUILTINS+= isnan
+MATH_BUILTINS+= isnanf
+MATH_BUILTINS+= j0
+MATH_BUILTINS+= j0f
+MATH_BUILTINS+= j1
+MATH_BUILTINS+= j1f
+MATH_BUILTINS+= jn
+MATH_BUILTINS+= jnf
+MATH_BUILTINS+= ldexp
+MATH_BUILTINS+= ldexpf
+MATH_BUILTINS+= ldexpl
+MATH_BUILTINS+= lgamma
+MATH_BUILTINS+= lgamma_r
+MATH_BUILTINS+= lgammaf
+MATH_BUILTINS+= lgammaf_r
+MATH_BUILTINS+= lgammal
+MATH_BUILTINS+= lgammal_r
+MATH_BUILTINS+= llrint
+MATH_BUILTINS+= llrintf
+MATH_BUILTINS+= llrintl
+MATH_BUILTINS+= llround
+MATH_BUILTINS+= llroundf
+MATH_BUILTINS+= llroundl
+MATH_BUILTINS+= log
+MATH_BUILTINS+= log10
+MATH_BUILTINS+= log10f
+MATH_BUILTINS+= log10l
+MATH_BUILTINS+= log1p
+MATH_BUILTINS+= log1pf
+MATH_BUILTINS+= log1pl
+MATH_BUILTINS+= log2
+MATH_BUILTINS+= log2f
+MATH_BUILTINS+= log2l
+MATH_BUILTINS+= logb
+MATH_BUILTINS+= logbf
+MATH_BUILTINS+= logbl
+MATH_BUILTINS+= logf
+MATH_BUILTINS+= logl
+MATH_BUILTINS+= lrint
+MATH_BUILTINS+= lrintf
+MATH_BUILTINS+= lrintl
+MATH_BUILTINS+= lround
+MATH_BUILTINS+= lroundf
+MATH_BUILTINS+= lroundl
+MATH_BUILTINS+= modf
+MATH_BUILTINS+= modff
+MATH_BUILTINS+= modfl
+MATH_BUILTINS+= nan
+MATH_BUILTINS+= nanf
+MATH_BUILTINS+= nanl
+MATH_BUILTINS+= nearbyint
+MATH_BUILTINS+= nearbyintf
+MATH_BUILTINS+= nearbyintl
+MATH_BUILTINS+= nextafter
+MATH_BUILTINS+= nextafterf
+MATH_BUILTINS+= nextafterl
+MATH_BUILTINS+= nexttoward
+MATH_BUILTINS+= nexttowardf
+MATH_BUILTINS+= nexttowardl
+MATH_BUILTINS+= pow
+MATH_BUILTINS+= powf
+MATH_BUILTINS+= powl
+MATH_BUILTINS+= remainder
+MATH_BUILTINS+= remainderf
+MATH_BUILTINS+= remainderl
+MATH_BUILTINS+= remquo
+MATH_BUILTINS+= remquof
+MATH_BUILTINS+= remquol
+MATH_BUILTINS+= rint
+MATH_BUILTINS+= rintf
+MATH_BUILTINS+= rintl
+MATH_BUILTINS+= round
+MATH_BUILTINS+= roundf
+MATH_BUILTINS+= roundl
+MATH_BUILTINS+= scalb
+MATH_BUILTINS+= scalbf
+MATH_BUILTINS+= scalbln
+MATH_BUILTINS+= scalblnf
+MATH_BUILTINS+= scalblnl
+MATH_BUILTINS+= scalbn
+MATH_BUILTINS+= scalbnf
+MATH_BUILTINS+= scalbnl
+MATH_BUILTINS+= significand
+MATH_BUILTINS+= significandf
+MATH_BUILTINS+= sin
+MATH_BUILTINS+= sincos
+MATH_BUILTINS+= sincosf
+MATH_BUILTINS+= sincosl
+MATH_BUILTINS+= sinf
+MATH_BUILTINS+= sinh
+MATH_BUILTINS+= sinhf
+MATH_BUILTINS+= sinhl
+MATH_BUILTINS+= sinl
+MATH_BUILTINS+= sqrt
+MATH_BUILTINS+= sqrtf
+MATH_BUILTINS+= sqrtl
+MATH_BUILTINS+= tan
+MATH_BUILTINS+= tanf
+MATH_BUILTINS+= tanh
+MATH_BUILTINS+= tanhf
+MATH_BUILTINS+= tanhl
+MATH_BUILTINS+= tanl
+MATH_BUILTINS+= tgamma
+MATH_BUILTINS+= tgammaf
+MATH_BUILTINS+= tgammal
+MATH_BUILTINS+= trunc
+MATH_BUILTINS+= truncf
+MATH_BUILTINS+= truncl
+MATH_BUILTINS+= y0
+MATH_BUILTINS+= y0f
+MATH_BUILTINS+= y1
+MATH_BUILTINS+= y1f
+MATH_BUILTINS+= yn
+MATH_BUILTINS+= ynf
+
+.for func in ${MATH_BUILTINS}
+CFLAGS+= -fno-builtin-${func}
+.endfor
Index: lib/msun/tests/Makefile
===================================================================
--- lib/msun/tests/Makefile
+++ lib/msun/tests/Makefile
@@ -19,6 +19,10 @@
CFLAGS+= -D__HAVE_LONG_DOUBLE
.endif
+.include "../math-builtins.mk"
+# Avoid builtins, to force the compiler to emit calls to the libm functions,
+# and not calculate any results in advance.
+
NETBSD_ATF_TESTS_C= acos_test
NETBSD_ATF_TESTS_C+= asin_test
NETBSD_ATF_TESTS_C+= atan_test

File Metadata

Mime Type
text/plain
Expires
Tue, Sep 1, 3:28 PM (4 m, 16 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37833507
Default Alt Text
D28577.id83659.diff (7 KB)

Event Timeline