From b94a65ed403f440a53ae29f9f3cc9643fd2076d9 Mon Sep 17 00:00:00 2001 From: rpkak Date: Fri, 9 Jan 2026 07:35:50 +0100 Subject: [PATCH] test-libc: run some math tests --- test/libc.zig | 200 ++++++++++++++++++++++++++++++++++++++++++++++ test/src/Libc.zig | 4 +- test/tests.zig | 11 +-- 3 files changed, 208 insertions(+), 7 deletions(-) diff --git a/test/libc.zig b/test/libc.zig index 851499d18b..8e79122db1 100644 --- a/test/libc.zig +++ b/test/libc.zig @@ -137,6 +137,206 @@ pub fn addCases(cases: *tests.LibcContext) void { cases.addLibcTestCase("regression/uselocale-0.c", true, .{}); cases.addLibcTestCase("regression/wcsncpy-read-overflow.c", true, .{}); cases.addLibcTestCase("regression/wcsstr-false-negative.c", true, .{}); + + // cases.addLibcTestCase("math/acos.c", true, .{}); + // cases.addLibcTestCase("math/acosf.c", true, .{}); + // cases.addLibcTestCase("math/acosh.c", true, .{}); + cases.addLibcTestCase("math/acoshf.c", true, .{}); + // cases.addLibcTestCase("math/acoshl.c", true, .{}); + // cases.addLibcTestCase("math/acosl.c", true, .{}); + cases.addLibcTestCase("math/asin.c", true, .{}); + cases.addLibcTestCase("math/asinf.c", true, .{}); + // cases.addLibcTestCase("math/asinh.c", true, .{}); + cases.addLibcTestCase("math/asinhf.c", true, .{}); + // cases.addLibcTestCase("math/asinhl.c", true, .{}); + cases.addLibcTestCase("math/asinl.c", true, .{}); + cases.addLibcTestCase("math/atan.c", true, .{}); + // cases.addLibcTestCase("math/atan2.c", true, .{}); + // cases.addLibcTestCase("math/atan2f.c", true, .{}); + // cases.addLibcTestCase("math/atan2l.c", true, .{}); + cases.addLibcTestCase("math/atanf.c", true, .{}); + cases.addLibcTestCase("math/atanh.c", true, .{}); + cases.addLibcTestCase("math/atanhf.c", true, .{}); + cases.addLibcTestCase("math/atanhl.c", true, .{}); + cases.addLibcTestCase("math/atanl.c", true, .{}); + cases.addLibcTestCase("math/cbrt.c", true, .{}); + cases.addLibcTestCase("math/cbrtf.c", true, .{}); + cases.addLibcTestCase("math/cbrtl.c", true, .{}); + cases.addLibcTestCase("math/ceil.c", true, .{}); + cases.addLibcTestCase("math/ceilf.c", true, .{}); + cases.addLibcTestCase("math/ceill.c", true, .{}); + cases.addLibcTestCase("math/copysign.c", true, .{}); + cases.addLibcTestCase("math/copysignf.c", true, .{}); + cases.addLibcTestCase("math/copysignl.c", true, .{}); + cases.addLibcTestCase("math/cos.c", true, .{}); + cases.addLibcTestCase("math/cosf.c", true, .{}); + cases.addLibcTestCase("math/cosh.c", true, .{}); + cases.addLibcTestCase("math/coshf.c", true, .{}); + cases.addLibcTestCase("math/coshl.c", true, .{}); + cases.addLibcTestCase("math/cosl.c", true, .{}); + cases.addLibcTestCase("math/drem.c", true, .{}); + cases.addLibcTestCase("math/dremf.c", true, .{}); + cases.addLibcTestCase("math/erf.c", true, .{}); + cases.addLibcTestCase("math/erfc.c", true, .{}); + // cases.addLibcTestCase("math/erfcf.c", true, .{}); + cases.addLibcTestCase("math/erfcl.c", true, .{}); + cases.addLibcTestCase("math/erff.c", true, .{}); + cases.addLibcTestCase("math/erfl.c", true, .{}); + cases.addLibcTestCase("math/exp.c", true, .{}); + cases.addLibcTestCase("math/exp10.c", true, .{}); + cases.addLibcTestCase("math/exp10f.c", true, .{}); + cases.addLibcTestCase("math/exp10l.c", true, .{}); + cases.addLibcTestCase("math/exp2.c", true, .{}); + cases.addLibcTestCase("math/exp2f.c", true, .{}); + cases.addLibcTestCase("math/exp2l.c", true, .{}); + cases.addLibcTestCase("math/expf.c", true, .{}); + cases.addLibcTestCase("math/expl.c", true, .{}); + // cases.addLibcTestCase("math/expm1.c", true, .{}); + // cases.addLibcTestCase("math/expm1f.c", true, .{}); + // cases.addLibcTestCase("math/expm1l.c", true, .{}); + cases.addLibcTestCase("math/fabs.c", true, .{}); + cases.addLibcTestCase("math/fabsf.c", true, .{}); + cases.addLibcTestCase("math/fabsl.c", true, .{}); + // cases.addLibcTestCase("math/fdim.c", true, .{}); + // cases.addLibcTestCase("math/fdimf.c", true, .{}); + // cases.addLibcTestCase("math/fdiml.c", true, .{}); + cases.addLibcTestCase("math/fenv.c", true, .{}); + cases.addLibcTestCase("math/floor.c", true, .{}); + cases.addLibcTestCase("math/floorf.c", true, .{}); + cases.addLibcTestCase("math/floorl.c", true, .{}); + // cases.addLibcTestCase("math/fma.c", true, .{}); + // cases.addLibcTestCase("math/fmaf.c", true, .{}); + // cases.addLibcTestCase("math/fmal.c", true, .{}); + cases.addLibcTestCase("math/fmax.c", true, .{}); + cases.addLibcTestCase("math/fmaxf.c", true, .{}); + cases.addLibcTestCase("math/fmaxl.c", true, .{}); + cases.addLibcTestCase("math/fmin.c", true, .{}); + cases.addLibcTestCase("math/fminf.c", true, .{}); + cases.addLibcTestCase("math/fminl.c", true, .{}); + cases.addLibcTestCase("math/fmod.c", true, .{}); + cases.addLibcTestCase("math/fmodf.c", true, .{}); + cases.addLibcTestCase("math/fmodl.c", true, .{}); + cases.addLibcTestCase("math/fpclassify.c", true, .{}); + cases.addLibcTestCase("math/frexp.c", true, .{}); + cases.addLibcTestCase("math/frexpf.c", true, .{}); + cases.addLibcTestCase("math/frexpl.c", true, .{}); + cases.addLibcTestCase("math/hypot.c", true, .{}); + cases.addLibcTestCase("math/hypotf.c", true, .{}); + cases.addLibcTestCase("math/hypotl.c", true, .{}); + // cases.addLibcTestCase("math/ilogb.c", true, .{}); + // cases.addLibcTestCase("math/ilogbf.c", true, .{}); + // cases.addLibcTestCase("math/ilogbl.c", true, .{}); + cases.addLibcTestCase("math/isless.c", true, .{}); + // cases.addLibcTestCase("math/j0.c", true, .{}); + cases.addLibcTestCase("math/j0f.c", true, .{}); + cases.addLibcTestCase("math/j1.c", true, .{}); + cases.addLibcTestCase("math/j1f.c", true, .{}); + // cases.addLibcTestCase("math/jn.c", true, .{}); + // cases.addLibcTestCase("math/jnf.c", true, .{}); + cases.addLibcTestCase("math/ldexp.c", true, .{}); + cases.addLibcTestCase("math/ldexpf.c", true, .{}); + cases.addLibcTestCase("math/ldexpl.c", true, .{}); + // cases.addLibcTestCase("math/lgamma.c", true, .{}); + cases.addLibcTestCase("math/lgamma_r.c", true, .{}); + // cases.addLibcTestCase("math/lgammaf.c", true, .{}); + // cases.addLibcTestCase("math/lgammaf_r.c", true, .{}); + // cases.addLibcTestCase("math/lgammal.c", true, .{}); + cases.addLibcTestCase("math/lgammal_r.c", true, .{}); + // cases.addLibcTestCase("math/llrint.c", true, .{}); + // cases.addLibcTestCase("math/llrintf.c", true, .{}); + // cases.addLibcTestCase("math/llrintl.c", true, .{}); + // cases.addLibcTestCase("math/llround.c", true, .{}); + // cases.addLibcTestCase("math/llroundf.c", true, .{}); + // cases.addLibcTestCase("math/llroundl.c", true, .{}); + cases.addLibcTestCase("math/log.c", true, .{}); + cases.addLibcTestCase("math/log10.c", true, .{}); + cases.addLibcTestCase("math/log10f.c", true, .{}); + cases.addLibcTestCase("math/log10l.c", true, .{}); + // cases.addLibcTestCase("math/log1p.c", true, .{}); + // cases.addLibcTestCase("math/log1pf.c", true, .{}); + // cases.addLibcTestCase("math/log1pl.c", true, .{}); + cases.addLibcTestCase("math/log2.c", true, .{}); + cases.addLibcTestCase("math/log2f.c", true, .{}); + cases.addLibcTestCase("math/log2l.c", true, .{}); + cases.addLibcTestCase("math/logb.c", true, .{}); + cases.addLibcTestCase("math/logbf.c", true, .{}); + cases.addLibcTestCase("math/logbl.c", true, .{}); + cases.addLibcTestCase("math/logf.c", true, .{}); + cases.addLibcTestCase("math/logl.c", true, .{}); + cases.addLibcTestCase("math/lrint.c", true, .{}); + cases.addLibcTestCase("math/lrintf.c", true, .{}); + cases.addLibcTestCase("math/lrintl.c", true, .{}); + cases.addLibcTestCase("math/lround.c", true, .{}); + cases.addLibcTestCase("math/lroundf.c", true, .{}); + cases.addLibcTestCase("math/lroundl.c", true, .{}); + cases.addLibcTestCase("math/modf.c", true, .{}); + cases.addLibcTestCase("math/modff.c", true, .{}); + cases.addLibcTestCase("math/modfl.c", true, .{}); + // cases.addLibcTestCase("math/nearbyint.c", true, .{}); + cases.addLibcTestCase("math/nearbyintf.c", true, .{}); + // cases.addLibcTestCase("math/nearbyintl.c", true, .{}); + cases.addLibcTestCase("math/nextafter.c", true, .{}); + cases.addLibcTestCase("math/nextafterf.c", true, .{}); + cases.addLibcTestCase("math/nextafterl.c", true, .{}); + cases.addLibcTestCase("math/nexttoward.c", true, .{}); + cases.addLibcTestCase("math/nexttowardf.c", true, .{}); + cases.addLibcTestCase("math/nexttowardl.c", true, .{}); + // cases.addLibcTestCase("math/pow.c", true, .{}); + cases.addLibcTestCase("math/pow10.c", true, .{}); + cases.addLibcTestCase("math/pow10f.c", true, .{}); + cases.addLibcTestCase("math/pow10l.c", true, .{}); + // cases.addLibcTestCase("math/powf.c", true, .{}); + // cases.addLibcTestCase("math/powl.c", true, .{}); + cases.addLibcTestCase("math/remainder.c", true, .{}); + cases.addLibcTestCase("math/remainderf.c", true, .{}); + cases.addLibcTestCase("math/remainderl.c", true, .{}); + cases.addLibcTestCase("math/remquo.c", true, .{}); + cases.addLibcTestCase("math/remquof.c", true, .{}); + cases.addLibcTestCase("math/remquol.c", true, .{}); + // cases.addLibcTestCase("math/rint.c", true, .{}); + cases.addLibcTestCase("math/rintf.c", true, .{}); + // cases.addLibcTestCase("math/rintl.c", true, .{}); + // cases.addLibcTestCase("math/round.c", true, .{}); + // cases.addLibcTestCase("math/roundf.c", true, .{}); + // cases.addLibcTestCase("math/roundl.c", true, .{}); + cases.addLibcTestCase("math/scalb.c", true, .{}); + cases.addLibcTestCase("math/scalbf.c", true, .{}); + cases.addLibcTestCase("math/scalbln.c", true, .{}); + cases.addLibcTestCase("math/scalblnf.c", true, .{}); + cases.addLibcTestCase("math/scalblnl.c", true, .{}); + cases.addLibcTestCase("math/scalbn.c", true, .{}); + cases.addLibcTestCase("math/scalbnf.c", true, .{}); + cases.addLibcTestCase("math/scalbnl.c", true, .{}); + cases.addLibcTestCase("math/sin.c", true, .{}); + cases.addLibcTestCase("math/sincos.c", true, .{}); + cases.addLibcTestCase("math/sincosf.c", true, .{}); + cases.addLibcTestCase("math/sincosl.c", true, .{}); + cases.addLibcTestCase("math/sinf.c", true, .{}); + // cases.addLibcTestCase("math/sinh.c", true, .{}); + cases.addLibcTestCase("math/sinhf.c", true, .{}); + // cases.addLibcTestCase("math/sinhl.c", true, .{}); + cases.addLibcTestCase("math/sinl.c", true, .{}); + cases.addLibcTestCase("math/sqrt.c", true, .{}); + cases.addLibcTestCase("math/sqrtf.c", true, .{}); + cases.addLibcTestCase("math/sqrtl.c", true, .{}); + cases.addLibcTestCase("math/tan.c", true, .{}); + cases.addLibcTestCase("math/tanf.c", true, .{}); + cases.addLibcTestCase("math/tanh.c", true, .{}); + cases.addLibcTestCase("math/tanhf.c", true, .{}); + cases.addLibcTestCase("math/tanhl.c", true, .{}); + cases.addLibcTestCase("math/tanl.c", true, .{}); + // cases.addLibcTestCase("math/tgamma.c", true, .{}); + // cases.addLibcTestCase("math/tgammaf.c", true, .{}); + // cases.addLibcTestCase("math/tgammal.c", true, .{}); + cases.addLibcTestCase("math/trunc.c", true, .{}); + cases.addLibcTestCase("math/truncf.c", true, .{}); + cases.addLibcTestCase("math/truncl.c", true, .{}); + // cases.addLibcTestCase("math/y0.c", true, .{}); + // cases.addLibcTestCase("math/y0f.c", true, .{}); + // cases.addLibcTestCase("math/y1.c", true, .{}); + // cases.addLibcTestCase("math/y1f.c", true, .{}); + // cases.addLibcTestCase("math/yn.c", true, .{}); + // cases.addLibcTestCase("math/ynf.c", true, .{}); } const std = @import("std"); diff --git a/test/src/Libc.zig b/test/src/Libc.zig index 7c61b58e02..423d7856d1 100644 --- a/test/src/Libc.zig +++ b/test/src/Libc.zig @@ -60,10 +60,10 @@ pub fn addTarget(libc: *const Libc, target: std.Build.ResolvedTarget) void { .link_libc = true, }); - var libtest_c_source_files: []const []const u8 = &.{ "print.c", "rand.c", "setrlim.c", "memfill.c", "vmfill.c", "fdfill.c", "utf8.c" }; + var libtest_c_source_files: []const []const u8 = &.{ "print.c", "rand.c", "mtest.c", "setrlim.c", "memfill.c", "vmfill.c", "fdfill.c", "utf8.c" }; libtest_mod.addCSourceFiles(.{ .root = common, - .files = libtest_c_source_files[0..if (target.result.isMuslLibC()) 7 else 2], + .files = libtest_c_source_files[0..if (target.result.isMuslLibC()) 8 else 3], .flags = &.{"-fno-builtin"}, }); diff --git a/test/tests.zig b/test/tests.zig index 88ef54bb29..52b2fe6621 100644 --- a/test/tests.zig +++ b/test/tests.zig @@ -2873,11 +2873,12 @@ const libc_targets: []const std.Target.Query = &.{ .os_tag = .linux, .abi = .musl, }, - .{ - .cpu_arch = .loongarch64, - .os_tag = .linux, - .abi = .muslsf, - }, + // Macros like FE_INVALID are defined by musl, but they shouldn't. + // .{ + // .cpu_arch = .loongarch64, + // .os_tag = .linux, + // .abi = .muslsf, + // }, // .{ // .cpu_arch = .mips, // .os_tag = .linux,