Replace hybrid libm with OpenBSD libm on vendor branch
authorJohn Marino <draco@marino.st>
Mon, 13 Jul 2015 08:54:40 +0000 (10:54 +0200)
committerJohn Marino <draco@marino.st>
Tue, 14 Jul 2015 08:39:10 +0000 (10:39 +0200)
commitbe0c75e81ae398f2ec323f9631f2f795efd4e8d3
treeb764b9a06470c5ca76828abfc55c34061c2c5dad
parent2c08e36088f5b79e1e1998ef59257e5986face0a
Replace hybrid libm with OpenBSD libm on vendor branch

In order to gain full c++11 support on GCC, we had to import a number
of long double functions from NetBSD, once again converting libm into
a hybrid library from a mixture of sources.  As of today, FreeBSD still
doesn't have the missing functions and the PR on broken c++11 has been
lingering for months.

The OpenBSD libm is complete and maintained[1][2].  It's unmodified
sources are in vendor/OPENBSD_LIBM branch with local modifications (to
squelch gcc warnings and adjust for OS differences mainly) are applied
to the master for easy diff generation.

A dports bulk build was executing using the new math library and the
result is the ports built normally.

[1] The final two "imprecise" functions were replaced by proper long
    double versions.  The imprecise versions remain as older symbols
    (libm has symbol versioning) so this source is additional to what
    is provided in the vendor branch. (powl, tgammal)

[2] There were several DF306.0 symbols that are not present in OpenLIBM,
    partially because they've been moved to libc or were always there.
    In order to maintain backwards capability, copies of these functions
    with new names are built into libm, and given DF306.0 versions only.
    Without the version suffix, these past functions will not link to
    new programs.
421 files changed:
Makefile_upgrade.inc
include/Makefile
include/tgmath.h [deleted file]
lib/libc/Versions.def
lib/libc/gen/Makefile.inc
lib/libc/gen/isfinite.c [new file with mode: 0644]
lib/libc/gen/isnormal.c [new file with mode: 0644]
lib/libc/gen/signbit.c [new file with mode: 0644]
lib/libc/x86_64/gen/Makefile.inc
lib/libc/x86_64/gen/infinity.c
lib/libc/x86_64/gen/isfinitel.c [new file with mode: 0644]
lib/libc/x86_64/gen/isnanl.c [new file with mode: 0644]
lib/libc/x86_64/gen/isnormall.c [new file with mode: 0644]
lib/libc/x86_64/gen/nan.c [new file with mode: 0644]
lib/libc/x86_64/gen/signbitl.c [new file with mode: 0644]
lib/libm/Makefile
lib/libm/Symbol.map
lib/libm/Symbol.map.x86_64 [moved from lib/libm/x86_64/Symbol.map with 100% similarity]
lib/libm/bsdsrc/b_exp.c [deleted file]
lib/libm/bsdsrc/b_log.c [deleted file]
lib/libm/bsdsrc/b_tgamma.c [deleted file]
lib/libm/bsdsrc/mathimpl.h [deleted file]
lib/libm/gaps/cacosl.3 [deleted file]
lib/libm/gaps/cacosl.c [deleted file]
lib/libm/gaps/casinl.3 [deleted file]
lib/libm/gaps/casinl.c [deleted file]
lib/libm/gaps/catanl.3 [deleted file]
lib/libm/gaps/catanl.c [deleted file]
lib/libm/gaps/ccoshl.3 [deleted file]
lib/libm/gaps/ccoshl.c [deleted file]
lib/libm/gaps/ccosl.3 [deleted file]
lib/libm/gaps/ccosl.c [deleted file]
lib/libm/gaps/cephes_subrl.c [deleted file]
lib/libm/gaps/cephes_subrl.h [deleted file]
lib/libm/gaps/cexpl.3 [deleted file]
lib/libm/gaps/cexpl.c [deleted file]
lib/libm/gaps/clog.3 [deleted file]
lib/libm/gaps/clog.c [deleted file]
lib/libm/gaps/clogf.c [deleted file]
lib/libm/gaps/clogl.c [deleted file]
lib/libm/gaps/cpow.3 [deleted file]
lib/libm/gaps/cpow.c [deleted file]
lib/libm/gaps/cpowf.c [deleted file]
lib/libm/gaps/cpowl.c [deleted file]
lib/libm/gaps/csinhl.3 [deleted file]
lib/libm/gaps/csinhl.c [deleted file]
lib/libm/gaps/csinl.3 [deleted file]
lib/libm/gaps/csinl.c [deleted file]
lib/libm/gaps/ctanhl.3 [deleted file]
lib/libm/gaps/ctanhl.c [deleted file]
lib/libm/gaps/ctanl.3 [deleted file]
lib/libm/gaps/ctanl.c [deleted file]
lib/libm/i386/Makefile.inc [deleted file]
lib/libm/i386/Symbol.map [deleted file]
lib/libm/i386/e_exp.S [deleted file]
lib/libm/i386/e_fmod.S [deleted file]
lib/libm/i386/e_log.S [deleted file]
lib/libm/i386/e_log10.S [deleted file]
lib/libm/i386/e_log10f.S [deleted file]
lib/libm/i386/e_logf.S [deleted file]
lib/libm/i386/e_remainder.S [deleted file]
lib/libm/i386/e_remainderf.S [deleted file]
lib/libm/i386/e_remainderl.S [deleted file]
lib/libm/i386/e_sqrt.S [deleted file]
lib/libm/i386/e_sqrtf.S [deleted file]
lib/libm/i386/e_sqrtl.S [deleted file]
lib/libm/i386/fenv.c [deleted file]
lib/libm/i386/invtrig.c [deleted file]
lib/libm/i386/s_ceil.S [deleted file]
lib/libm/i386/s_ceilf.S [deleted file]
lib/libm/i386/s_ceill.S [deleted file]
lib/libm/i386/s_copysign.S [deleted file]
lib/libm/i386/s_copysignf.S [deleted file]
lib/libm/i386/s_copysignl.S [deleted file]
lib/libm/i386/s_cos.S [deleted file]
lib/libm/i386/s_finite.S [deleted file]
lib/libm/i386/s_floor.S [deleted file]
lib/libm/i386/s_floorf.S [deleted file]
lib/libm/i386/s_floorl.S [deleted file]
lib/libm/i386/s_llrint.S [deleted file]
lib/libm/i386/s_llrintf.S [deleted file]
lib/libm/i386/s_llrintl.S [deleted file]
lib/libm/i386/s_logb.S [deleted file]
lib/libm/i386/s_logbf.S [deleted file]
lib/libm/i386/s_logbl.S [deleted file]
lib/libm/i386/s_lrint.S [deleted file]
lib/libm/i386/s_lrintf.S [deleted file]
lib/libm/i386/s_lrintl.S [deleted file]
lib/libm/i386/s_remquo.S [deleted file]
lib/libm/i386/s_remquof.S [deleted file]
lib/libm/i386/s_remquol.S [deleted file]
lib/libm/i386/s_rint.S [deleted file]
lib/libm/i386/s_rintf.S [deleted file]
lib/libm/i386/s_rintl.S [deleted file]
lib/libm/i386/s_scalbn.S [deleted file]
lib/libm/i386/s_scalbnf.S [deleted file]
lib/libm/i386/s_scalbnl.S [deleted file]
lib/libm/i386/s_significand.S [deleted file]
lib/libm/i386/s_significandf.S [deleted file]
lib/libm/i386/s_sin.S [deleted file]
lib/libm/i386/s_tan.S [deleted file]
lib/libm/i386/s_trunc.S [deleted file]
lib/libm/i386/s_truncf.S [deleted file]
lib/libm/i386/s_truncl.S [deleted file]
lib/libm/ld80/e_lgammal_r.c [deleted file]
lib/libm/ld80/e_rem_pio2l.h [deleted file]
lib/libm/ld80/invtrig.c [deleted file]
lib/libm/ld80/invtrig.h [deleted file]
lib/libm/ld80/k_cosl.c [deleted file]
lib/libm/ld80/k_expl.h [deleted file]
lib/libm/ld80/k_sinl.c [deleted file]
lib/libm/ld80/k_tanl.c [deleted file]
lib/libm/ld80/s_erfl.c [deleted file]
lib/libm/ld80/s_exp2l.c [deleted file]
lib/libm/ld80/s_expl.c [deleted file]
lib/libm/ld80/s_logl.c [deleted file]
lib/libm/ld80/s_nanl.c [deleted file]
lib/libm/man/acos.3 [deleted file]
lib/libm/man/acosh.3 [deleted file]
lib/libm/man/asin.3 [deleted file]
lib/libm/man/asinh.3 [deleted file]
lib/libm/man/atan.3 [deleted file]
lib/libm/man/atan2.3 [deleted file]
lib/libm/man/atanh.3 [deleted file]
lib/libm/man/cacos.3 [deleted file]
lib/libm/man/ccos.3 [deleted file]
lib/libm/man/ccosh.3 [deleted file]
lib/libm/man/ceil.3 [deleted file]
lib/libm/man/cexp.3 [deleted file]
lib/libm/man/cimag.3 [deleted file]
lib/libm/man/complex.3 [deleted file]
lib/libm/man/copysign.3 [deleted file]
lib/libm/man/cos.3 [deleted file]
lib/libm/man/cosh.3 [deleted file]
lib/libm/man/csqrt.3 [deleted file]
lib/libm/man/erf.3 [deleted file]
lib/libm/man/exp.3 [deleted file]
lib/libm/man/fabs.3 [deleted file]
lib/libm/man/fdim.3 [deleted file]
lib/libm/man/feclearexcept.3 [deleted file]
lib/libm/man/feenableexcept.3 [deleted file]
lib/libm/man/fegetenv.3 [deleted file]
lib/libm/man/fegetround.3 [deleted file]
lib/libm/man/fenv.3 [deleted file]
lib/libm/man/floor.3 [deleted file]
lib/libm/man/fma.3 [deleted file]
lib/libm/man/fmax.3 [deleted file]
lib/libm/man/fmod.3 [deleted file]
lib/libm/man/hypot.3 [deleted file]
lib/libm/man/ieee.3 [deleted file]
lib/libm/man/ieee_test.3 [deleted file]
lib/libm/man/ilogb.3 [deleted file]
lib/libm/man/j0.3 [deleted file]
lib/libm/man/lgamma.3 [deleted file]
lib/libm/man/log.3 [deleted file]
lib/libm/man/lrint.3 [deleted file]
lib/libm/man/lround.3 [deleted file]
lib/libm/man/math.3 [deleted file]
lib/libm/man/nan.3 [deleted file]
lib/libm/man/nextafter.3 [deleted file]
lib/libm/man/remainder.3 [deleted file]
lib/libm/man/rint.3 [deleted file]
lib/libm/man/round.3 [deleted file]
lib/libm/man/scalbn.3 [deleted file]
lib/libm/man/signbit.3 [deleted file]
lib/libm/man/sin.3 [deleted file]
lib/libm/man/sinh.3 [deleted file]
lib/libm/man/sqrt.3 [deleted file]
lib/libm/man/tan.3 [deleted file]
lib/libm/man/tanh.3 [deleted file]
lib/libm/man/trunc.3 [deleted file]
lib/libm/src/amd64/isfinitel.c [new file with mode: 0644]
lib/libm/src/amd64/isnanl.c [new file with mode: 0644]
lib/libm/src/amd64/isnormall.c [new file with mode: 0644]
lib/libm/src/amd64/signbitl.c [new file with mode: 0644]
lib/libm/src/catrig.c [deleted file]
lib/libm/src/catrigf.c [deleted file]
lib/libm/src/complex.h [deleted file]
lib/libm/src/e_acos.c [deleted file]
lib/libm/src/e_acosf.c [deleted file]
lib/libm/src/e_acosh.c [deleted file]
lib/libm/src/e_acoshf.c [deleted file]
lib/libm/src/e_acoshl.c [deleted file]
lib/libm/src/e_acosl.c [deleted file]
lib/libm/src/e_asin.c [deleted file]
lib/libm/src/e_asinf.c [deleted file]
lib/libm/src/e_asinl.c [deleted file]
lib/libm/src/e_atan2.c [deleted file]
lib/libm/src/e_atan2f.c [deleted file]
lib/libm/src/e_atan2l.c [deleted file]
lib/libm/src/e_atanh.c [deleted file]
lib/libm/src/e_atanhf.c [deleted file]
lib/libm/src/e_atanhl.c [deleted file]
lib/libm/src/e_cosh.c [deleted file]
lib/libm/src/e_coshf.c [deleted file]
lib/libm/src/e_coshl.c [deleted file]
lib/libm/src/e_exp.c [deleted file]
lib/libm/src/e_expf.c [deleted file]
lib/libm/src/e_fmod.c [deleted file]
lib/libm/src/e_fmodf.c [deleted file]
lib/libm/src/e_fmodl.c [deleted file]
lib/libm/src/e_gamma.c [deleted file]
lib/libm/src/e_gamma_r.c [deleted file]
lib/libm/src/e_gammaf.c [deleted file]
lib/libm/src/e_gammaf_r.c [deleted file]
lib/libm/src/e_hypot.c [deleted file]
lib/libm/src/e_hypotf.c [deleted file]
lib/libm/src/e_hypotl.c [deleted file]
lib/libm/src/e_j0.c [deleted file]
lib/libm/src/e_j0f.c [deleted file]
lib/libm/src/e_j1.c [deleted file]
lib/libm/src/e_j1f.c [deleted file]
lib/libm/src/e_jn.c [deleted file]
lib/libm/src/e_jnf.c [deleted file]
lib/libm/src/e_lgamma.c [deleted file]
lib/libm/src/e_lgamma_r.c [deleted file]
lib/libm/src/e_lgammaf.c [deleted file]
lib/libm/src/e_lgammaf_r.c [deleted file]
lib/libm/src/e_lgammal.c [deleted file]
lib/libm/src/e_log.c [deleted file]
lib/libm/src/e_log10.c [deleted file]
lib/libm/src/e_log10f.c [deleted file]
lib/libm/src/e_log2.c [deleted file]
lib/libm/src/e_log2f.c [deleted file]
lib/libm/src/e_logf.c [deleted file]
lib/libm/src/e_pow.c [deleted file]
lib/libm/src/e_powf.c [deleted file]
lib/libm/src/e_rem_pio2.c [deleted file]
lib/libm/src/e_rem_pio2f.c [deleted file]
lib/libm/src/e_remainder.c [deleted file]
lib/libm/src/e_remainderf.c [deleted file]
lib/libm/src/e_remainderl.c [deleted file]
lib/libm/src/e_scalb.c [deleted file]
lib/libm/src/e_scalbf.c [deleted file]
lib/libm/src/e_sinh.c [deleted file]
lib/libm/src/e_sinhf.c [deleted file]
lib/libm/src/e_sinhl.c [deleted file]
lib/libm/src/e_sqrt.c [deleted file]
lib/libm/src/e_sqrtf.c [deleted file]
lib/libm/src/e_sqrtl.c [deleted file]
lib/libm/src/fenv-softfloat.h [deleted file]
lib/libm/src/fenv.h [deleted file]
lib/libm/src/frexp.c [moved from lib/libm/src/s_frexpl.c with 62% similarity]
lib/libm/src/imprecise.c
lib/libm/src/isfinite.c [new file with mode: 0644]
lib/libm/src/isnanf.c [new file with mode: 0644]
lib/libm/src/isnormal.c [new file with mode: 0644]
lib/libm/src/k_cos.c [deleted file]
lib/libm/src/k_cosf.c [deleted file]
lib/libm/src/k_exp.c [deleted file]
lib/libm/src/k_expf.c [deleted file]
lib/libm/src/k_log.h [deleted file]
lib/libm/src/k_logf.h [deleted file]
lib/libm/src/k_rem_pio2.c [deleted file]
lib/libm/src/k_sin.c [deleted file]
lib/libm/src/k_sinf.c [deleted file]
lib/libm/src/k_tan.c [deleted file]
lib/libm/src/k_tanf.c [deleted file]
lib/libm/src/math.h [deleted file]
lib/libm/src/math_private.h [deleted file]
lib/libm/src/s_asinh.c [deleted file]
lib/libm/src/s_asinhf.c [deleted file]
lib/libm/src/s_asinhl.c [deleted file]
lib/libm/src/s_atan.c [deleted file]
lib/libm/src/s_atanf.c [deleted file]
lib/libm/src/s_atanl.c [deleted file]
lib/libm/src/s_carg.c [deleted file]
lib/libm/src/s_cargf.c [deleted file]
lib/libm/src/s_cargl.c [deleted file]
lib/libm/src/s_cbrt.c [deleted file]
lib/libm/src/s_cbrtf.c [deleted file]
lib/libm/src/s_cbrtl.c [deleted file]
lib/libm/src/s_ccosh.c [deleted file]
lib/libm/src/s_ccoshf.c [deleted file]
lib/libm/src/s_ceil.c [deleted file]
lib/libm/src/s_ceilf.c [deleted file]
lib/libm/src/s_ceill.c [deleted file]
lib/libm/src/s_cexp.c [deleted file]
lib/libm/src/s_cexpf.c [deleted file]
lib/libm/src/s_cimag.c [deleted file]
lib/libm/src/s_cimagf.c [deleted file]
lib/libm/src/s_cimagl.c [deleted file]
lib/libm/src/s_conj.c [deleted file]
lib/libm/src/s_conjf.c [deleted file]
lib/libm/src/s_conjl.c [deleted file]
lib/libm/src/s_copysign.c [deleted file]
lib/libm/src/s_copysignf.c [deleted file]
lib/libm/src/s_copysignl.c [deleted file]
lib/libm/src/s_cos.c [deleted file]
lib/libm/src/s_cosf.c [deleted file]
lib/libm/src/s_cosl.c [deleted file]
lib/libm/src/s_cproj.c [deleted file]
lib/libm/src/s_cprojf.c [deleted file]
lib/libm/src/s_cprojl.c [deleted file]
lib/libm/src/s_creal.c [deleted file]
lib/libm/src/s_crealf.c [deleted file]
lib/libm/src/s_creall.c [deleted file]
lib/libm/src/s_csinh.c [deleted file]
lib/libm/src/s_csinhf.c [deleted file]
lib/libm/src/s_csqrt.c [deleted file]
lib/libm/src/s_csqrtf.c [deleted file]
lib/libm/src/s_csqrtl.c [deleted file]
lib/libm/src/s_ctanh.c [deleted file]
lib/libm/src/s_ctanhf.c [deleted file]
lib/libm/src/s_erf.c [deleted file]
lib/libm/src/s_erff.c [deleted file]
lib/libm/src/s_exp2.c [deleted file]
lib/libm/src/s_exp2f.c [deleted file]
lib/libm/src/s_expm1.c [deleted file]
lib/libm/src/s_expm1f.c [deleted file]
lib/libm/src/s_fabs.c [deleted file]
lib/libm/src/s_fabsf.c [deleted file]
lib/libm/src/s_fabsl.c [deleted file]
lib/libm/src/s_fdim.c [deleted file]
lib/libm/src/s_finite.c [deleted file]
lib/libm/src/s_finitef.c [deleted file]
lib/libm/src/s_floor.c [deleted file]
lib/libm/src/s_floorf.c [deleted file]
lib/libm/src/s_floorl.c [deleted file]
lib/libm/src/s_fma.c [deleted file]
lib/libm/src/s_fmaf.c [deleted file]
lib/libm/src/s_fmal.c [deleted file]
lib/libm/src/s_fmax.c [deleted file]
lib/libm/src/s_fmaxf.c [deleted file]
lib/libm/src/s_fmaxl.c [deleted file]
lib/libm/src/s_fmin.c [deleted file]
lib/libm/src/s_fminf.c [deleted file]
lib/libm/src/s_fminl.c [deleted file]
lib/libm/src/s_frexp.c [deleted file]
lib/libm/src/s_frexpf.c [deleted file]
lib/libm/src/s_ilogb.c [deleted file]
lib/libm/src/s_ilogbf.c [deleted file]
lib/libm/src/s_ilogbl.c [deleted file]
lib/libm/src/s_isfinite.c [deleted file]
lib/libm/src/s_isnan.c [deleted file]
lib/libm/src/s_isnormal.c [deleted file]
lib/libm/src/s_llrint.c [deleted file]
lib/libm/src/s_llrintf.c [deleted file]
lib/libm/src/s_llrintl.c [deleted file]
lib/libm/src/s_llround.c [deleted file]
lib/libm/src/s_llroundf.c [deleted file]
lib/libm/src/s_llroundl.c [deleted file]
lib/libm/src/s_log1p.c [deleted file]
lib/libm/src/s_log1pf.c [deleted file]
lib/libm/src/s_logb.c [deleted file]
lib/libm/src/s_logbf.c [deleted file]
lib/libm/src/s_logbl.c [deleted file]
lib/libm/src/s_lrint.c [deleted file]
lib/libm/src/s_lrintf.c [deleted file]
lib/libm/src/s_lrintl.c [deleted file]
lib/libm/src/s_lround.c [deleted file]
lib/libm/src/s_lroundf.c [deleted file]
lib/libm/src/s_lroundl.c [deleted file]
lib/libm/src/s_modf.c [deleted file]
lib/libm/src/s_modff.c [deleted file]
lib/libm/src/s_modfl.c [deleted file]
lib/libm/src/s_nan.c [deleted file]
lib/libm/src/s_nearbyint.c [deleted file]
lib/libm/src/s_nextafter.c [deleted file]
lib/libm/src/s_nextafterf.c [deleted file]
lib/libm/src/s_nextafterl.c [deleted file]
lib/libm/src/s_nexttoward.c [deleted file]
lib/libm/src/s_nexttowardf.c [deleted file]
lib/libm/src/s_remquo.c [deleted file]
lib/libm/src/s_remquof.c [deleted file]
lib/libm/src/s_remquol.c [deleted file]
lib/libm/src/s_rint.c [deleted file]
lib/libm/src/s_rintf.c [deleted file]
lib/libm/src/s_rintl.c [deleted file]
lib/libm/src/s_round.c [deleted file]
lib/libm/src/s_roundf.c [deleted file]
lib/libm/src/s_roundl.c [deleted file]
lib/libm/src/s_scalbln.c [deleted file]
lib/libm/src/s_scalbn.c [deleted file]
lib/libm/src/s_scalbnf.c [deleted file]
lib/libm/src/s_scalbnl.c [deleted file]
lib/libm/src/s_signbit.c [deleted file]
lib/libm/src/s_signgam.c [deleted file]
lib/libm/src/s_significand.c [deleted file]
lib/libm/src/s_significandf.c [deleted file]
lib/libm/src/s_sin.c [deleted file]
lib/libm/src/s_sinf.c [deleted file]
lib/libm/src/s_sinl.c [deleted file]
lib/libm/src/s_tan.c [deleted file]
lib/libm/src/s_tanf.c [deleted file]
lib/libm/src/s_tanh.c [deleted file]
lib/libm/src/s_tanhf.c [deleted file]
lib/libm/src/s_tanhl.c [deleted file]
lib/libm/src/s_tanl.c [deleted file]
lib/libm/src/s_tgammaf.c [deleted file]
lib/libm/src/s_trunc.c [deleted file]
lib/libm/src/s_truncf.c [deleted file]
lib/libm/src/s_truncl.c [deleted file]
lib/libm/src/signbit.c [new file with mode: 0644]
lib/libm/src/w_cabs.c [deleted file]
lib/libm/src/w_cabsf.c [deleted file]
lib/libm/src/w_cabsl.c [deleted file]
lib/libm/src/w_drem.c [deleted file]
lib/libm/src/w_dremf.c [deleted file]
lib/libm/x86_64/Makefile.inc [deleted file]
lib/libm/x86_64/e_remainder.S [deleted file]
lib/libm/x86_64/e_remainderf.S [deleted file]
lib/libm/x86_64/e_remainderl.S [deleted file]
lib/libm/x86_64/e_sqrt.S [deleted file]
lib/libm/x86_64/e_sqrtf.S [deleted file]
lib/libm/x86_64/e_sqrtl.S [deleted file]
lib/libm/x86_64/fenv.c [deleted file]
lib/libm/x86_64/s_llrint.S [deleted file]
lib/libm/x86_64/s_llrintf.S [deleted file]
lib/libm/x86_64/s_llrintl.S [deleted file]
lib/libm/x86_64/s_logbl.S [deleted file]
lib/libm/x86_64/s_lrint.S [deleted file]
lib/libm/x86_64/s_lrintf.S [deleted file]
lib/libm/x86_64/s_lrintl.S [deleted file]
lib/libm/x86_64/s_remquo.S [deleted file]
lib/libm/x86_64/s_remquof.S [deleted file]
lib/libm/x86_64/s_remquol.S [deleted file]
lib/libm/x86_64/s_rintl.S [deleted file]
lib/libm/x86_64/s_scalbn.S [deleted file]
lib/libm/x86_64/s_scalbnf.S [deleted file]
lib/libm/x86_64/s_scalbnl.S [deleted file]