diff options
| -rw-r--r-- | .gitignore | 282 | ||||
| -rw-r--r-- | make.c | 91 | ||||
| -rw-r--r-- | src/alloc.h | 8 | ||||
| -rw-r--r-- | src/arena.c | 8 | ||||
| -rw-r--r-- | test/arena.c | 135 | ||||
| -rw-r--r-- | test/test-internal.h | 20 | 
6 files changed, 390 insertions, 154 deletions
| @@ -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 @@ -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(); @@ -194,6 +219,54 @@ out:  }  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)  {  	struct strs cmd = {0}; 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 <sys/mman.h> + +#include <errno.h> +#include <stddef.h> +#include <stdlib.h> +#include <unistd.h> + +#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 <stdio.h> +#include <stdlib.h> + +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 */ |