# The`long double' type is a distinct type we support if # -mlong-double-128 option is used (or when it becomes a default # when -mlong-double-64 is not used). long-double-fcts = yes ifeq (,$(filter -mlong-double-128,$(sysdep-CFLAGS))) sysdep-CFLAGS += -mlong-double-128 endif ifeq ($(subdir),math) libm-routines += s_nexttowardfd routines += nldbl-compat extra-libs += libnldbl libnldbl-calls = \ acos \ acosh \ asin \ asinh \ asprintf \ asprintf_chk \ atan \ atan2 \ atanh \ cabs \ cacos \ cacosh \ canonicalize \ carg \ casin \ casinh \ catan \ catanh \ cbrt \ ccos \ ccosh \ ceil \ cexp \ cimag \ clog \ clog10 \ conj \ copysign \ cos \ cosh \ cpow \ cproj \ creal \ csin \ csinh \ csqrt \ ctan \ ctanh \ dadd \ ddiv \ dfma \ dmul \ dprintf \ dprintf_chk \ dsqrt \ dsub \ erf \ erfc \ exp \ exp2 \ exp10 \ expm1 \ fabs \ fadd \ fdim \ fdiv \ ffma \ finite \ floor \ fma \ fmax \ fmaximum \ fmaximum_mag \ fmaximum_mag_num \ fmaximum_num \ fmaxmag \ fmin \ fminimum \ fminimum_mag \ fminimum_mag_num \ fminimum_num \ fminmag \ fmod \ fmul \ fprintf \ fprintf_chk \ frexp \ fromfp \ fromfpx \ fscanf \ fsqrt \ fsub \ fwprintf \ fwprintf_chk \ fwscanf \ gamma \ getpayload \ hypot \ ilogb \ iovfscanf \ isinf \ isnan \ isoc23_fscanf \ isoc23_fwscanf \ isoc23_scanf \ isoc23_sscanf \ isoc23_swscanf \ isoc23_vfscanf \ isoc23_vfwscanf \ isoc23_vscanf \ isoc23_vsscanf \ isoc23_vswscanf \ isoc23_vwscanf \ isoc23_wscanf \ isoc99_fscanf \ isoc99_fwscanf \ isoc99_scanf \ isoc99_sscanf \ isoc99_swscanf \ isoc99_vfscanf \ isoc99_vfwscanf \ isoc99_vscanf \ isoc99_vsscanf \ isoc99_vswscanf \ isoc99_vwscanf \ isoc99_wscanf \ j0 \ j1 \ jn \ ldexp \ lgamma \ lgamma_r \ llogb \ llrint \ llround \ log \ log2 \ log10 \ log1p \ log2p1 \ logb \ lrint \ lround \ modf \ nan \ nearbyint \ nextafter \ nextdown \ nexttoward \ nexttowardf \ nextup \ obstack_printf \ obstack_printf_chk \ obstack_vprintf \ obstack_vprintf_chk \ pow \ printf \ printf_chk \ printf_fp \ printf_size \ qecvt \ qecvt_r \ qfcvt \ qfcvt_r \ qgcvt \ remainder \ remquo \ rint \ round \ roundeven \ scalb \ scalbln \ scalbn \ scanf \ setpayload \ setpayloadsig \ signbit \ significand \ sin \ sincos \ sinh \ snprintf \ snprintf_chk \ sprintf \ sprintf_chk \ sqrt \ sscanf \ strfmon \ strfmon_l \ strfroml \ strtold \ strtold_l \ strtoldint \ swprintf \ swprintf_chk \ swscanf \ syslog \ syslog_chk \ tan \ tanh \ tgamma \ totalorder \ totalordermag \ trunc \ ufromfp \ ufromfpx \ vasprintf \ vasprintf_chk \ vdprintf \ vdprintf_chk \ vfprintf \ vfprintf_chk \ vfscanf \ vfwprintf \ vfwprintf_chk \ vfwscanf \ vprintf \ vprintf_chk \ vscanf \ vsnprintf \ vsnprintf_chk \ vsprintf \ vsprintf_chk \ vsscanf \ vswprintf \ vswprintf_chk \ vswscanf \ vsyslog \ vsyslog_chk \ vwprintf \ vwprintf_chk \ vwscanf \ wcstold \ wcstold_l \ wcstoldint \ wprintf \ wprintf_chk \ wscanf \ y0 \ y1 \ yn \ # libnldbl-calls libnldbl-routines = $(libnldbl-calls:%=nldbl-%) libnldbl-inhibit-o = $(object-suffixes) libnldbl-static-only-routines = $(libnldbl-routines) extra-objs += $(addsuffix .oS, $(libnldbl-routines)) CFLAGS-nldbl-acos.c = -fno-builtin-acosl CFLAGS-nldbl-acosh.c = -fno-builtin-acoshl CFLAGS-nldbl-asin.c = -fno-builtin-asinl CFLAGS-nldbl-asinh.c = -fno-builtin-asinhl CFLAGS-nldbl-atan.c = -fno-builtin-atanl CFLAGS-nldbl-atan2.c = -fno-builtin-atan2l CFLAGS-nldbl-atanh.c = -fno-builtin-atanhl CFLAGS-nldbl-cabs.c = -fno-builtin-cabsl CFLAGS-nldbl-cacos.c = -fno-builtin-cacosl CFLAGS-nldbl-cacosh.c = -fno-builtin-cacoshl CFLAGS-nldbl-canonicalize.c = -fno-builtin-canonicalizel CFLAGS-nldbl-carg.c = -fno-builtin-cargl CFLAGS-nldbl-casin.c = -fno-builtin-casinl CFLAGS-nldbl-casinh.c = -fno-builtin-casinhl CFLAGS-nldbl-catan.c = -fno-builtin-catanl CFLAGS-nldbl-catanh.c = -fno-builtin-catanhl CFLAGS-nldbl-cbrt.c = -fno-builtin-cbrtl CFLAGS-nldbl-ccos.c = -fno-builtin-ccosl CFLAGS-nldbl-ccosh.c = -fno-builtin-ccoshl CFLAGS-nldbl-ceil.c = -fno-builtin-ceill CFLAGS-nldbl-cexp.c = -fno-builtin-cexpl CFLAGS-nldbl-cimag.c = -fno-builtin-cimagl CFLAGS-nldbl-clog.c = -fno-builtin-clogl CFLAGS-nldbl-clog10.c = -fno-builtin-clog10l CFLAGS-nldbl-conj.c = -fno-builtin-conjl CFLAGS-nldbl-copysign.c = -fno-builtin-copysignl CFLAGS-nldbl-cos.c = -fno-builtin-cosl CFLAGS-nldbl-cosh.c = -fno-builtin-coshl CFLAGS-nldbl-cpow.c = -fno-builtin-cpowl CFLAGS-nldbl-cproj.c = -fno-builtin-cprojl CFLAGS-nldbl-creal.c = -fno-builtin-creall CFLAGS-nldbl-csin.c = -fno-builtin-csinl CFLAGS-nldbl-csinh.c = -fno-builtin-csinhl CFLAGS-nldbl-csqrt.c = -fno-builtin-csqrtl CFLAGS-nldbl-ctan.c = -fno-builtin-ctanl CFLAGS-nldbl-ctanh.c = -fno-builtin-ctanhl CFLAGS-nldbl-dadd.c = -fno-builtin-daddl CFLAGS-nldbl-ddiv.c = -fno-builtin-ddivl CFLAGS-nldbl-dfma.c = -fno-builtin-dfmal CFLAGS-nldbl-dmul.c = -fno-builtin-dmull CFLAGS-nldbl-dsqrt.c = -fno-builtin-dsqrtl CFLAGS-nldbl-dsub.c = -fno-builtin-dsubl CFLAGS-nldbl-erf.c = -fno-builtin-erfl CFLAGS-nldbl-erfc.c = -fno-builtin-erfcl CFLAGS-nldbl-exp.c = -fno-builtin-expl CFLAGS-nldbl-exp10.c = -fno-builtin-exp10l CFLAGS-nldbl-exp2.c = -fno-builtin-exp2l CFLAGS-nldbl-expm1.c = -fno-builtin-expm1l CFLAGS-nldbl-fabs.c = -fno-builtin-fabsl CFLAGS-nldbl-fadd.c = -fno-builtin-faddl CFLAGS-nldbl-fdim.c = -fno-builtin-fdiml CFLAGS-nldbl-fdiv.c = -fno-builtin-fdivl CFLAGS-nldbl-ffma.c = -fno-builtin-ffmal CFLAGS-nldbl-finite.c = -fno-builtin-finitel CFLAGS-nldbl-floor.c = -fno-builtin-floorl CFLAGS-nldbl-fma.c = -fno-builtin-fmal CFLAGS-nldbl-fmax.c = -fno-builtin-fmaxl CFLAGS-nldbl-fmaximum.c += -fno-builtin-fmaximuml CFLAGS-nldbl-fmaximum_mag.c += -fno-builtin-fmaximum_magl CFLAGS-nldbl-fmaximum_mag_num.c += -fno-builtin-fmaximum_mag_numl CFLAGS-nldbl-fmaximum_num.c += -fno-builtin-fmaximum_numl CFLAGS-nldbl-fmaxmag.c = -fno-builtin-fmaxmagl CFLAGS-nldbl-fmin.c = -fno-builtin-fminl CFLAGS-nldbl-fminimum.c += -fno-builtin-fminimuml CFLAGS-nldbl-fminimum_mag.c += -fno-builtin-fminimum_magl CFLAGS-nldbl-fminimum_mag_num.c += -fno-builtin-fminimum_mag_numl CFLAGS-nldbl-fminimum_num.c += -fno-builtin-fminimum_numl CFLAGS-nldbl-fminmag.c = -fno-builtin-fminmagl CFLAGS-nldbl-fmod.c = -fno-builtin-fmodl CFLAGS-nldbl-fmul.c = -fno-builtin-fmull CFLAGS-nldbl-frexp.c = -fno-builtin-frexpl CFLAGS-nldbl-fromfp.c = -fno-builtin-fromfpl CFLAGS-nldbl-fromfpx.c = -fno-builtin-fromfpxl CFLAGS-nldbl-fsqrt.c = -fno-builtin-fsqrtl CFLAGS-nldbl-fsub.c = -fno-builtin-fsubl CFLAGS-nldbl-gamma.c = -fno-builtin-gammal CFLAGS-nldbl-getpayload.c = -fno-builtin-getpayloadl CFLAGS-nldbl-hypot.c = -fno-builtin-hypotl CFLAGS-nldbl-ilogb.c = -fno-builtin-ilogbl CFLAGS-nldbl-isinf.c = -fno-builtin-isinfl CFLAGS-nldbl-isnan.c = -fno-builtin-isnanl CFLAGS-nldbl-j0.c = -fno-builtin-j0l CFLAGS-nldbl-j1.c = -fno-builtin-j1l CFLAGS-nldbl-jn.c = -fno-builtin-jnl CFLAGS-nldbl-ldexp.c = -fno-builtin-ldexpl CFLAGS-nldbl-lgamma.c = -fno-builtin-lgammal CFLAGS-nldbl-lgamma_r.c = -fno-builtin-lgammal_r CFLAGS-nldbl-llogb.c = -fno-builtin-llogbl CFLAGS-nldbl-llrint.c = -fno-builtin-llrintl CFLAGS-nldbl-llround.c = -fno-builtin-llroundl CFLAGS-nldbl-log.c = -fno-builtin-logl CFLAGS-nldbl-log10.c = -fno-builtin-log10l CFLAGS-nldbl-log1p.c = -fno-builtin-log1pl CFLAGS-nldbl-log2.c = -fno-builtin-log2l CFLAGS-nldbl-log2p1.c = -fno-builtin-log2p1l CFLAGS-nldbl-logb.c = -fno-builtin-logbl CFLAGS-nldbl-lrint.c = -fno-builtin-lrintl CFLAGS-nldbl-lround.c = -fno-builtin-lroundl CFLAGS-nldbl-modf.c = -fno-builtin-modfl CFLAGS-nldbl-nan.c = -fno-builtin-nanl CFLAGS-nldbl-nearbyint.c = -fno-builtin-nearbyintl CFLAGS-nldbl-nextafter.c = -fno-builtin-nextafterl CFLAGS-nldbl-nextdown.c = -fno-builtin-nextdownl CFLAGS-nldbl-nexttoward.c = -fno-builtin-nexttoward -fno-builtin-nexttowardl CFLAGS-nldbl-nexttowardf.c = -fno-builtin-nexttowardf CFLAGS-nldbl-nextup.c = -fno-builtin-nextupl CFLAGS-nldbl-pow.c = -fno-builtin-powl CFLAGS-nldbl-remainder.c = -fno-builtin-remainderl -fno-builtin-dreml CFLAGS-nldbl-remquo.c = -fno-builtin-remquol CFLAGS-nldbl-rint.c = -fno-builtin-rintl CFLAGS-nldbl-round.c = -fno-builtin-roundl CFLAGS-nldbl-roundeven.c = -fno-builtin-roundevenl CFLAGS-nldbl-scalb.c = -fno-builtin-scalbl CFLAGS-nldbl-scalbln.c = -fno-builtin-scalblnl CFLAGS-nldbl-scalbn.c = -fno-builtin-scalbnl CFLAGS-nldbl-setpayload.c = -fno-builtin-setpayloadl CFLAGS-nldbl-setpayloadsig.c = -fno-builtin-setpayloadsigl CFLAGS-nldbl-significand.c = -fno-builtin-significandl CFLAGS-nldbl-sin.c = -fno-builtin-sinl CFLAGS-nldbl-sincos.c = -fno-builtin-sincosl CFLAGS-nldbl-sinh.c = -fno-builtin-sinhl CFLAGS-nldbl-sqrt.c = -fno-builtin-sqrtl CFLAGS-nldbl-tan.c = -fno-builtin-tanl CFLAGS-nldbl-tanh.c = -fno-builtin-tanhl CFLAGS-nldbl-tgamma.c = -fno-builtin-tgammal CFLAGS-nldbl-totalorder.c = -fno-builtin-totalorderl CFLAGS-nldbl-totalordermag.c = -fno-builtin-totalordermagl CFLAGS-nldbl-trunc.c = -fno-builtin-truncl CFLAGS-nldbl-ufromfp.c = -fno-builtin-ufromfpl CFLAGS-nldbl-ufromfpx.c = -fno-builtin-ufromfpxl CFLAGS-nldbl-y0.c = -fno-builtin-y0l CFLAGS-nldbl-y1.c = -fno-builtin-y1l CFLAGS-nldbl-yn.c = -fno-builtin-ynl tests += \ test-narrow-macros-ldbl-64 \ test-nldbl-redirect \ test-redirection-ldbl-64 \ # tests CFLAGS-test-narrow-macros-ldbl-64.c += -mlong-double-64 CFLAGS-test-nldbl-redirect.c += -mlong-double-64 CFLAGS-test-redirection-ldbl-64.c += -mlong-double-64 $(objpfx)test-nldbl-redirect: $(objpfx)libnldbl_nonshared.a endif # Tests for argp.h functions (reusing the relevant tests from argp/) ifeq ($(subdir),argp) tests-internal += tst-nldbl-argp $(objpfx)tst-nldbl-argp.c: tst-ldbl-argp.c cp $< $@ CFLAGS-tst-nldbl-argp.c += -mlong-double-64 endif # Tests for err.h and error.h functions (reusing the relevant tests from # misc/). ifeq ($(subdir), misc) tests-internal += tst-nldbl-warn tests-internal += tst-nldbl-error tests-internal += tst-nldbl-errorfptr $(objpfx)tst-nldbl-warn.c: tst-ldbl-warn.c cp $< $@ $(objpfx)tst-nldbl-error.c: tst-ldbl-error.c cp $< $@ $(objpfx)tst-nldbl-errorfptr.c: tst-ldbl-errorfptr.c cp $< $@ CFLAGS-tst-nldbl-warn.c += -mlong-double-64 CFLAGS-tst-nldbl-error.c += -mlong-double-64 CFLAGS-tst-nldbl-errorfptr.c += -mlong-double-64 endif ifeq ($(subdir), stdio-common) tests += \ tst-nldbl-scanf-binary-c11 \ tst-nldbl-scanf-binary-c23 \ tst-nldbl-scanf-binary-gnu11 \ tst-nldbl-scanf-binary-gnu89 \ # tests # Some versions of GCC supported for building glibc do not support -std=c23 # (added in GCC 14), or the older name -std=c2x (added in GCC 9), so # the test for that version uses -std=c11 and then _ISOC23_SOURCE is defined in # the test as needed. CFLAGS-tst-nldbl-scanf-binary-c11.c += -mlong-double-64 -std=c11 \ -DOBJPFX=\"$(objpfx)\" CFLAGS-tst-nldbl-scanf-binary-c23.c += -mlong-double-64 -std=c11 \ -DOBJPFX=\"$(objpfx)\" CFLAGS-tst-nldbl-scanf-binary-gnu11.c += -mlong-double-64 -std=gnu11 \ -DOBJPFX=\"$(objpfx)\" CFLAGS-tst-nldbl-scanf-binary-gnu89.c += -mlong-double-64 -std=gnu89 \ -DOBJPFX=\"$(objpfx)\" endif ifeq ($(subdir), wcsmbs) tests += \ tst-nldbl-wscanf-binary-c11 \ tst-nldbl-wscanf-binary-c23 \ tst-nldbl-wscanf-binary-gnu11 \ tst-nldbl-wscanf-binary-gnu89 \ # tests # Some versions of GCC supported for building glibc do not support -std=c23 # (added in GCC 14), or the older name -std=c2x (added in GCC 9), so # the test for that version uses -std=c11 and then _ISOC23_SOURCE is defined in # the test as needed. CFLAGS-tst-nldbl-wscanf-binary-c11.c += -mlong-double-64 -std=c11 \ -DOBJPFX=\"$(objpfx)\" CFLAGS-tst-nldbl-wscanf-binary-c23.c += -mlong-double-64 -std=c11 \ -DOBJPFX=\"$(objpfx)\" CFLAGS-tst-nldbl-wscanf-binary-gnu11.c += -mlong-double-64 -std=gnu11 \ -DOBJPFX=\"$(objpfx)\" CFLAGS-tst-nldbl-wscanf-binary-gnu89.c += -mlong-double-64 -std=gnu89 \ -DOBJPFX=\"$(objpfx)\" endif routines_no_fortify += \ nldbl-asprintf \ nldbl-dprintf \ nldbl-fprintf \ nldbl-fwprintf \ nldbl-obstack_printf \ nldbl-obstack_vprintf \ nldbl-printf \ nldbl-snprintf \ nldbl-sprintf \ nldbl-swprintf \ nldbl-syslog \ nldbl-vasprintf \ nldbl-vdprintf \ nldbl-vfprintf \ nldbl-vfwprintf \ nldbl-vprintf \ nldbl-vsnprintf \ nldbl-vsprintf \ nldbl-vswprintf \ nldbl-vsyslog \ nldbl-vwprintf \ nldbl-wprintf \ # routines_no_fortify # We can't rely on Makeconfig here for whatever reason CFLAGS-.oS += $(call elide-fortify-source,.oS,$(routines_no_fortify)) CFLAGS-.oS += $(call elide-fortify-source,_chk.oS,$(routines_no_fortify))