From 88394eae61a017d2b56c91e4658d0bcd9a65eb2e Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Mon, 24 Jun 2024 02:23:02 +0200 Subject: Begin adding infrastructure for testing --- .gitignore | 282 ++++++++++++++++++++++++++------------------------- make.c | 91 +++++++++++++++-- src/alloc.h | 8 ++ src/arena.c | 8 +- test/arena.c | 135 ++++++++++++++++++++++++ test/test-internal.h | 20 ++++ 6 files changed, 390 insertions(+), 154 deletions(-) create mode 100644 test/arena.c create mode 100644 test/test-internal.h diff --git a/.gitignore b/.gitignore index 2372b5b..d0d83ab 100644 --- a/.gitignore +++ b/.gitignore @@ -8,14 +8,18 @@ oryx *.gen.c *.o +# Test files. Autogenerated with the following: +# +# ./make; find test -type f -executable +# +test/arena + # Compilation artifacts of GNU MP. Autogenerated with the following: # # git status --porcelain \ # | sed -n '/^?? vendor/s/?? //p' \ # >vendor/gmp-6.3.0/.gitignore # -vendor/gmp-6.3.0/.libs/ -vendor/gmp-6.3.0/Makefile vendor/gmp-6.3.0/assert.lo vendor/gmp-6.3.0/compat.lo vendor/gmp-6.3.0/config.h @@ -23,10 +27,10 @@ vendor/gmp-6.3.0/config.log vendor/gmp-6.3.0/config.m4 vendor/gmp-6.3.0/config.status vendor/gmp-6.3.0/cxx/Makefile -vendor/gmp-6.3.0/demos/Makefile -vendor/gmp-6.3.0/demos/calc/Makefile vendor/gmp-6.3.0/demos/calc/calc-config.h +vendor/gmp-6.3.0/demos/calc/Makefile vendor/gmp-6.3.0/demos/expr/Makefile +vendor/gmp-6.3.0/demos/Makefile vendor/gmp-6.3.0/demos/pexpr-config.h vendor/gmp-6.3.0/doc/Makefile vendor/gmp-6.3.0/errno.lo @@ -40,36 +44,33 @@ vendor/gmp-6.3.0/gen-jacobitab vendor/gmp-6.3.0/gen-psqr vendor/gmp-6.3.0/gen-sieve vendor/gmp-6.3.0/gen-trialdivtab -vendor/gmp-6.3.0/gmp-mparam.h vendor/gmp-6.3.0/gmp.h +vendor/gmp-6.3.0/gmp-mparam.h vendor/gmp-6.3.0/gmp.pc vendor/gmp-6.3.0/gmpxx.pc vendor/gmp-6.3.0/invalid.lo vendor/gmp-6.3.0/libgmp.la +vendor/gmp-6.3.0/.libs/ vendor/gmp-6.3.0/libtool +vendor/gmp-6.3.0/Makefile vendor/gmp-6.3.0/memory.lo vendor/gmp-6.3.0/mp_bases.h vendor/gmp-6.3.0/mp_bpl.lo vendor/gmp-6.3.0/mp_clz_tab.lo vendor/gmp-6.3.0/mp_dv_tab.lo -vendor/gmp-6.3.0/mp_get_fns.lo -vendor/gmp-6.3.0/mp_minv_tab.lo -vendor/gmp-6.3.0/mp_set_fns.lo -vendor/gmp-6.3.0/mpf/.libs/ -vendor/gmp-6.3.0/mpf/Makefile vendor/gmp-6.3.0/mpf/abs.lo vendor/gmp-6.3.0/mpf/add.lo vendor/gmp-6.3.0/mpf/add_ui.lo vendor/gmp-6.3.0/mpf/ceilfloor.lo vendor/gmp-6.3.0/mpf/clear.lo vendor/gmp-6.3.0/mpf/clears.lo -vendor/gmp-6.3.0/mpf/cmp.lo vendor/gmp-6.3.0/mpf/cmp_d.lo +vendor/gmp-6.3.0/mpf/cmp.lo vendor/gmp-6.3.0/mpf/cmp_si.lo vendor/gmp-6.3.0/mpf/cmp_ui.lo vendor/gmp-6.3.0/mpf/cmp_z.lo -vendor/gmp-6.3.0/mpf/div.lo vendor/gmp-6.3.0/mpf/div_2exp.lo +vendor/gmp-6.3.0/mpf/div.lo vendor/gmp-6.3.0/mpf/div_ui.lo vendor/gmp-6.3.0/mpf/dump.lo vendor/gmp-6.3.0/mpf/eq.lo @@ -79,35 +80,37 @@ vendor/gmp-6.3.0/mpf/fits_sshort.lo vendor/gmp-6.3.0/mpf/fits_uint.lo vendor/gmp-6.3.0/mpf/fits_ulong.lo vendor/gmp-6.3.0/mpf/fits_ushort.lo -vendor/gmp-6.3.0/mpf/get_d.lo vendor/gmp-6.3.0/mpf/get_d_2exp.lo vendor/gmp-6.3.0/mpf/get_dfl_prec.lo +vendor/gmp-6.3.0/mpf/get_d.lo vendor/gmp-6.3.0/mpf/get_prc.lo vendor/gmp-6.3.0/mpf/get_si.lo vendor/gmp-6.3.0/mpf/get_str.lo vendor/gmp-6.3.0/mpf/get_ui.lo -vendor/gmp-6.3.0/mpf/init.lo vendor/gmp-6.3.0/mpf/init2.lo +vendor/gmp-6.3.0/mpf/init.lo vendor/gmp-6.3.0/mpf/inits.lo vendor/gmp-6.3.0/mpf/inp_str.lo vendor/gmp-6.3.0/mpf/int_p.lo -vendor/gmp-6.3.0/mpf/iset.lo vendor/gmp-6.3.0/mpf/iset_d.lo +vendor/gmp-6.3.0/mpf/iset.lo vendor/gmp-6.3.0/mpf/iset_si.lo vendor/gmp-6.3.0/mpf/iset_str.lo vendor/gmp-6.3.0/mpf/iset_ui.lo vendor/gmp-6.3.0/mpf/libmpf.la -vendor/gmp-6.3.0/mpf/mul.lo +vendor/gmp-6.3.0/mpf/.libs/ +vendor/gmp-6.3.0/mpf/Makefile vendor/gmp-6.3.0/mpf/mul_2exp.lo +vendor/gmp-6.3.0/mpf/mul.lo vendor/gmp-6.3.0/mpf/mul_ui.lo vendor/gmp-6.3.0/mpf/neg.lo vendor/gmp-6.3.0/mpf/out_str.lo vendor/gmp-6.3.0/mpf/pow_ui.lo vendor/gmp-6.3.0/mpf/random2.lo vendor/gmp-6.3.0/mpf/reldiff.lo -vendor/gmp-6.3.0/mpf/set.lo -vendor/gmp-6.3.0/mpf/set_d.lo vendor/gmp-6.3.0/mpf/set_dfl_prec.lo +vendor/gmp-6.3.0/mpf/set_d.lo +vendor/gmp-6.3.0/mpf/set.lo vendor/gmp-6.3.0/mpf/set_prc.lo vendor/gmp-6.3.0/mpf/set_prc_raw.lo vendor/gmp-6.3.0/mpf/set_q.lo @@ -125,22 +128,18 @@ vendor/gmp-6.3.0/mpf/trunc.lo vendor/gmp-6.3.0/mpf/ui_div.lo vendor/gmp-6.3.0/mpf/ui_sub.lo vendor/gmp-6.3.0/mpf/urandomb.lo -vendor/gmp-6.3.0/mpn/.libs/ -vendor/gmp-6.3.0/mpn/Makefile -vendor/gmp-6.3.0/mpn/add.c -vendor/gmp-6.3.0/mpn/add.lo +vendor/gmp-6.3.0/mp_get_fns.lo +vendor/gmp-6.3.0/mp_minv_tab.lo vendor/gmp-6.3.0/mpn/add_1.c vendor/gmp-6.3.0/mpn/add_1.lo +vendor/gmp-6.3.0/mpn/add.c vendor/gmp-6.3.0/mpn/add_err1_n.asm vendor/gmp-6.3.0/mpn/add_err1_n.lo vendor/gmp-6.3.0/mpn/add_err2_n.asm vendor/gmp-6.3.0/mpn/add_err2_n.lo vendor/gmp-6.3.0/mpn/add_err3_n.asm vendor/gmp-6.3.0/mpn/add_err3_n.lo -vendor/gmp-6.3.0/mpn/add_n.asm -vendor/gmp-6.3.0/mpn/add_n.lo -vendor/gmp-6.3.0/mpn/add_n_sub_n.c -vendor/gmp-6.3.0/mpn/add_n_sub_n.lo +vendor/gmp-6.3.0/mpn/add.lo vendor/gmp-6.3.0/mpn/addlsh1_n.asm vendor/gmp-6.3.0/mpn/addlsh1_n.lo vendor/gmp-6.3.0/mpn/addlsh2_n.asm @@ -151,28 +150,32 @@ vendor/gmp-6.3.0/mpn/addmul_1.asm vendor/gmp-6.3.0/mpn/addmul_1.lo vendor/gmp-6.3.0/mpn/addmul_2.asm vendor/gmp-6.3.0/mpn/addmul_2.lo +vendor/gmp-6.3.0/mpn/add_n.asm +vendor/gmp-6.3.0/mpn/add_n.lo +vendor/gmp-6.3.0/mpn/add_n_sub_n.c +vendor/gmp-6.3.0/mpn/add_n_sub_n.lo vendor/gmp-6.3.0/mpn/and_n.asm vendor/gmp-6.3.0/mpn/and_n.lo vendor/gmp-6.3.0/mpn/andn_n.asm vendor/gmp-6.3.0/mpn/andn_n.lo vendor/gmp-6.3.0/mpn/bdiv_dbm1c.asm vendor/gmp-6.3.0/mpn/bdiv_dbm1c.lo -vendor/gmp-6.3.0/mpn/bdiv_q.c -vendor/gmp-6.3.0/mpn/bdiv_q.lo vendor/gmp-6.3.0/mpn/bdiv_q_1.asm vendor/gmp-6.3.0/mpn/bdiv_q_1.lo +vendor/gmp-6.3.0/mpn/bdiv_q.c +vendor/gmp-6.3.0/mpn/bdiv_q.lo vendor/gmp-6.3.0/mpn/bdiv_qr.c vendor/gmp-6.3.0/mpn/bdiv_qr.lo vendor/gmp-6.3.0/mpn/binvert.c vendor/gmp-6.3.0/mpn/binvert.lo vendor/gmp-6.3.0/mpn/broot.c -vendor/gmp-6.3.0/mpn/broot.lo vendor/gmp-6.3.0/mpn/brootinv.c vendor/gmp-6.3.0/mpn/brootinv.lo +vendor/gmp-6.3.0/mpn/broot.lo vendor/gmp-6.3.0/mpn/bsqrt.c -vendor/gmp-6.3.0/mpn/bsqrt.lo vendor/gmp-6.3.0/mpn/bsqrtinv.c vendor/gmp-6.3.0/mpn/bsqrtinv.lo +vendor/gmp-6.3.0/mpn/bsqrt.lo vendor/gmp-6.3.0/mpn/cmp.c vendor/gmp-6.3.0/mpn/cmp.lo vendor/gmp-6.3.0/mpn/cnd_add_n.asm @@ -182,9 +185,9 @@ vendor/gmp-6.3.0/mpn/cnd_sub_n.lo vendor/gmp-6.3.0/mpn/cnd_swap.c vendor/gmp-6.3.0/mpn/cnd_swap.lo vendor/gmp-6.3.0/mpn/com.asm -vendor/gmp-6.3.0/mpn/com.lo vendor/gmp-6.3.0/mpn/comb_tables.c vendor/gmp-6.3.0/mpn/comb_tables.lo +vendor/gmp-6.3.0/mpn/com.lo vendor/gmp-6.3.0/mpn/compute_powtab.c vendor/gmp-6.3.0/mpn/compute_powtab.lo vendor/gmp-6.3.0/mpn/copyd.asm @@ -195,12 +198,20 @@ vendor/gmp-6.3.0/mpn/dcpi1_bdiv_q.c vendor/gmp-6.3.0/mpn/dcpi1_bdiv_q.lo vendor/gmp-6.3.0/mpn/dcpi1_bdiv_qr.c vendor/gmp-6.3.0/mpn/dcpi1_bdiv_qr.lo +vendor/gmp-6.3.0/mpn/dcpi1_divappr_q.c +vendor/gmp-6.3.0/mpn/dcpi1_divappr_q.lo vendor/gmp-6.3.0/mpn/dcpi1_div_q.c vendor/gmp-6.3.0/mpn/dcpi1_div_q.lo vendor/gmp-6.3.0/mpn/dcpi1_div_qr.c vendor/gmp-6.3.0/mpn/dcpi1_div_qr.lo -vendor/gmp-6.3.0/mpn/dcpi1_divappr_q.c -vendor/gmp-6.3.0/mpn/dcpi1_divappr_q.lo +vendor/gmp-6.3.0/mpn/dive_1.asm +vendor/gmp-6.3.0/mpn/dive_1.lo +vendor/gmp-6.3.0/mpn/diveby3.c +vendor/gmp-6.3.0/mpn/diveby3.lo +vendor/gmp-6.3.0/mpn/divexact.c +vendor/gmp-6.3.0/mpn/divexact.lo +vendor/gmp-6.3.0/mpn/divis.c +vendor/gmp-6.3.0/mpn/divis.lo vendor/gmp-6.3.0/mpn/div_q.c vendor/gmp-6.3.0/mpn/div_q.lo vendor/gmp-6.3.0/mpn/div_qr_1.c @@ -213,96 +224,88 @@ vendor/gmp-6.3.0/mpn/div_qr_2n_pi1.asm vendor/gmp-6.3.0/mpn/div_qr_2n_pi1.lo vendor/gmp-6.3.0/mpn/div_qr_2u_pi1.asm vendor/gmp-6.3.0/mpn/div_qr_2u_pi1.lo -vendor/gmp-6.3.0/mpn/dive_1.asm -vendor/gmp-6.3.0/mpn/dive_1.lo -vendor/gmp-6.3.0/mpn/diveby3.c -vendor/gmp-6.3.0/mpn/diveby3.lo -vendor/gmp-6.3.0/mpn/divexact.c -vendor/gmp-6.3.0/mpn/divexact.lo -vendor/gmp-6.3.0/mpn/divis.c -vendor/gmp-6.3.0/mpn/divis.lo -vendor/gmp-6.3.0/mpn/divrem.c -vendor/gmp-6.3.0/mpn/divrem.lo vendor/gmp-6.3.0/mpn/divrem_1.asm vendor/gmp-6.3.0/mpn/divrem_1.lo vendor/gmp-6.3.0/mpn/divrem_2.asm vendor/gmp-6.3.0/mpn/divrem_2.lo +vendor/gmp-6.3.0/mpn/divrem.c +vendor/gmp-6.3.0/mpn/divrem.lo vendor/gmp-6.3.0/mpn/dump.c vendor/gmp-6.3.0/mpn/dump.lo -vendor/gmp-6.3.0/mpn/fib2_ui.c -vendor/gmp-6.3.0/mpn/fib2_ui.lo vendor/gmp-6.3.0/mpn/fib2m.c vendor/gmp-6.3.0/mpn/fib2m.lo +vendor/gmp-6.3.0/mpn/fib2_ui.c +vendor/gmp-6.3.0/mpn/fib2_ui.lo vendor/gmp-6.3.0/mpn/fib_table.c vendor/gmp-6.3.0/mpn/fib_table.lo -vendor/gmp-6.3.0/mpn/gcd.c -vendor/gmp-6.3.0/mpn/gcd.lo -vendor/gmp-6.3.0/mpn/gcd_1.c -vendor/gmp-6.3.0/mpn/gcd_1.lo vendor/gmp-6.3.0/mpn/gcd_11.asm vendor/gmp-6.3.0/mpn/gcd_11.lo +vendor/gmp-6.3.0/mpn/gcd_1.c +vendor/gmp-6.3.0/mpn/gcd_1.lo vendor/gmp-6.3.0/mpn/gcd_22.asm vendor/gmp-6.3.0/mpn/gcd_22.lo -vendor/gmp-6.3.0/mpn/gcd_subdiv_step.c -vendor/gmp-6.3.0/mpn/gcd_subdiv_step.lo -vendor/gmp-6.3.0/mpn/gcdext.c -vendor/gmp-6.3.0/mpn/gcdext.lo +vendor/gmp-6.3.0/mpn/gcd.c vendor/gmp-6.3.0/mpn/gcdext_1.c vendor/gmp-6.3.0/mpn/gcdext_1.lo +vendor/gmp-6.3.0/mpn/gcdext.c vendor/gmp-6.3.0/mpn/gcdext_lehmer.c vendor/gmp-6.3.0/mpn/gcdext_lehmer.lo +vendor/gmp-6.3.0/mpn/gcdext.lo +vendor/gmp-6.3.0/mpn/gcd.lo +vendor/gmp-6.3.0/mpn/gcd_subdiv_step.c +vendor/gmp-6.3.0/mpn/gcd_subdiv_step.lo vendor/gmp-6.3.0/mpn/get_d.c vendor/gmp-6.3.0/mpn/get_d.lo vendor/gmp-6.3.0/mpn/get_str.c vendor/gmp-6.3.0/mpn/get_str.lo vendor/gmp-6.3.0/mpn/hamdist.asm vendor/gmp-6.3.0/mpn/hamdist.lo -vendor/gmp-6.3.0/mpn/hgcd.c -vendor/gmp-6.3.0/mpn/hgcd.lo vendor/gmp-6.3.0/mpn/hgcd2.c -vendor/gmp-6.3.0/mpn/hgcd2.lo vendor/gmp-6.3.0/mpn/hgcd2_jacobi.c vendor/gmp-6.3.0/mpn/hgcd2_jacobi.lo +vendor/gmp-6.3.0/mpn/hgcd2.lo vendor/gmp-6.3.0/mpn/hgcd_appr.c vendor/gmp-6.3.0/mpn/hgcd_appr.lo +vendor/gmp-6.3.0/mpn/hgcd.c vendor/gmp-6.3.0/mpn/hgcd_jacobi.c vendor/gmp-6.3.0/mpn/hgcd_jacobi.lo +vendor/gmp-6.3.0/mpn/hgcd.lo vendor/gmp-6.3.0/mpn/hgcd_matrix.c vendor/gmp-6.3.0/mpn/hgcd_matrix.lo vendor/gmp-6.3.0/mpn/hgcd_reduce.c vendor/gmp-6.3.0/mpn/hgcd_reduce.lo vendor/gmp-6.3.0/mpn/hgcd_step.c vendor/gmp-6.3.0/mpn/hgcd_step.lo +vendor/gmp-6.3.0/mpn/invertappr.c +vendor/gmp-6.3.0/mpn/invertappr.lo vendor/gmp-6.3.0/mpn/invert.c -vendor/gmp-6.3.0/mpn/invert.lo vendor/gmp-6.3.0/mpn/invert_limb.asm vendor/gmp-6.3.0/mpn/invert_limb.lo vendor/gmp-6.3.0/mpn/invert_limb_table.asm vendor/gmp-6.3.0/mpn/invert_limb_table.lo -vendor/gmp-6.3.0/mpn/invertappr.c -vendor/gmp-6.3.0/mpn/invertappr.lo +vendor/gmp-6.3.0/mpn/invert.lo vendor/gmp-6.3.0/mpn/ior_n.asm vendor/gmp-6.3.0/mpn/ior_n.lo vendor/gmp-6.3.0/mpn/iorn_n.asm vendor/gmp-6.3.0/mpn/iorn_n.lo vendor/gmp-6.3.0/mpn/jacbase.c vendor/gmp-6.3.0/mpn/jacbase.lo -vendor/gmp-6.3.0/mpn/jacobi.c -vendor/gmp-6.3.0/mpn/jacobi.lo vendor/gmp-6.3.0/mpn/jacobi_2.c vendor/gmp-6.3.0/mpn/jacobi_2.lo +vendor/gmp-6.3.0/mpn/jacobi.c +vendor/gmp-6.3.0/mpn/jacobi.lo vendor/gmp-6.3.0/mpn/jacobitab.h vendor/gmp-6.3.0/mpn/libmpn.la +vendor/gmp-6.3.0/mpn/.libs/ vendor/gmp-6.3.0/mpn/lshift.asm -vendor/gmp-6.3.0/mpn/lshift.lo vendor/gmp-6.3.0/mpn/lshiftc.asm vendor/gmp-6.3.0/mpn/lshiftc.lo -vendor/gmp-6.3.0/mpn/matrix22_mul.c -vendor/gmp-6.3.0/mpn/matrix22_mul.lo +vendor/gmp-6.3.0/mpn/lshift.lo +vendor/gmp-6.3.0/mpn/Makefile vendor/gmp-6.3.0/mpn/matrix22_mul1_inverse_vector.c vendor/gmp-6.3.0/mpn/matrix22_mul1_inverse_vector.lo -vendor/gmp-6.3.0/mpn/mod_1.c -vendor/gmp-6.3.0/mpn/mod_1.lo +vendor/gmp-6.3.0/mpn/matrix22_mul.c +vendor/gmp-6.3.0/mpn/matrix22_mul.lo vendor/gmp-6.3.0/mpn/mod_1_1.asm vendor/gmp-6.3.0/mpn/mod_1_1.lo vendor/gmp-6.3.0/mpn/mod_1_2.asm @@ -311,6 +314,8 @@ vendor/gmp-6.3.0/mpn/mod_1_3.c vendor/gmp-6.3.0/mpn/mod_1_3.lo vendor/gmp-6.3.0/mpn/mod_1_4.asm vendor/gmp-6.3.0/mpn/mod_1_4.lo +vendor/gmp-6.3.0/mpn/mod_1.c +vendor/gmp-6.3.0/mpn/mod_1.lo vendor/gmp-6.3.0/mpn/mod_34lsub1.asm vendor/gmp-6.3.0/mpn/mod_34lsub1.lo vendor/gmp-6.3.0/mpn/mode1o.asm @@ -321,38 +326,38 @@ vendor/gmp-6.3.0/mpn/mu_bdiv_q.c vendor/gmp-6.3.0/mpn/mu_bdiv_q.lo vendor/gmp-6.3.0/mpn/mu_bdiv_qr.c vendor/gmp-6.3.0/mpn/mu_bdiv_qr.lo +vendor/gmp-6.3.0/mpn/mu_divappr_q.c +vendor/gmp-6.3.0/mpn/mu_divappr_q.lo vendor/gmp-6.3.0/mpn/mu_div_q.c vendor/gmp-6.3.0/mpn/mu_div_q.lo vendor/gmp-6.3.0/mpn/mu_div_qr.c vendor/gmp-6.3.0/mpn/mu_div_qr.lo -vendor/gmp-6.3.0/mpn/mu_divappr_q.c -vendor/gmp-6.3.0/mpn/mu_divappr_q.lo -vendor/gmp-6.3.0/mpn/mul.c -vendor/gmp-6.3.0/mpn/mul.lo vendor/gmp-6.3.0/mpn/mul_1.asm vendor/gmp-6.3.0/mpn/mul_1.lo vendor/gmp-6.3.0/mpn/mul_2.asm vendor/gmp-6.3.0/mpn/mul_2.lo vendor/gmp-6.3.0/mpn/mul_basecase.asm vendor/gmp-6.3.0/mpn/mul_basecase.lo +vendor/gmp-6.3.0/mpn/mul.c vendor/gmp-6.3.0/mpn/mul_fft.c vendor/gmp-6.3.0/mpn/mul_fft.lo -vendor/gmp-6.3.0/mpn/mul_n.c -vendor/gmp-6.3.0/mpn/mul_n.lo +vendor/gmp-6.3.0/mpn/mul.lo vendor/gmp-6.3.0/mpn/mullo_basecase.asm vendor/gmp-6.3.0/mpn/mullo_basecase.lo vendor/gmp-6.3.0/mpn/mullo_n.c vendor/gmp-6.3.0/mpn/mullo_n.lo -vendor/gmp-6.3.0/mpn/mulmid.c -vendor/gmp-6.3.0/mpn/mulmid.lo vendor/gmp-6.3.0/mpn/mulmid_basecase.c vendor/gmp-6.3.0/mpn/mulmid_basecase.lo +vendor/gmp-6.3.0/mpn/mulmid.c +vendor/gmp-6.3.0/mpn/mulmid.lo vendor/gmp-6.3.0/mpn/mulmid_n.c vendor/gmp-6.3.0/mpn/mulmid_n.lo vendor/gmp-6.3.0/mpn/mulmod_bknp1.c vendor/gmp-6.3.0/mpn/mulmod_bknp1.lo vendor/gmp-6.3.0/mpn/mulmod_bnm1.c vendor/gmp-6.3.0/mpn/mulmod_bnm1.lo +vendor/gmp-6.3.0/mpn/mul_n.c +vendor/gmp-6.3.0/mpn/mul_n.lo vendor/gmp-6.3.0/mpn/nand_n.asm vendor/gmp-6.3.0/mpn/nand_n.lo vendor/gmp-6.3.0/mpn/neg.c @@ -376,10 +381,10 @@ vendor/gmp-6.3.0/mpn/powm.c vendor/gmp-6.3.0/mpn/powm.lo vendor/gmp-6.3.0/mpn/pre_mod_1.c vendor/gmp-6.3.0/mpn/pre_mod_1.lo -vendor/gmp-6.3.0/mpn/random.c -vendor/gmp-6.3.0/mpn/random.lo vendor/gmp-6.3.0/mpn/random2.c vendor/gmp-6.3.0/mpn/random2.lo +vendor/gmp-6.3.0/mpn/random.c +vendor/gmp-6.3.0/mpn/random.lo vendor/gmp-6.3.0/mpn/redc_1.asm vendor/gmp-6.3.0/mpn/redc_1.lo vendor/gmp-6.3.0/mpn/redc_2.c @@ -408,12 +413,12 @@ vendor/gmp-6.3.0/mpn/sbpi1_bdiv_qr.c vendor/gmp-6.3.0/mpn/sbpi1_bdiv_qr.lo vendor/gmp-6.3.0/mpn/sbpi1_bdiv_r.asm vendor/gmp-6.3.0/mpn/sbpi1_bdiv_r.lo +vendor/gmp-6.3.0/mpn/sbpi1_divappr_q.c +vendor/gmp-6.3.0/mpn/sbpi1_divappr_q.lo vendor/gmp-6.3.0/mpn/sbpi1_div_q.c vendor/gmp-6.3.0/mpn/sbpi1_div_q.lo vendor/gmp-6.3.0/mpn/sbpi1_div_qr.c vendor/gmp-6.3.0/mpn/sbpi1_div_qr.lo -vendor/gmp-6.3.0/mpn/sbpi1_divappr_q.c -vendor/gmp-6.3.0/mpn/sbpi1_divappr_q.lo vendor/gmp-6.3.0/mpn/scan0.c vendor/gmp-6.3.0/mpn/scan0.lo vendor/gmp-6.3.0/mpn/scan1.c @@ -444,40 +449,40 @@ vendor/gmp-6.3.0/mpn/set_str.c vendor/gmp-6.3.0/mpn/set_str.lo vendor/gmp-6.3.0/mpn/sizeinbase.c vendor/gmp-6.3.0/mpn/sizeinbase.lo -vendor/gmp-6.3.0/mpn/sqr.c -vendor/gmp-6.3.0/mpn/sqr.lo vendor/gmp-6.3.0/mpn/sqr_basecase.asm vendor/gmp-6.3.0/mpn/sqr_basecase.lo +vendor/gmp-6.3.0/mpn/sqr.c vendor/gmp-6.3.0/mpn/sqr_diag_addlsh1.asm vendor/gmp-6.3.0/mpn/sqr_diag_addlsh1.lo -vendor/gmp-6.3.0/mpn/sqrlo.c -vendor/gmp-6.3.0/mpn/sqrlo.lo +vendor/gmp-6.3.0/mpn/sqr.lo vendor/gmp-6.3.0/mpn/sqrlo_basecase.c vendor/gmp-6.3.0/mpn/sqrlo_basecase.lo +vendor/gmp-6.3.0/mpn/sqrlo.c +vendor/gmp-6.3.0/mpn/sqrlo.lo vendor/gmp-6.3.0/mpn/sqrmod_bnm1.c vendor/gmp-6.3.0/mpn/sqrmod_bnm1.lo vendor/gmp-6.3.0/mpn/sqrtrem.c vendor/gmp-6.3.0/mpn/sqrtrem.lo vendor/gmp-6.3.0/mpn/strongfibo.c vendor/gmp-6.3.0/mpn/strongfibo.lo -vendor/gmp-6.3.0/mpn/sub.c -vendor/gmp-6.3.0/mpn/sub.lo vendor/gmp-6.3.0/mpn/sub_1.c vendor/gmp-6.3.0/mpn/sub_1.lo +vendor/gmp-6.3.0/mpn/sub.c vendor/gmp-6.3.0/mpn/sub_err1_n.asm vendor/gmp-6.3.0/mpn/sub_err1_n.lo vendor/gmp-6.3.0/mpn/sub_err2_n.asm vendor/gmp-6.3.0/mpn/sub_err2_n.lo vendor/gmp-6.3.0/mpn/sub_err3_n.asm vendor/gmp-6.3.0/mpn/sub_err3_n.lo -vendor/gmp-6.3.0/mpn/sub_n.asm -vendor/gmp-6.3.0/mpn/sub_n.lo +vendor/gmp-6.3.0/mpn/sub.lo vendor/gmp-6.3.0/mpn/sublsh1_n.asm vendor/gmp-6.3.0/mpn/sublsh1_n.lo vendor/gmp-6.3.0/mpn/sublsh2_n.asm vendor/gmp-6.3.0/mpn/sublsh2_n.lo vendor/gmp-6.3.0/mpn/submul_1.asm vendor/gmp-6.3.0/mpn/submul_1.lo +vendor/gmp-6.3.0/mpn/sub_n.asm +vendor/gmp-6.3.0/mpn/sub_n.lo vendor/gmp-6.3.0/mpn/tdiv_qr.c vendor/gmp-6.3.0/mpn/tdiv_qr.lo vendor/gmp-6.3.0/mpn/toom22_mul.c @@ -510,14 +515,14 @@ vendor/gmp-6.3.0/mpn/toom62_mul.c vendor/gmp-6.3.0/mpn/toom62_mul.lo vendor/gmp-6.3.0/mpn/toom63_mul.c vendor/gmp-6.3.0/mpn/toom63_mul.lo -vendor/gmp-6.3.0/mpn/toom6_sqr.c -vendor/gmp-6.3.0/mpn/toom6_sqr.lo vendor/gmp-6.3.0/mpn/toom6h_mul.c vendor/gmp-6.3.0/mpn/toom6h_mul.lo -vendor/gmp-6.3.0/mpn/toom8_sqr.c -vendor/gmp-6.3.0/mpn/toom8_sqr.lo +vendor/gmp-6.3.0/mpn/toom6_sqr.c +vendor/gmp-6.3.0/mpn/toom6_sqr.lo vendor/gmp-6.3.0/mpn/toom8h_mul.c vendor/gmp-6.3.0/mpn/toom8h_mul.lo +vendor/gmp-6.3.0/mpn/toom8_sqr.c +vendor/gmp-6.3.0/mpn/toom8_sqr.lo vendor/gmp-6.3.0/mpn/toom_couple_handling.c vendor/gmp-6.3.0/mpn/toom_couple_handling.lo vendor/gmp-6.3.0/mpn/toom_eval_dgr3_pm1.c @@ -527,9 +532,9 @@ vendor/gmp-6.3.0/mpn/toom_eval_dgr3_pm2.lo vendor/gmp-6.3.0/mpn/toom_eval_pm1.c vendor/gmp-6.3.0/mpn/toom_eval_pm1.lo vendor/gmp-6.3.0/mpn/toom_eval_pm2.c -vendor/gmp-6.3.0/mpn/toom_eval_pm2.lo vendor/gmp-6.3.0/mpn/toom_eval_pm2exp.c vendor/gmp-6.3.0/mpn/toom_eval_pm2exp.lo +vendor/gmp-6.3.0/mpn/toom_eval_pm2.lo vendor/gmp-6.3.0/mpn/toom_eval_pm2rexp.c vendor/gmp-6.3.0/mpn/toom_eval_pm2rexp.lo vendor/gmp-6.3.0/mpn/toom_interpolate_12pts.c @@ -554,8 +559,6 @@ vendor/gmp-6.3.0/mpn/zero.c vendor/gmp-6.3.0/mpn/zero.lo vendor/gmp-6.3.0/mpn/zero_p.c vendor/gmp-6.3.0/mpn/zero_p.lo -vendor/gmp-6.3.0/mpq/.libs/ -vendor/gmp-6.3.0/mpq/Makefile vendor/gmp-6.3.0/mpq/abs.lo vendor/gmp-6.3.0/mpq/aors.lo vendor/gmp-6.3.0/mpq/canonicalize.lo @@ -566,8 +569,8 @@ vendor/gmp-6.3.0/mpq/cmp_si.lo vendor/gmp-6.3.0/mpq/cmp_ui.lo vendor/gmp-6.3.0/mpq/div.lo vendor/gmp-6.3.0/mpq/equal.lo -vendor/gmp-6.3.0/mpq/get_d.lo vendor/gmp-6.3.0/mpq/get_den.lo +vendor/gmp-6.3.0/mpq/get_d.lo vendor/gmp-6.3.0/mpq/get_num.lo vendor/gmp-6.3.0/mpq/get_str.lo vendor/gmp-6.3.0/mpq/init.lo @@ -575,36 +578,37 @@ vendor/gmp-6.3.0/mpq/inits.lo vendor/gmp-6.3.0/mpq/inp_str.lo vendor/gmp-6.3.0/mpq/inv.lo vendor/gmp-6.3.0/mpq/libmpq.la +vendor/gmp-6.3.0/mpq/.libs/ +vendor/gmp-6.3.0/mpq/Makefile vendor/gmp-6.3.0/mpq/md_2exp.lo vendor/gmp-6.3.0/mpq/mul.lo vendor/gmp-6.3.0/mpq/neg.lo vendor/gmp-6.3.0/mpq/out_str.lo -vendor/gmp-6.3.0/mpq/set.lo -vendor/gmp-6.3.0/mpq/set_d.lo vendor/gmp-6.3.0/mpq/set_den.lo +vendor/gmp-6.3.0/mpq/set_d.lo vendor/gmp-6.3.0/mpq/set_f.lo +vendor/gmp-6.3.0/mpq/set.lo vendor/gmp-6.3.0/mpq/set_num.lo vendor/gmp-6.3.0/mpq/set_si.lo vendor/gmp-6.3.0/mpq/set_str.lo vendor/gmp-6.3.0/mpq/set_ui.lo vendor/gmp-6.3.0/mpq/set_z.lo vendor/gmp-6.3.0/mpq/swap.lo -vendor/gmp-6.3.0/mpz/.libs/ +vendor/gmp-6.3.0/mp_set_fns.lo vendor/gmp-6.3.0/mpz/2fac_ui.lo -vendor/gmp-6.3.0/mpz/Makefile vendor/gmp-6.3.0/mpz/abs.lo vendor/gmp-6.3.0/mpz/add.lo vendor/gmp-6.3.0/mpz/add_ui.lo vendor/gmp-6.3.0/mpz/and.lo -vendor/gmp-6.3.0/mpz/aorsmul.lo vendor/gmp-6.3.0/mpz/aorsmul_i.lo +vendor/gmp-6.3.0/mpz/aorsmul.lo vendor/gmp-6.3.0/mpz/array_init.lo vendor/gmp-6.3.0/mpz/bin_ui.lo vendor/gmp-6.3.0/mpz/bin_uiui.lo vendor/gmp-6.3.0/mpz/cdiv_q.lo -vendor/gmp-6.3.0/mpz/cdiv_q_ui.lo vendor/gmp-6.3.0/mpz/cdiv_qr.lo vendor/gmp-6.3.0/mpz/cdiv_qr_ui.lo +vendor/gmp-6.3.0/mpz/cdiv_q_ui.lo vendor/gmp-6.3.0/mpz/cdiv_r.lo vendor/gmp-6.3.0/mpz/cdiv_r_ui.lo vendor/gmp-6.3.0/mpz/cdiv_ui.lo @@ -613,31 +617,31 @@ vendor/gmp-6.3.0/mpz/cfdiv_r_2exp.lo vendor/gmp-6.3.0/mpz/clear.lo vendor/gmp-6.3.0/mpz/clears.lo vendor/gmp-6.3.0/mpz/clrbit.lo -vendor/gmp-6.3.0/mpz/cmp.lo +vendor/gmp-6.3.0/mpz/cmpabs_d.lo +vendor/gmp-6.3.0/mpz/cmpabs.lo +vendor/gmp-6.3.0/mpz/cmpabs_ui.lo vendor/gmp-6.3.0/mpz/cmp_d.lo +vendor/gmp-6.3.0/mpz/cmp.lo vendor/gmp-6.3.0/mpz/cmp_si.lo vendor/gmp-6.3.0/mpz/cmp_ui.lo -vendor/gmp-6.3.0/mpz/cmpabs.lo -vendor/gmp-6.3.0/mpz/cmpabs_d.lo -vendor/gmp-6.3.0/mpz/cmpabs_ui.lo -vendor/gmp-6.3.0/mpz/com.lo vendor/gmp-6.3.0/mpz/combit.lo -vendor/gmp-6.3.0/mpz/cong.lo +vendor/gmp-6.3.0/mpz/com.lo vendor/gmp-6.3.0/mpz/cong_2exp.lo +vendor/gmp-6.3.0/mpz/cong.lo vendor/gmp-6.3.0/mpz/cong_ui.lo -vendor/gmp-6.3.0/mpz/dive_ui.lo vendor/gmp-6.3.0/mpz/divegcd.lo +vendor/gmp-6.3.0/mpz/dive_ui.lo vendor/gmp-6.3.0/mpz/divexact.lo -vendor/gmp-6.3.0/mpz/divis.lo vendor/gmp-6.3.0/mpz/divis_2exp.lo +vendor/gmp-6.3.0/mpz/divis.lo vendor/gmp-6.3.0/mpz/divis_ui.lo vendor/gmp-6.3.0/mpz/dump.lo vendor/gmp-6.3.0/mpz/export.lo vendor/gmp-6.3.0/mpz/fac_ui.lo vendor/gmp-6.3.0/mpz/fdiv_q.lo -vendor/gmp-6.3.0/mpz/fdiv_q_ui.lo vendor/gmp-6.3.0/mpz/fdiv_qr.lo vendor/gmp-6.3.0/mpz/fdiv_qr_ui.lo +vendor/gmp-6.3.0/mpz/fdiv_q_ui.lo vendor/gmp-6.3.0/mpz/fdiv_r.lo vendor/gmp-6.3.0/mpz/fdiv_r_ui.lo vendor/gmp-6.3.0/mpz/fdiv_ui.lo @@ -649,26 +653,26 @@ vendor/gmp-6.3.0/mpz/fits_sshort.lo vendor/gmp-6.3.0/mpz/fits_uint.lo vendor/gmp-6.3.0/mpz/fits_ulong.lo vendor/gmp-6.3.0/mpz/fits_ushort.lo +vendor/gmp-6.3.0/mpz/gcdext.lo vendor/gmp-6.3.0/mpz/gcd.lo vendor/gmp-6.3.0/mpz/gcd_ui.lo -vendor/gmp-6.3.0/mpz/gcdext.lo -vendor/gmp-6.3.0/mpz/get_d.lo vendor/gmp-6.3.0/mpz/get_d_2exp.lo +vendor/gmp-6.3.0/mpz/get_d.lo +vendor/gmp-6.3.0/mpz/getlimbn.lo vendor/gmp-6.3.0/mpz/get_si.lo vendor/gmp-6.3.0/mpz/get_str.lo vendor/gmp-6.3.0/mpz/get_ui.lo -vendor/gmp-6.3.0/mpz/getlimbn.lo vendor/gmp-6.3.0/mpz/hamdist.lo vendor/gmp-6.3.0/mpz/import.lo -vendor/gmp-6.3.0/mpz/init.lo vendor/gmp-6.3.0/mpz/init2.lo +vendor/gmp-6.3.0/mpz/init.lo vendor/gmp-6.3.0/mpz/inits.lo vendor/gmp-6.3.0/mpz/inp_raw.lo vendor/gmp-6.3.0/mpz/inp_str.lo vendor/gmp-6.3.0/mpz/invert.lo vendor/gmp-6.3.0/mpz/ior.lo -vendor/gmp-6.3.0/mpz/iset.lo vendor/gmp-6.3.0/mpz/iset_d.lo +vendor/gmp-6.3.0/mpz/iset.lo vendor/gmp-6.3.0/mpz/iset_si.lo vendor/gmp-6.3.0/mpz/iset_str.lo vendor/gmp-6.3.0/mpz/iset_ui.lo @@ -680,6 +684,7 @@ vendor/gmp-6.3.0/mpz/kronzu.lo vendor/gmp-6.3.0/mpz/lcm.lo vendor/gmp-6.3.0/mpz/lcm_ui.lo vendor/gmp-6.3.0/mpz/libmpz.la +vendor/gmp-6.3.0/mpz/.libs/ vendor/gmp-6.3.0/mpz/limbs_finish.lo vendor/gmp-6.3.0/mpz/limbs_modify.lo vendor/gmp-6.3.0/mpz/limbs_read.lo @@ -687,33 +692,34 @@ vendor/gmp-6.3.0/mpz/limbs_write.lo vendor/gmp-6.3.0/mpz/lucmod.lo vendor/gmp-6.3.0/mpz/lucnum2_ui.lo vendor/gmp-6.3.0/mpz/lucnum_ui.lo +vendor/gmp-6.3.0/mpz/Makefile vendor/gmp-6.3.0/mpz/mfac_uiui.lo vendor/gmp-6.3.0/mpz/millerrabin.lo vendor/gmp-6.3.0/mpz/mod.lo -vendor/gmp-6.3.0/mpz/mul.lo vendor/gmp-6.3.0/mpz/mul_2exp.lo +vendor/gmp-6.3.0/mpz/mul.lo vendor/gmp-6.3.0/mpz/mul_si.lo vendor/gmp-6.3.0/mpz/mul_ui.lo -vendor/gmp-6.3.0/mpz/n_pow_ui.lo vendor/gmp-6.3.0/mpz/neg.lo vendor/gmp-6.3.0/mpz/nextprime.lo +vendor/gmp-6.3.0/mpz/n_pow_ui.lo vendor/gmp-6.3.0/mpz/oddfac_1.lo vendor/gmp-6.3.0/mpz/out_raw.lo vendor/gmp-6.3.0/mpz/out_str.lo vendor/gmp-6.3.0/mpz/perfpow.lo vendor/gmp-6.3.0/mpz/perfsqr.lo vendor/gmp-6.3.0/mpz/popcount.lo -vendor/gmp-6.3.0/mpz/pow_ui.lo vendor/gmp-6.3.0/mpz/powm.lo vendor/gmp-6.3.0/mpz/powm_sec.lo vendor/gmp-6.3.0/mpz/powm_ui.lo +vendor/gmp-6.3.0/mpz/pow_ui.lo vendor/gmp-6.3.0/mpz/pprime_p.lo vendor/gmp-6.3.0/mpz/primorial_ui.lo vendor/gmp-6.3.0/mpz/prodlimbs.lo -vendor/gmp-6.3.0/mpz/random.lo vendor/gmp-6.3.0/mpz/random2.lo -vendor/gmp-6.3.0/mpz/realloc.lo +vendor/gmp-6.3.0/mpz/random.lo vendor/gmp-6.3.0/mpz/realloc2.lo +vendor/gmp-6.3.0/mpz/realloc.lo vendor/gmp-6.3.0/mpz/remove.lo vendor/gmp-6.3.0/mpz/roinit_n.lo vendor/gmp-6.3.0/mpz/root.lo @@ -721,29 +727,29 @@ vendor/gmp-6.3.0/mpz/rootrem.lo vendor/gmp-6.3.0/mpz/rrandomb.lo vendor/gmp-6.3.0/mpz/scan0.lo vendor/gmp-6.3.0/mpz/scan1.lo -vendor/gmp-6.3.0/mpz/set.lo +vendor/gmp-6.3.0/mpz/setbit.lo vendor/gmp-6.3.0/mpz/set_d.lo vendor/gmp-6.3.0/mpz/set_f.lo +vendor/gmp-6.3.0/mpz/set.lo vendor/gmp-6.3.0/mpz/set_q.lo vendor/gmp-6.3.0/mpz/set_si.lo vendor/gmp-6.3.0/mpz/set_str.lo vendor/gmp-6.3.0/mpz/set_ui.lo -vendor/gmp-6.3.0/mpz/setbit.lo -vendor/gmp-6.3.0/mpz/size.lo vendor/gmp-6.3.0/mpz/sizeinbase.lo +vendor/gmp-6.3.0/mpz/size.lo vendor/gmp-6.3.0/mpz/sqrt.lo vendor/gmp-6.3.0/mpz/sqrtrem.lo vendor/gmp-6.3.0/mpz/stronglucas.lo vendor/gmp-6.3.0/mpz/sub.lo vendor/gmp-6.3.0/mpz/sub_ui.lo vendor/gmp-6.3.0/mpz/swap.lo -vendor/gmp-6.3.0/mpz/tdiv_q.lo vendor/gmp-6.3.0/mpz/tdiv_q_2exp.lo -vendor/gmp-6.3.0/mpz/tdiv_q_ui.lo +vendor/gmp-6.3.0/mpz/tdiv_q.lo vendor/gmp-6.3.0/mpz/tdiv_qr.lo vendor/gmp-6.3.0/mpz/tdiv_qr_ui.lo -vendor/gmp-6.3.0/mpz/tdiv_r.lo +vendor/gmp-6.3.0/mpz/tdiv_q_ui.lo vendor/gmp-6.3.0/mpz/tdiv_r_2exp.lo +vendor/gmp-6.3.0/mpz/tdiv_r.lo vendor/gmp-6.3.0/mpz/tdiv_r_ui.lo vendor/gmp-6.3.0/mpz/tdiv_ui.lo vendor/gmp-6.3.0/mpz/tstbit.lo @@ -754,64 +760,64 @@ vendor/gmp-6.3.0/mpz/urandomm.lo vendor/gmp-6.3.0/mpz/xor.lo vendor/gmp-6.3.0/nextprime.lo vendor/gmp-6.3.0/primesieve.lo -vendor/gmp-6.3.0/printf/.libs/ -vendor/gmp-6.3.0/printf/Makefile vendor/gmp-6.3.0/printf/asprintf.lo vendor/gmp-6.3.0/printf/asprntffuns.lo -vendor/gmp-6.3.0/printf/doprnt.lo vendor/gmp-6.3.0/printf/doprntf.lo vendor/gmp-6.3.0/printf/doprnti.lo +vendor/gmp-6.3.0/printf/doprnt.lo vendor/gmp-6.3.0/printf/fprintf.lo vendor/gmp-6.3.0/printf/libprintf.la +vendor/gmp-6.3.0/printf/.libs/ +vendor/gmp-6.3.0/printf/Makefile vendor/gmp-6.3.0/printf/obprintf.lo vendor/gmp-6.3.0/printf/obprntffuns.lo vendor/gmp-6.3.0/printf/obvprintf.lo -vendor/gmp-6.3.0/printf/printf.lo vendor/gmp-6.3.0/printf/printffuns.lo +vendor/gmp-6.3.0/printf/printf.lo vendor/gmp-6.3.0/printf/repl-vsnprintf.lo vendor/gmp-6.3.0/printf/snprintf.lo vendor/gmp-6.3.0/printf/snprntffuns.lo -vendor/gmp-6.3.0/printf/sprintf.lo vendor/gmp-6.3.0/printf/sprintffuns.lo +vendor/gmp-6.3.0/printf/sprintf.lo vendor/gmp-6.3.0/printf/vasprintf.lo vendor/gmp-6.3.0/printf/vfprintf.lo vendor/gmp-6.3.0/printf/vprintf.lo vendor/gmp-6.3.0/printf/vsnprintf.lo vendor/gmp-6.3.0/printf/vsprintf.lo +vendor/gmp-6.3.0/rand/librandom.la vendor/gmp-6.3.0/rand/.libs/ vendor/gmp-6.3.0/rand/Makefile -vendor/gmp-6.3.0/rand/librandom.la -vendor/gmp-6.3.0/rand/rand.lo vendor/gmp-6.3.0/rand/randbui.lo vendor/gmp-6.3.0/rand/randclr.lo vendor/gmp-6.3.0/rand/randdef.lo vendor/gmp-6.3.0/rand/randiset.lo vendor/gmp-6.3.0/rand/randlc2s.lo vendor/gmp-6.3.0/rand/randlc2x.lo +vendor/gmp-6.3.0/rand/rand.lo vendor/gmp-6.3.0/rand/randmt.lo vendor/gmp-6.3.0/rand/randmts.lo vendor/gmp-6.3.0/rand/randmui.lo -vendor/gmp-6.3.0/rand/rands.lo vendor/gmp-6.3.0/rand/randsd.lo vendor/gmp-6.3.0/rand/randsdui.lo -vendor/gmp-6.3.0/scanf/.libs/ -vendor/gmp-6.3.0/scanf/Makefile +vendor/gmp-6.3.0/rand/rands.lo vendor/gmp-6.3.0/scanf/doscan.lo -vendor/gmp-6.3.0/scanf/fscanf.lo vendor/gmp-6.3.0/scanf/fscanffuns.lo +vendor/gmp-6.3.0/scanf/fscanf.lo +vendor/gmp-6.3.0/scanf/.libs/ vendor/gmp-6.3.0/scanf/libscanf.la +vendor/gmp-6.3.0/scanf/Makefile vendor/gmp-6.3.0/scanf/scanf.lo -vendor/gmp-6.3.0/scanf/sscanf.lo vendor/gmp-6.3.0/scanf/sscanffuns.lo +vendor/gmp-6.3.0/scanf/sscanf.lo vendor/gmp-6.3.0/scanf/vfscanf.lo vendor/gmp-6.3.0/scanf/vscanf.lo vendor/gmp-6.3.0/scanf/vsscanf.lo vendor/gmp-6.3.0/sieve_table.h vendor/gmp-6.3.0/stamp-h1 vendor/gmp-6.3.0/tal-reent.lo -vendor/gmp-6.3.0/tests/Makefile vendor/gmp-6.3.0/tests/cxx/Makefile vendor/gmp-6.3.0/tests/devel/Makefile +vendor/gmp-6.3.0/tests/Makefile vendor/gmp-6.3.0/tests/misc/Makefile vendor/gmp-6.3.0/tests/mpf/Makefile vendor/gmp-6.3.0/tests/mpn/Makefile diff --git a/make.c b/make.c index caeff2a..c57362d 100644 --- a/make.c +++ b/make.c @@ -54,20 +54,19 @@ static char *argv0; static bool fflag, Fflag, rflag, Sflag; static int simd_flags; -static void cc(void *); -static void gperf(void *); static void ld(void); static void mkgmp(int); static bool tagvalid(const char *); static void chk_cpu_flags(void); static int globerr(const char *, int); +static tjob cc, cc_test, gperf; static void usage(void) { fprintf(stderr, "Usage: %s [-frS]\n" - " %s clean\n", + " %s clean | distclean | test\n", argv0, argv0); exit(EXIT_FAILURE); } @@ -107,13 +106,25 @@ main(int argc, char **argv) if (argc > 0) { if (strcmp("clean", *argv) == 0) { - strspushl(&cmd, "find", ".", "(", "-name", TARGET, "-or", "-name", - "*.o", "-or", "-name", "*.gen.c", ")", "-delete"); + strspushl(&cmd, "find", ".", + "(", + "-name", TARGET, + "-or", "-name", "*.o", + "-or", "-name", "*.gen.c", + "-or", "-path", "./test/*", "-and", "-executable", + ")", "-delete" + ); cmdput(cmd); return cmdexec(cmd); } else if (strcmp("distclean", *argv) == 0) { - strspushl(&cmd, "find", ".", "(", "-name", TARGET, "-or", "-name", - "*.o", "-or", "-name", "*.gen.c", ")", "-delete"); + strspushl(&cmd, "find", ".", + "(", + "-name", TARGET, + "-or", "-name", "*.o", + "-or", "-name", "*.gen.c", + "-or", "-path", "./test/*", "-and", "-executable", + ")", "-delete" + ); cmdput(cmd); cmdexec(cmd); assert(chdir(GMPDIR) != -1); @@ -121,6 +132,11 @@ main(int argc, char **argv) strspushl(&cmd, "make", "distclean"); cmdput(cmd); return cmdexec(cmd); + } else if (strcmp("test", *argv) == 0) { + strspushl(&cmd, "find", "test", "-type", "f", "-executable", + "-exec", "{}", ";"); + cmdput(cmd); + return cmdexec(cmd); } else { fprintf(stderr, "%s: invalid subcommand — ‘%s’\n", argv0, *argv); usage(); @@ -139,18 +155,27 @@ main(int argc, char **argv) tpinit(&tp, procs); glob_t g; - assert(glob("src/*.gperf", 0, globerr, &g) == 0); + /* GNU Perf files */ + assert(glob("src/*.gperf", 0, globerr, &g) == 0); for (size_t i = 0; i < g.gl_pathc; i++) tpenq(&tp, gperf, g.gl_pathv[i], NULL); tpwait(&tp); + /* C files */ globfree(&g); assert(glob("src/*.c", 0, globerr, &g) == 0); - for (size_t i = 0; i < g.gl_pathc; i++) tpenq(&tp, cc, g.gl_pathv[i], NULL); tpwait(&tp); + + /* Tests */ + globfree(&g); + assert(glob("test/*.c", 0, globerr, &g) == 0); + for (size_t i = 0; i < g.gl_pathc; i++) + tpenq(&tp, cc_test, g.gl_pathv[i], NULL); + tpwait(&tp); + tpfree(&tp); ld(); @@ -193,6 +218,54 @@ out: free(dst); } +void +cc_test(void *arg) +{ + struct strs cmd = {0}; + char *dst, *src = arg; + + assert((dst = strdup(src)) != NULL); + *strchr(dst, '.') = 0; + + struct deps { + char *tst; + char **objs; + size_t len; + } deps[] = { + {"test/arena", (char *[]){"src/arena.o"}, 1}, + }; + + struct deps d; + for (size_t i = 0; i < lengthof(deps); i++) { + if (strcmp(deps[i].tst, dst) == 0) { + d = deps[i]; + break; + } + } + + if (!fflag && !foutdated(dst, d.objs, d.len) && !foutdatedl(dst, src)) + goto out; + + strspushenvl(&cmd, "CC", "cc"); + strspush(&cmd, cflags_all, lengthof(cflags_all)); + if (rflag) + strspushenv(&cmd, "CFLAGS", cflags_rls, lengthof(cflags_rls)); + else + strspushenv(&cmd, "CFLAGS", cflags_dbg, lengthof(cflags_dbg)); + if (!rflag && !Sflag) + strspushl(&cmd, "-fsanitize=address,undefined"); + if (simd_flags != 0) + strspushl(&cmd, "-DORYX_SIMD=1"); + strspushl(&cmd, "-Isrc", "-o", dst, src); + strspush(&cmd, d.objs, d.len); + + cmdput(cmd); + cmdexec(cmd); + strsfree(&cmd); +out: + free(dst); +} + void gperf(void *arg) { diff --git a/src/alloc.h b/src/alloc.h index bc4bd69..8ac1f1f 100644 --- a/src/alloc.h +++ b/src/alloc.h @@ -6,6 +6,14 @@ #include "common.h" +/* Callers should not modify _ARENA_DFLT_CAP. This is included here so + that it can be accessed from the automated tests. */ +#if DEBUG +# define _ARENA_DFLT_CAP (8) +#else +# define _ARENA_DFLT_CAP (2 * 1024) +#endif + typedef struct _arena *arena_t; typedef struct { void *p; diff --git a/src/arena.c b/src/arena.c index 525acfe..20083b5 100644 --- a/src/arena.c +++ b/src/arena.c @@ -16,12 +16,6 @@ # error "System not supported (missing MAP_ANON)" #endif -#if DEBUG -# define ARENA_DFLT_CAP (8) -#else -# define ARENA_DFLT_CAP (2048) -#endif - #define MAX(x, y) ((x) > (y) ? (x) : (y)) #define IS_POW_2(n) ((n) != 0 && ((n) & ((n)-1)) == 0) @@ -68,7 +62,7 @@ arena_alloc(struct _arena **a, size_t nmemb, size_t size, size_t align) } /* No page exists with enough space */ - struct _arena *p = mkblk(MAX(size, ARENA_DFLT_CAP)); + struct _arena *p = mkblk(MAX(size, _ARENA_DFLT_CAP)); p->next = *a; *a = p; p->free = (char *)p->data + size; diff --git a/test/arena.c b/test/arena.c new file mode 100644 index 0000000..58b3076 --- /dev/null +++ b/test/arena.c @@ -0,0 +1,135 @@ +#include + +#include +#include +#include +#include + +#include "alloc.h" +#include "test-internal.h" + +#define lengthof(xs) (sizeof(xs) / sizeof(*(xs))) + +static void make_and_free(void), + make_and_resize(void), + free_empty_arena(void), + make_snapshot(void); + +int +main(void) +{ + make_and_free(); + make_and_resize(); + free_empty_arena(); + make_snapshot(); + return rv; +} + +void +make_and_free(void) +{ + arena_t a = NULL; + int *xs = arena_new(&a, int, 69); + + for (size_t i = 0; i < 69; i++) + xs[i] = i; + + arena_free(&a); +} + +void +make_and_resize(void) +{ + arena_t a = NULL; + size_t *xs = arena_new(&a, size_t, 100); + for (size_t i = 0; i < 100; i++) + xs[i] = i; + + static size_t ranges[][2] = { + { 100, 1000}, + { 1000, 10000}, + {10000, 100000}, + }; + + for (size_t i = 0; i < lengthof(ranges); i++) { + size_t lo = ranges[i][0]; + size_t hi = ranges[i][1]; + + xs = arena_grow(&a, xs, size_t, lo, hi); + for (size_t j = lo; j < hi; j++) + xs[j] = j; + } + + for (size_t i = 0; i < ranges[lengthof(ranges) - 1][1]; i++) + oryx_assert(xs[i] == i); + +cleanup: + arena_free(&a); +} + +void +free_empty_arena(void) +{ + arena_free(&(arena_t){0}); +} + +void +make_snapshot(void) +{ + arena_t a = NULL; + + char *p1, *p2, *p3; + snapshot_t s1, s2, s3; + + /* The arena by default is backed my mmap(), and makes pages of size + _ARENA_DFLT_CAP or larger. This means we can test to see if the + arena snapshotting is properly implemented by: + + 1. Creating allocations of the blocksize. This ensures each + allocation is on its own page as allocated by mmap(2). + 2. Creating a snapshot before each allocation. + 3. Restoring snapshots and checking to see which pages are still + valid via mincore() which errors with ENOMEM if the page isn’t + mapped. + + Technically mincore() is non-standard… but it exists on all major + BSDs as well as Linux and Darwin. */ + + s1 = arena_snapshot_create(a); p1 = arena_new(&a, char, _ARENA_DFLT_CAP); + s2 = arena_snapshot_create(a); p2 = arena_new(&a, char, _ARENA_DFLT_CAP); + s3 = arena_snapshot_create(a); p3 = arena_new(&a, char, _ARENA_DFLT_CAP); + + unsigned char *vec = NULL; + size_t pagesz = (size_t)sysconf(_SC_PAGESIZE); + oryx_assert(pagesz != (size_t)-1); + + /* Vector size documented in mincore(2) */ + vec = malloc((_ARENA_DFLT_CAP + pagesz - 1) / pagesz); + oryx_assert(vec != NULL); + + errno = 0; mincore(p1, _ARENA_DFLT_CAP, vec); oryx_assert(errno == 0); + errno = 0; mincore(p2, _ARENA_DFLT_CAP, vec); oryx_assert(errno == 0); + errno = 0; mincore(p3, _ARENA_DFLT_CAP, vec); oryx_assert(errno == 0); + + arena_snapshot_restore(&a, s3); + errno = 0; mincore(p1, _ARENA_DFLT_CAP, vec); oryx_assert(errno == 0); + errno = 0; mincore(p2, _ARENA_DFLT_CAP, vec); oryx_assert(errno == 0); + errno = 0; mincore(p3, _ARENA_DFLT_CAP, vec); oryx_assert(errno == ENOMEM); + oryx_assert(a != NULL); + + arena_snapshot_restore(&a, s2); + errno = 0; mincore(p1, _ARENA_DFLT_CAP, vec); oryx_assert(errno == 0); + errno = 0; mincore(p2, _ARENA_DFLT_CAP, vec); oryx_assert(errno == ENOMEM); + errno = 0; mincore(p3, _ARENA_DFLT_CAP, vec); oryx_assert(errno == ENOMEM); + oryx_assert(a != NULL); + + arena_snapshot_restore(&a, s1); + errno = 0; mincore(p1, _ARENA_DFLT_CAP, vec); oryx_assert(errno == ENOMEM); + errno = 0; mincore(p2, _ARENA_DFLT_CAP, vec); oryx_assert(errno == ENOMEM); + errno = 0; mincore(p3, _ARENA_DFLT_CAP, vec); oryx_assert(errno == ENOMEM); + oryx_assert(a == NULL); + +cleanup: + free(vec); + arena_free(&a); +} diff --git a/test/test-internal.h b/test/test-internal.h new file mode 100644 index 0000000..78f5e7b --- /dev/null +++ b/test/test-internal.h @@ -0,0 +1,20 @@ +#ifndef ORYX_TEST_INTERNAL_H +#define ORYX_TEST_INTERNAL_H + +#include +#include + +static int rv; + +#define oryx_assert(expr) \ + do { \ + if (!(expr)) { \ + fprintf(stderr, "%s:%d: Test ‘%s’ failed\n", __FILE__, __LINE__, \ + __func__); \ + fprintf(stderr, "\tFailing expression: ‘%s’\n", #expr); \ + rv = EXIT_FAILURE; \ + goto cleanup; \ + } \ + } while (0) + +#endif /* !ORYX_TEST_INTERNAL_H */ -- cgit v1.2.3