authorgravatar for rpkak@noreply.codeberg.orgrpkak <rpkak@noreply.codeberg.org> 2026-01-09 07:35:50+01:00
committergravatar for rpkak@noreply.codeberg.orgrpkak <rpkak@noreply.codeberg.org> 2026-01-10 00:09:54+01:00
logb94a65ed403f440a53ae29f9f3cc9643fd2076d9
tree58455261c441e475597d3b133542408348395f73
parent5e242f05510330896db202974570324cf2606c22
signaturebadge-check Signed by SSH key SHA256:A2g6ATENrgLKQcUdthsn72P0njmQxnHSimzwnyJsZzo

test-libc: run some math tests


3 files changed, 208 insertions(+), 7 deletions(-)

test/libc.zig+200
...@@ -137,6 +137,206 @@ pub fn addCases(cases: *tests.LibcContext) void {...@@ -137,6 +137,206 @@ pub fn addCases(cases: *tests.LibcContext) void {
137 cases.addLibcTestCase("regression/uselocale-0.c", true, .{});137 cases.addLibcTestCase("regression/uselocale-0.c", true, .{});
138 cases.addLibcTestCase("regression/wcsncpy-read-overflow.c", true, .{});138 cases.addLibcTestCase("regression/wcsncpy-read-overflow.c", true, .{});
139 cases.addLibcTestCase("regression/wcsstr-false-negative.c", true, .{});139 cases.addLibcTestCase("regression/wcsstr-false-negative.c", true, .{});
140
141 // cases.addLibcTestCase("math/acos.c", true, .{});
142 // cases.addLibcTestCase("math/acosf.c", true, .{});
143 // cases.addLibcTestCase("math/acosh.c", true, .{});
144 cases.addLibcTestCase("math/acoshf.c", true, .{});
145 // cases.addLibcTestCase("math/acoshl.c", true, .{});
146 // cases.addLibcTestCase("math/acosl.c", true, .{});
147 cases.addLibcTestCase("math/asin.c", true, .{});
148 cases.addLibcTestCase("math/asinf.c", true, .{});
149 // cases.addLibcTestCase("math/asinh.c", true, .{});
150 cases.addLibcTestCase("math/asinhf.c", true, .{});
151 // cases.addLibcTestCase("math/asinhl.c", true, .{});
152 cases.addLibcTestCase("math/asinl.c", true, .{});
153 cases.addLibcTestCase("math/atan.c", true, .{});
154 // cases.addLibcTestCase("math/atan2.c", true, .{});
155 // cases.addLibcTestCase("math/atan2f.c", true, .{});
156 // cases.addLibcTestCase("math/atan2l.c", true, .{});
157 cases.addLibcTestCase("math/atanf.c", true, .{});
158 cases.addLibcTestCase("math/atanh.c", true, .{});
159 cases.addLibcTestCase("math/atanhf.c", true, .{});
160 cases.addLibcTestCase("math/atanhl.c", true, .{});
161 cases.addLibcTestCase("math/atanl.c", true, .{});
162 cases.addLibcTestCase("math/cbrt.c", true, .{});
163 cases.addLibcTestCase("math/cbrtf.c", true, .{});
164 cases.addLibcTestCase("math/cbrtl.c", true, .{});
165 cases.addLibcTestCase("math/ceil.c", true, .{});
166 cases.addLibcTestCase("math/ceilf.c", true, .{});
167 cases.addLibcTestCase("math/ceill.c", true, .{});
168 cases.addLibcTestCase("math/copysign.c", true, .{});
169 cases.addLibcTestCase("math/copysignf.c", true, .{});
170 cases.addLibcTestCase("math/copysignl.c", true, .{});
171 cases.addLibcTestCase("math/cos.c", true, .{});
172 cases.addLibcTestCase("math/cosf.c", true, .{});
173 cases.addLibcTestCase("math/cosh.c", true, .{});
174 cases.addLibcTestCase("math/coshf.c", true, .{});
175 cases.addLibcTestCase("math/coshl.c", true, .{});
176 cases.addLibcTestCase("math/cosl.c", true, .{});
177 cases.addLibcTestCase("math/drem.c", true, .{});
178 cases.addLibcTestCase("math/dremf.c", true, .{});
179 cases.addLibcTestCase("math/erf.c", true, .{});
180 cases.addLibcTestCase("math/erfc.c", true, .{});
181 // cases.addLibcTestCase("math/erfcf.c", true, .{});
182 cases.addLibcTestCase("math/erfcl.c", true, .{});
183 cases.addLibcTestCase("math/erff.c", true, .{});
184 cases.addLibcTestCase("math/erfl.c", true, .{});
185 cases.addLibcTestCase("math/exp.c", true, .{});
186 cases.addLibcTestCase("math/exp10.c", true, .{});
187 cases.addLibcTestCase("math/exp10f.c", true, .{});
188 cases.addLibcTestCase("math/exp10l.c", true, .{});
189 cases.addLibcTestCase("math/exp2.c", true, .{});
190 cases.addLibcTestCase("math/exp2f.c", true, .{});
191 cases.addLibcTestCase("math/exp2l.c", true, .{});
192 cases.addLibcTestCase("math/expf.c", true, .{});
193 cases.addLibcTestCase("math/expl.c", true, .{});
194 // cases.addLibcTestCase("math/expm1.c", true, .{});
195 // cases.addLibcTestCase("math/expm1f.c", true, .{});
196 // cases.addLibcTestCase("math/expm1l.c", true, .{});
197 cases.addLibcTestCase("math/fabs.c", true, .{});
198 cases.addLibcTestCase("math/fabsf.c", true, .{});
199 cases.addLibcTestCase("math/fabsl.c", true, .{});
200 // cases.addLibcTestCase("math/fdim.c", true, .{});
201 // cases.addLibcTestCase("math/fdimf.c", true, .{});
202 // cases.addLibcTestCase("math/fdiml.c", true, .{});
203 cases.addLibcTestCase("math/fenv.c", true, .{});
204 cases.addLibcTestCase("math/floor.c", true, .{});
205 cases.addLibcTestCase("math/floorf.c", true, .{});
206 cases.addLibcTestCase("math/floorl.c", true, .{});
207 // cases.addLibcTestCase("math/fma.c", true, .{});
208 // cases.addLibcTestCase("math/fmaf.c", true, .{});
209 // cases.addLibcTestCase("math/fmal.c", true, .{});
210 cases.addLibcTestCase("math/fmax.c", true, .{});
211 cases.addLibcTestCase("math/fmaxf.c", true, .{});
212 cases.addLibcTestCase("math/fmaxl.c", true, .{});
213 cases.addLibcTestCase("math/fmin.c", true, .{});
214 cases.addLibcTestCase("math/fminf.c", true, .{});
215 cases.addLibcTestCase("math/fminl.c", true, .{});
216 cases.addLibcTestCase("math/fmod.c", true, .{});
217 cases.addLibcTestCase("math/fmodf.c", true, .{});
218 cases.addLibcTestCase("math/fmodl.c", true, .{});
219 cases.addLibcTestCase("math/fpclassify.c", true, .{});
220 cases.addLibcTestCase("math/frexp.c", true, .{});
221 cases.addLibcTestCase("math/frexpf.c", true, .{});
222 cases.addLibcTestCase("math/frexpl.c", true, .{});
223 cases.addLibcTestCase("math/hypot.c", true, .{});
224 cases.addLibcTestCase("math/hypotf.c", true, .{});
225 cases.addLibcTestCase("math/hypotl.c", true, .{});
226 // cases.addLibcTestCase("math/ilogb.c", true, .{});
227 // cases.addLibcTestCase("math/ilogbf.c", true, .{});
228 // cases.addLibcTestCase("math/ilogbl.c", true, .{});
229 cases.addLibcTestCase("math/isless.c", true, .{});
230 // cases.addLibcTestCase("math/j0.c", true, .{});
231 cases.addLibcTestCase("math/j0f.c", true, .{});
232 cases.addLibcTestCase("math/j1.c", true, .{});
233 cases.addLibcTestCase("math/j1f.c", true, .{});
234 // cases.addLibcTestCase("math/jn.c", true, .{});
235 // cases.addLibcTestCase("math/jnf.c", true, .{});
236 cases.addLibcTestCase("math/ldexp.c", true, .{});
237 cases.addLibcTestCase("math/ldexpf.c", true, .{});
238 cases.addLibcTestCase("math/ldexpl.c", true, .{});
239 // cases.addLibcTestCase("math/lgamma.c", true, .{});
240 cases.addLibcTestCase("math/lgamma_r.c", true, .{});
241 // cases.addLibcTestCase("math/lgammaf.c", true, .{});
242 // cases.addLibcTestCase("math/lgammaf_r.c", true, .{});
243 // cases.addLibcTestCase("math/lgammal.c", true, .{});
244 cases.addLibcTestCase("math/lgammal_r.c", true, .{});
245 // cases.addLibcTestCase("math/llrint.c", true, .{});
246 // cases.addLibcTestCase("math/llrintf.c", true, .{});
247 // cases.addLibcTestCase("math/llrintl.c", true, .{});
248 // cases.addLibcTestCase("math/llround.c", true, .{});
249 // cases.addLibcTestCase("math/llroundf.c", true, .{});
250 // cases.addLibcTestCase("math/llroundl.c", true, .{});
251 cases.addLibcTestCase("math/log.c", true, .{});
252 cases.addLibcTestCase("math/log10.c", true, .{});
253 cases.addLibcTestCase("math/log10f.c", true, .{});
254 cases.addLibcTestCase("math/log10l.c", true, .{});
255 // cases.addLibcTestCase("math/log1p.c", true, .{});
256 // cases.addLibcTestCase("math/log1pf.c", true, .{});
257 // cases.addLibcTestCase("math/log1pl.c", true, .{});
258 cases.addLibcTestCase("math/log2.c", true, .{});
259 cases.addLibcTestCase("math/log2f.c", true, .{});
260 cases.addLibcTestCase("math/log2l.c", true, .{});
261 cases.addLibcTestCase("math/logb.c", true, .{});
262 cases.addLibcTestCase("math/logbf.c", true, .{});
263 cases.addLibcTestCase("math/logbl.c", true, .{});
264 cases.addLibcTestCase("math/logf.c", true, .{});
265 cases.addLibcTestCase("math/logl.c", true, .{});
266 cases.addLibcTestCase("math/lrint.c", true, .{});
267 cases.addLibcTestCase("math/lrintf.c", true, .{});
268 cases.addLibcTestCase("math/lrintl.c", true, .{});
269 cases.addLibcTestCase("math/lround.c", true, .{});
270 cases.addLibcTestCase("math/lroundf.c", true, .{});
271 cases.addLibcTestCase("math/lroundl.c", true, .{});
272 cases.addLibcTestCase("math/modf.c", true, .{});
273 cases.addLibcTestCase("math/modff.c", true, .{});
274 cases.addLibcTestCase("math/modfl.c", true, .{});
275 // cases.addLibcTestCase("math/nearbyint.c", true, .{});
276 cases.addLibcTestCase("math/nearbyintf.c", true, .{});
277 // cases.addLibcTestCase("math/nearbyintl.c", true, .{});
278 cases.addLibcTestCase("math/nextafter.c", true, .{});
279 cases.addLibcTestCase("math/nextafterf.c", true, .{});
280 cases.addLibcTestCase("math/nextafterl.c", true, .{});
281 cases.addLibcTestCase("math/nexttoward.c", true, .{});
282 cases.addLibcTestCase("math/nexttowardf.c", true, .{});
283 cases.addLibcTestCase("math/nexttowardl.c", true, .{});
284 // cases.addLibcTestCase("math/pow.c", true, .{});
285 cases.addLibcTestCase("math/pow10.c", true, .{});
286 cases.addLibcTestCase("math/pow10f.c", true, .{});
287 cases.addLibcTestCase("math/pow10l.c", true, .{});
288 // cases.addLibcTestCase("math/powf.c", true, .{});
289 // cases.addLibcTestCase("math/powl.c", true, .{});
290 cases.addLibcTestCase("math/remainder.c", true, .{});
291 cases.addLibcTestCase("math/remainderf.c", true, .{});
292 cases.addLibcTestCase("math/remainderl.c", true, .{});
293 cases.addLibcTestCase("math/remquo.c", true, .{});
294 cases.addLibcTestCase("math/remquof.c", true, .{});
295 cases.addLibcTestCase("math/remquol.c", true, .{});
296 // cases.addLibcTestCase("math/rint.c", true, .{});
297 cases.addLibcTestCase("math/rintf.c", true, .{});
298 // cases.addLibcTestCase("math/rintl.c", true, .{});
299 // cases.addLibcTestCase("math/round.c", true, .{});
300 // cases.addLibcTestCase("math/roundf.c", true, .{});
301 // cases.addLibcTestCase("math/roundl.c", true, .{});
302 cases.addLibcTestCase("math/scalb.c", true, .{});
303 cases.addLibcTestCase("math/scalbf.c", true, .{});
304 cases.addLibcTestCase("math/scalbln.c", true, .{});
305 cases.addLibcTestCase("math/scalblnf.c", true, .{});
306 cases.addLibcTestCase("math/scalblnl.c", true, .{});
307 cases.addLibcTestCase("math/scalbn.c", true, .{});
308 cases.addLibcTestCase("math/scalbnf.c", true, .{});
309 cases.addLibcTestCase("math/scalbnl.c", true, .{});
310 cases.addLibcTestCase("math/sin.c", true, .{});
311 cases.addLibcTestCase("math/sincos.c", true, .{});
312 cases.addLibcTestCase("math/sincosf.c", true, .{});
313 cases.addLibcTestCase("math/sincosl.c", true, .{});
314 cases.addLibcTestCase("math/sinf.c", true, .{});
315 // cases.addLibcTestCase("math/sinh.c", true, .{});
316 cases.addLibcTestCase("math/sinhf.c", true, .{});
317 // cases.addLibcTestCase("math/sinhl.c", true, .{});
318 cases.addLibcTestCase("math/sinl.c", true, .{});
319 cases.addLibcTestCase("math/sqrt.c", true, .{});
320 cases.addLibcTestCase("math/sqrtf.c", true, .{});
321 cases.addLibcTestCase("math/sqrtl.c", true, .{});
322 cases.addLibcTestCase("math/tan.c", true, .{});
323 cases.addLibcTestCase("math/tanf.c", true, .{});
324 cases.addLibcTestCase("math/tanh.c", true, .{});
325 cases.addLibcTestCase("math/tanhf.c", true, .{});
326 cases.addLibcTestCase("math/tanhl.c", true, .{});
327 cases.addLibcTestCase("math/tanl.c", true, .{});
328 // cases.addLibcTestCase("math/tgamma.c", true, .{});
329 // cases.addLibcTestCase("math/tgammaf.c", true, .{});
330 // cases.addLibcTestCase("math/tgammal.c", true, .{});
331 cases.addLibcTestCase("math/trunc.c", true, .{});
332 cases.addLibcTestCase("math/truncf.c", true, .{});
333 cases.addLibcTestCase("math/truncl.c", true, .{});
334 // cases.addLibcTestCase("math/y0.c", true, .{});
335 // cases.addLibcTestCase("math/y0f.c", true, .{});
336 // cases.addLibcTestCase("math/y1.c", true, .{});
337 // cases.addLibcTestCase("math/y1f.c", true, .{});
338 // cases.addLibcTestCase("math/yn.c", true, .{});
339 // cases.addLibcTestCase("math/ynf.c", true, .{});
140}340}
141341
142const std = @import("std");342const std = @import("std");
test/src/Libc.zig+2-2
...@@ -60,10 +60,10 @@ pub fn addTarget(libc: *const Libc, target: std.Build.ResolvedTarget) void {...@@ -60,10 +60,10 @@ pub fn addTarget(libc: *const Libc, target: std.Build.ResolvedTarget) void {
60 .link_libc = true,60 .link_libc = true,
61 });61 });
6262
63 var libtest_c_source_files: []const []const u8 = &.{ "print.c", "rand.c", "setrlim.c", "memfill.c", "vmfill.c", "fdfill.c", "utf8.c" };63 var libtest_c_source_files: []const []const u8 = &.{ "print.c", "rand.c", "mtest.c", "setrlim.c", "memfill.c", "vmfill.c", "fdfill.c", "utf8.c" };
64 libtest_mod.addCSourceFiles(.{64 libtest_mod.addCSourceFiles(.{
65 .root = common,65 .root = common,
66 .files = libtest_c_source_files[0..if (target.result.isMuslLibC()) 7 else 2],66 .files = libtest_c_source_files[0..if (target.result.isMuslLibC()) 8 else 3],
67 .flags = &.{"-fno-builtin"},67 .flags = &.{"-fno-builtin"},
68 });68 });
6969
test/tests.zig+6-5
...@@ -2873,11 +2873,12 @@ const libc_targets: []const std.Target.Query = &.{...@@ -2873,11 +2873,12 @@ const libc_targets: []const std.Target.Query = &.{
2873 .os_tag = .linux,2873 .os_tag = .linux,
2874 .abi = .musl,2874 .abi = .musl,
2875 },2875 },
2876 .{2876 // Macros like FE_INVALID are defined by musl, but they shouldn't.
2877 .cpu_arch = .loongarch64,2877 // .{
2878 .os_tag = .linux,2878 // .cpu_arch = .loongarch64,
2879 .abi = .muslsf,2879 // .os_tag = .linux,
2880 },2880 // .abi = .muslsf,
2881 // },
2881 // .{2882 // .{
2882 // .cpu_arch = .mips,2883 // .cpu_arch = .mips,
2883 // .os_tag = .linux,2884 // .os_tag = .linux,