"word too long" on SGI..

Marc Glisse marc.glisse at normalesup.org
Sun Aug 30 04:49:35 CEST 2009


On Wed, 26 Aug 2009, Tovrea, George W (US SSA) wrote:

> System:
>
> uname -m = IP35
> uname -r = 6.5
> uname -s = IRIX64
> uname -v = 07010238
>
> /usr/bin/uname -p = mips
>
> I am getting the following error in gmp when attempting to compile GCC 4.4.0:
>
> /bin/sh ./libtool --mode=link /home/users/tovrea/GCC_SGI2/build_sgi6/./prev-gcc/xgcc -B/home/users/tovrea/GCC_SGI2/build_sgi6/./prev-gcc/ -B/home/users/tovrea/local/sgi6/mips-sgi-irix6.5/bin/  -g -O2   -o libgmp.la -rpath /home/users/tovrea/local/sgi6/lib   -version-info 8:0:5 assert.lo compat.lo errno.lo extract-dbl.lo invalid.lo memory.lo mp_bpl.lo mp_clz_tab.lo mp_dv_tab.lo mp_minv_tab.lo mp_get_fns.lo mp_set_fns.lo rand.lo randclr.lo randdef.lo randiset.lo randlc2s.lo randlc2x.lo randmt.lo randmts.lo rands.lo randsd.lo randsdui.lo randbui.lo randmui.lo version.lo tal-reent.lo mpf/init.lo mpf/init2.lo mpf/set.lo mpf/set_ui.lo mpf/set_si.lo mpf/set_str.lo mpf/set_d.lo mpf/set_z.lo mpf/iset.lo mpf/iset_ui.lo mpf/iset_si.lo mpf/iset_str.lo mpf/iset_d.lo mpf/clear.lo mpf/get_str.lo mpf/dump.lo mpf/size.lo mpf/eq.lo mpf/reldiff.lo mpf/sqrt.lo mpf/random2.lo mpf/inp_str.lo mpf/out_str.lo mpf/add.lo mpf/add_ui.lo mpf/sub.lo mpf/sub_ui.lo mpf/ui_sub.lo mpf/mul.lo mpf/mul_ui.lo mpf
> /div.lo mpf/div_ui.lo mpf/cmp.lo mpf/cmp_d.lo mpf/cmp_ui.lo mpf/cmp_si.lo mpf/mul_2exp.lo mpf/div_2exp.lo mpf/abs.lo mpf/neg.lo mpf/set_q.lo mpf/get_d.lo mpf/get_d_2exp.lo mpf/set_dfl_prec.lo mpf/set_prc.lo mpf/set_prc_raw.lo mpf/get_dfl_prec.lo mpf/get_prc.lo mpf/ui_div.lo mpf/sqrt_ui.lo mpf/ceilfloor.lo mpf/trunc.lo mpf/pow_ui.lo mpf/urandomb.lo mpf/swap.lo mpf/fits_sint.lo mpf/fits_slong.lo mpf/fits_sshort.lo mpf/fits_uint.lo mpf/fits_ulong.lo mpf/fits_ushort.lo mpf/get_si.lo mpf/get_ui.lo mpf/int_p.lo mpz/abs.lo mpz/add.lo mpz/add_ui.lo mpz/aorsmul.lo mpz/aorsmul_i.lo mpz/and.lo mpz/array_init.lo mpz/bin_ui.lo mpz/bin_uiui.lo mpz/cdiv_q.lo mpz/cdiv_q_ui.lo mpz/cdiv_qr.lo mpz/cdiv_qr_ui.lo mpz/cdiv_r.lo mpz/cdiv_r_ui.lo mpz/cdiv_ui.lo mpz/cfdiv_q_2exp.lo mpz/cfdiv_r_2exp.lo mpz/clear.lo mpz/clrbit.lo mpz/cmp.lo mpz/cmp_d.lo mpz/cmp_si.lo mpz/cmp_ui.lo mpz/cmpabs.lo mpz/cmpabs_d.lo mpz/cmpabs_ui.lo mpz/com.lo mpz/combit.lo mpz/cong.lo mpz/cong_2exp.lo mpz/cong_ui.lo mpz/di
> vexact.lo mpz/divegcd.lo mpz/dive_ui.lo mpz/divis.lo mpz/divis_ui.lo mpz/divis_2exp.lo mpz/dump.lo mpz/export.lo mpz/fac_ui.lo mpz/fdiv_q.lo mpz/fdiv_q_ui.lo mpz/fdiv_qr.lo mpz/fdiv_qr_ui.lo mpz/fdiv_r.lo mpz/fdiv_r_ui.lo mpz/fdiv_ui.lo mpz/fib_ui.lo mpz/fib2_ui.lo mpz/fits_sint.lo mpz/fits_slong.lo mpz/fits_sshort.lo mpz/fits_uint.lo mpz/fits_ulong.lo mpz/fits_ushort.lo mpz/gcd.lo mpz/gcd_ui.lo mpz/gcdext.lo mpz/get_d.lo mpz/get_d_2exp.lo mpz/get_si.lo mpz/get_str.lo mpz/get_ui.lo mpz/getlimbn.lo mpz/hamdist.lo mpz/import.lo mpz/init.lo mpz/init2.lo mpz/inp_raw.lo mpz/inp_str.lo mpz/invert.lo mpz/ior.lo mpz/iset.lo mpz/iset_d.lo mpz/iset_si.lo mpz/iset_str.lo mpz/iset_ui.lo mpz/jacobi.lo mpz/kronsz.lo mpz/kronuz.lo mpz/kronzs.lo mpz/kronzu.lo mpz/lcm.lo mpz/lcm_ui.lo mpz/lucnum_ui.lo mpz/lucnum2_ui.lo mpz/millerrabin.lo mpz/mod.lo mpz/mul.lo mpz/mul_2exp.lo mpz/mul_si.lo mpz/mul_ui.lo mpz/n_pow_ui.lo mpz/neg.lo mpz/nextprime.lo mpz/out_raw.lo mpz/out_str.lo mpz/perfpow.lo m
> pz/perfsqr.lo mpz/popcount.lo mpz/pow_ui.lo mpz/powm.lo mpz/powm_ui.lo mpz/pprime_p.lo mpz/random.lo mpz/random2.lo mpz/realloc.lo mpz/realloc2.lo mpz/remove.lo mpz/root.lo mpz/rootrem.lo mpz/rrandomb.lo mpz/scan0.lo mpz/scan1.lo mpz/set.lo mpz/set_d.lo mpz/set_f.lo mpz/set_q.lo mpz/set_si.lo mpz/set_str.lo mpz/set_ui.lo mpz/setbit.lo mpz/size.lo mpz/sizeinbase.lo mpz/sqrt.lo mpz/sqrtrem.lo mpz/sub.lo mpz/sub_ui.lo mpz/swap.lo mpz/tdiv_ui.lo mpz/tdiv_q.lo mpz/tdiv_q_2exp.lo mpz/tdiv_q_ui.lo mpz/tdiv_qr.lo mpz/tdiv_qr_ui.lo mpz/tdiv_r.lo mpz/tdiv_r_2exp.lo mpz/tdiv_r_ui.lo mpz/tstbit.lo mpz/ui_pow_ui.lo mpz/ui_sub.lo mpz/urandomb.lo mpz/urandomm.lo mpz/xor.lo mpq/abs.lo mpq/aors.lo mpq/canonicalize.lo mpq/clear.lo mpq/cmp.lo mpq/cmp_si.lo mpq/cmp_ui.lo mpq/div.lo mpq/get_d.lo mpq/get_den.lo mpq/get_num.lo mpq/get_str.lo mpq/init.lo mpq/inp_str.lo mpq/inv.lo mpq/md_2exp.lo mpq/mul.lo mpq/neg.lo mpq/out_str.lo mpq/set.lo mpq/set_den.lo mpq/set_num.lo mpq/set_si.lo mpq/set_str.l
> o mpq/set_ui.lo mpq/equal.lo mpq/set_z.lo mpq/set_d.lo mpq/set_f.lo mpq/swap.lo mpn/fib_table.lo mpn/mp_bases.lo  mpn/add.lo mpn/add_1.lo mpn/add_n.lo mpn/sub.lo mpn/sub_1.lo mpn/sub_n.lo mpn/neg_n.lo mpn/mul_1.lo mpn/addmul_1.lo mpn/submul_1.lo mpn/lshift.lo mpn/rshift.lo mpn/dive_1.lo mpn/diveby3.lo mpn/divis.lo mpn/divrem.lo mpn/divrem_1.lo mpn/divrem_2.lo mpn/fib2_ui.lo mpn/mod_1.lo mpn/mod_34lsub1.lo mpn/mode1o.lo mpn/pre_divrem_1.lo mpn/pre_mod_1.lo mpn/dump.lo mpn/mod_1_1.lo mpn/mod_1_2.lo mpn/mod_1_3.lo mpn/mod_1_4.lo mpn/mul.lo mpn/mul_fft.lo mpn/mul_n.lo mpn/mul_basecase.lo mpn/sqr_basecase.lo mpn/random.lo mpn/random2.lo mpn/pow_1.lo mpn/rootrem.lo mpn/sqrtrem.lo mpn/get_str.lo mpn/set_str.lo mpn/scan0.lo mpn/scan1.lo mpn/popcount.lo mpn/hamdist.lo mpn/cmp.lo mpn/perfsqr.lo mpn/bdivmod.lo mpn/gcd_1.lo mpn/gcd.lo mpn/gcdext_1.lo mpn/gcdext.lo mpn/gcd_lehmer.lo mpn/gcd_subdiv_step.lo mpn/gcdext_lehmer.lo mpn/gcdext_subdiv_step.lo mpn/tdiv_qr.lo mpn/dc_divrem_n.lo mp
> n/sb_divrem_mn.lo mpn/jacbase.lo mpn/get_d.lo mpn/matrix22_mul.lo mpn/hgcd2.lo mpn/hgcd.lo mpn/mullow_n.lo mpn/mullow_basecase.lo mpn/toom22_mul.lo mpn/toom33_mul.lo mpn/toom44_mul.lo mpn/toom32_mul.lo mpn/toom42_mul.lo mpn/toom62_mul.lo mpn/toom53_mul.lo mpn/toom2_sqr.lo mpn/toom3_sqr.lo mpn/toom4_sqr.lo mpn/toom_interpolate_5pts.lo mpn/toom_interpolate_7pts.lo mpn/invert.lo mpn/binvert.lo mpn/sb_div_qr.lo mpn/sb_divappr_q.lo mpn/sb_div_q.lo mpn/dc_div_qr.lo mpn/dc_divappr_q.lo mpn/dc_div_q.lo mpn/mu_div_qr.lo mpn/mu_divappr_q.lo mpn/mu_div_q.lo mpn/sb_bdiv_q.lo mpn/sb_bdiv_qr.lo mpn/dc_bdiv_q.lo mpn/dc_bdiv_qr.lo mpn/mu_bdiv_q.lo mpn/mu_bdiv_qr.lo mpn/divexact.lo mpn/bdiv_dbm1c.lo mpn/redc_1.lo mpn/redc_2.lo mpn/powm.lo mpn/powlo.lo mpn/powm_sec.lo mpn/subcnd_n.lo mpn/addsub_n.lo printf/asprintf.lo printf/asprntffuns.lo printf/doprnt.lo printf/doprntf.lo printf/doprnti.lo printf/fprintf.lo printf/obprintf.lo printf/obvprintf.lo printf/obprntffuns.lo printf/printf.lo printf
> /printffuns.lo printf/snprintf.lo printf/snprntffuns.lo printf/sprintf.lo printf/sprintffuns.lo printf/vasprintf.lo printf/vfprintf.lo printf/vprintf.lo printf/vsnprintf.lo printf/vsprintf.lo printf/repl-vsnprintf.lo  scanf/doscan.lo scanf/fscanf.lo scanf/fscanffuns.lo scanf/scanf.lo scanf/sscanf.lo scanf/sscanffuns.lo scanf/vfscanf.lo scanf/vscanf.lo scanf/vsscanf.lo
> make[5]: execvp: /bin/sh: Arg list too long
> make[5]: *** [libgmp.la] Error 127
>
> Is there a way to work around this problem?

There are several ways to work around it manually, but I can't think of 
one that would integrate nicely in upstream sources.

If you have an incremental linker, you could use it to link files 
progressively. You could also create archives of all the object files 
(either several archives or one built incrementally) and then build a 
shared object out of it (--whole-archive with gnu ld).

Some projects, instead of compiling all files separately, create a file 
all.c that #includes all the source files. It wouldn't work in gmp without 
some modifications, because some object files rely on including headers 
with particular macros defined.

-- 
Marc Glisse


More information about the gmp-bugs mailing list