Message ID | 53C699E2.3060502@arm.com |
---|---|
State | New |
Headers | show |
Well, I was lucky enough to gain access to an alpha pca56 for a day (I say lucky, this may not be repeatable!). However I was not able to build the Ada frontend, due (AFAICT) to the image being too big for relocations. (Moreover, my understanding is that the default memory model for Alpha, is the largest memory model.) I used pristine 4.9.1 sources, host compiler $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/alpha-linux-gnu/4.9/lto-wrapper Target: alpha-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.1-1' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libssp --disable-libmudflap --disable-libitm --disable-libsanitizer --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-alpha/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-alpha --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-alpha --with-arch-directory=alpha --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --with-long-double-128 --enable-checking=release --build=alpha-linux-gnu --host=alpha-linux-gnu --target=alpha-linux-gnu Thread model: posix gcc version 4.9.1 (Debian 4.9.1-1) and gnat-4.3 (as per http://archive.debian.net/lenny/alpha/gnat-4.3/download), and performed $ ../gcc-4.9.1/configure --enable-languages=c,ada --disable-bootstrap --enable-libada --prefix=/home/alan/install --disable-nls --disable-threads --disable-tls (config.log attached) then $ make all-gcc which after approx 8 hours, finally died with the error message below. Given no-one has responded to my previous message, I'm left wondering if Ada still builds on Alpha, and if not, then should we be worrying about code generation bugs in it? (even, dare I say it, hypothetical code generation bugs?) --Alan ----- g++ -g -O2 -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc -o gnat1 ada/adadecode.o ada/adaint.o ada/argv.o ada/cio.o ada/cstreams.o ada/env.o ada/init.o ada/initialize.o ada/raise.o ada/seh_init.o ada/targext.o ada/cuintp.o ada/decl.o ada/misc.o ada/utils.o ada/utils2.o ada/trans.o ada/targtyps.o ada/a-charac.o ada/a-chlat1.o ada/a-elchha.o ada/a-except.o ada/a-ioexce.o ada/ada.o ada/spark_xrefs.o ada/ali.o ada/alloc.o ada/aspects.o ada/atree.o ada/butil.o ada/casing.o ada/checks.o ada/comperr.o ada/csets.o ada/cstand.o ada/debug.o ada/debug_a.o ada/einfo.o ada/elists.o ada/err_vars.o ada/errout.o ada/erroutc.o ada/eval_fat.o ada/exp_aggr.o ada/exp_spark.o ada/exp_atag.o ada/exp_attr.o ada/exp_cg.o ada/exp_ch11.o ada/exp_ch12.o ada/exp_ch13.o ada/exp_ch2.o ada/exp_ch3.o ada/exp_ch4.o ada/exp_ch5.o ada/exp_ch6.o ada/exp_ch7.o ada/exp_ch8.o ada/exp_ch9.o ada/exp_code.o ada/exp_dbug.o ada/exp_disp.o ada/exp_dist.o ada/exp_fixd.o ada/exp_imgv.o ada/exp_intr.o ada/exp_pakd.o ada/exp_prag.o ada/exp_sel.o ada/exp_smem.o ada/exp_strm.o ada/exp_tss.o ada/exp_util.o ada/exp_vfpt.o ada/expander.o ada/fmap.o ada/fname-uf.o ada/fname.o ada/freeze.o ada/frontend.o ada/g-byorma.o ada/g-hesora.o ada/g-htable.o ada/g-spchge.o ada/g-speche.o ada/g-u3spch.o ada/get_spark_xrefs.o ada/get_targ.o ada/gnat.o ada/gnatvsn.o ada/hostparm.o ada/impunit.o ada/inline.o ada/interfac.o ada/itypes.o ada/krunch.o ada/layout.o ada/lib-load.o ada/lib-util.o ada/lib-writ.o ada/lib-xref.o ada/lib.o ada/live.o ada/namet-sp.o ada/namet.o ada/nlists.o ada/nmake.o ada/opt.o ada/osint-c.o ada/osint.o ada/output.o ada/par.o ada/par_sco.o ada/prep.o ada/prepcomp.o ada/put_spark_xrefs.o ada/put_scos.o ada/repinfo.o ada/restrict.o ada/rident.o ada/rtsfind.o ada/s-addope.o ada/s-assert.o ada/s-bitops.o ada/s-carun8.o ada/s-casuti.o ada/s-conca2.o ada/s-conca3.o ada/s-conca4.o ada/s-conca5.o ada/s-conca6.o ada/s-conca7.o ada/s-conca8.o ada/s-conca9.o ada/s-crc32.o ada/s-crtl.o ada/s-excdeb.o ada/s-except.o ada/s-exctab.o ada/s-htable.o ada/s-imenne.o ada/s-imgenu.o ada/s-mastop.o ada/s-memory.o ada/s-os_lib.o ada/s-parame.o ada/s-purexc.o ada/s-restri.o ada/s-secsta.o ada/s-soflin.o ada/s-sopco3.o ada/s-sopco4.o ada/s-sopco5.o ada/s-stache.o ada/s-stalib.o ada/s-stoele.o ada/s-strcom.o ada/s-strhas.o ada/s-string.o ada/s-strops.o ada/s-traent.o ada/s-unstyp.o ada/s-utf_32.o ada/s-valint.o ada/s-valuns.o ada/s-valuti.o ada/s-wchcnv.o ada/s-wchcon.o ada/s-wchjis.o ada/scans.o ada/scil_ll.o ada/scn.o ada/scng.o ada/scos.o ada/sdefault.o ada/sem.o ada/sem_aggr.o ada/sem_attr.o ada/sem_aux.o ada/sem_case.o ada/sem_cat.o ada/sem_ch10.o ada/sem_ch11.o ada/sem_ch12.o ada/sem_ch13.o ada/sem_ch2.o ada/sem_ch3.o ada/sem_ch4.o ada/sem_ch5.o ada/sem_ch6.o ada/sem_ch7.o ada/sem_ch8.o ada/sem_ch9.o ada/sem_dim.o ada/sem_disp.o ada/sem_dist.o ada/sem_elab.o ada/sem_elim.o ada/sem_eval.o ada/sem_intr.o ada/sem_mech.o ada/sem_prag.o ada/sem_res.o ada/sem_scil.o ada/sem_smem.o ada/sem_type.o ada/sem_util.o ada/sem_vfpt.o ada/sem_warn.o ada/set_targ.o ada/sinfo-cn.o ada/sinfo.o ada/sinput-d.o ada/sinput-l.o ada/sinput.o ada/snames.o ada/sprint.o ada/stand.o ada/stringt.o ada/style.o ada/styleg.o ada/stylesw.o ada/switch-c.o ada/switch.o ada/system.o ada/table.o ada/targparm.o ada/tbuild.o ada/tree_gen.o ada/tree_in.o ada/tree_io.o ada/treepr.o ada/treeprs.o ada/ttypes.o ada/types.o ada/uintp.o ada/uname.o ada/urealp.o ada/usage.o ada/validsw.o ada/warnsw.o ada/widechar.o ada/back_end.o ada/gnat1drv.o ada/b_gnat1.o libbackend.a main.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a attribs.o \ libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -L/home/alan/build/./cloog/.libs -lcloog-isl -L/home/alan/build/./isl/.libs -lisl -L/home/alan/build/./gmp/.libs -L/home/alan/build/./mpfr/.libs -L/home/alan/build/./mpc/src/.libs -lmpc -lmpfr -lgmp -rdynamic -ldl -L../zlib -lz -g -O2 /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(locale.o): In function `std::locale::name() const': (.text._ZNKSt6locale4nameEv+0x41c): relocation truncated to fit: ELF_LITERAL against `.text.unlikely._ZNSs4_Rep10_M_disposeERKSaIcE.part.3' /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(locale.o): In function `std::locale::operator==(std::locale const&) const': (.text._ZNKSt6localeeqERKS_+0x28c): relocation truncated to fit: ELF_LITERAL against `.text.unlikely._ZNSs4_Rep10_M_disposeERKSaIcE.part.3' /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(compatibility-ldbl.o): In function `std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool, std::ios_base&, std::_Ios_Iostate&, long double&) const': (.text._ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe[_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe]+0x19c): relocation truncated to fit: ELF_LITERAL against `.text.unlikely._ZNSs4_Rep10_M_disposeERKSaIcE.part.14' /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(compatibility-ldbl.o): In function `std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, std::_Ios_Iostate&, long double&) const': (.text._ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe[_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe]+0x19c): relocation truncated to fit: ELF_LITERAL against `.text.unlikely._ZNSs4_Rep10_M_disposeERKSaIcE.part.14' /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(compatibility-ldbl.o): In function `std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool, std::ios_base&, std::_Ios_Iostate&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&) const': (.text._ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE[_ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE]+0x26c): relocation truncated to fit: ELF_LITERAL against `.text.unlikely._ZNSs4_Rep10_M_disposeERKSaIcE.part.14' /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(compatibility-ldbl.o): In function `std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, std::_Ios_Iostate&, std::string&) const': (.text._ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs[_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs]+0x2dc): relocation truncated to fit: ELF_LITERAL against `.text.unlikely._ZNSs4_Rep10_M_disposeERKSaIcE.part.14' /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(compatibility-ldbl.o): In function `std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, char, long double) const': (.text._ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece[_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece]+0x3ac): relocation truncated to fit: ELF_LITERAL against `.text.unlikely._ZNSs4_Rep10_M_disposeERKSaIcE.part.14' /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(compatibility-ldbl.o): In function `std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_float(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, std::string&) const': (.text._ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs[_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs]+0x1aa0): relocation truncated to fit: ELF_LITERAL against `.text.unlikely._ZNSs4_Rep10_M_disposeERKSaIcE.part.14' /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(compatibility-ldbl.o): In function `std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, float&) const': (.text._ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf[_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf]+0x2ac): relocation truncated to fit: ELF_LITERAL against `.text.unlikely._ZNSs4_Rep10_M_disposeERKSaIcE.part.14' /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(compatibility-ldbl.o): In function `std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, double&) const': (.text._ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd[_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd]+0x2ac): relocation truncated to fit: ELF_LITERAL against `.text.unlikely._ZNSs4_Rep10_M_disposeERKSaIcE.part.14' /usr/lib/gcc/alpha-linux-gnu/4.9/libstdc++.a(compatibility-ldbl.o): In function `std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, long double&) const': (.text._ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe[_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe]+0x2ac): additional relocation overflows omitted from the output collect2: error: ld returned 1 exit status ../../gcc-4.9.1/gcc/ada/gcc-interface/Make-lang.in:596: recipe for target 'gnat1' faile Alan Lawrence wrote: > ...as I've not managed to build such a gcc. If so, is there any chance you could > please test check-ada with the following patch (in gcc/ directory), which rolls > back r76965: > > Index: combine.c > =================================================================== > --- combine.c (revision 212523) > +++ combine.c (working copy) > @@ -10218,9 +10218,6 @@ > if (CONST_INT_P (XEXP (varop, 1)) > /* We can't do this if we have (ashiftrt (xor)) and the > constant has its sign bit set in shift_mode. */ > - && !(code == ASHIFTRT && GET_CODE (varop) == XOR > - && 0 > trunc_int_for_mode (INTVAL (XEXP (varop, 1)), > - shift_mode)) > && (new_rtx = simplify_const_binary_operation > (code, result_mode, > gen_int_mode (INTVAL (XEXP (varop, 1)), result_mode), > @@ -10237,10 +10234,7 @@ > logical expression, make a new logical expression, and apply > the inverse distributive law. This also can't be done > for some (ashiftrt (xor)). */ > - if (CONST_INT_P (XEXP (varop, 1)) > - && !(code == ASHIFTRT && GET_CODE (varop) == XOR > - && 0 > trunc_int_for_mode (INTVAL (XEXP (varop, 1)), > - shift_mode))) > + if (CONST_INT_P (XEXP (varop, 1))) > { > rtx lhs = simplify_shift_const (NULL_RTX, code, shift_mode, > XEXP (varop, 0), count); > > Many thanks if so! > > --Alan > > >
Unfortunately the Alpha box I used last time is no longer available and so I've not been able to try the linker fix. I've not had any responses from anyone saying they use Ada on Alpha (let alone on VMS - where the original bug was reported - and Ada/VMS support has now been retired). If none of you folk are able to build+test the patch (below) for Ada on Alpha: is this really reason for us to want to hold this up? --Alan Alan Lawrence wrote: > ...as I've not managed to build such a gcc. If so, is there any chance you could > please test check-ada with the following patch (in gcc/ directory), which rolls > back r76965: > > Index: combine.c > =================================================================== > --- combine.c (revision 212523) > +++ combine.c (working copy) > @@ -10218,9 +10218,6 @@ > if (CONST_INT_P (XEXP (varop, 1)) > /* We can't do this if we have (ashiftrt (xor)) and the > constant has its sign bit set in shift_mode. */ > - && !(code == ASHIFTRT && GET_CODE (varop) == XOR > - && 0 > trunc_int_for_mode (INTVAL (XEXP (varop, 1)), > - shift_mode)) > && (new_rtx = simplify_const_binary_operation > (code, result_mode, > gen_int_mode (INTVAL (XEXP (varop, 1)), result_mode), > @@ -10237,10 +10234,7 @@ > logical expression, make a new logical expression, and apply > the inverse distributive law. This also can't be done > for some (ashiftrt (xor)). */ > - if (CONST_INT_P (XEXP (varop, 1)) > - && !(code == ASHIFTRT && GET_CODE (varop) == XOR > - && 0 > trunc_int_for_mode (INTVAL (XEXP (varop, 1)), > - shift_mode))) > + if (CONST_INT_P (XEXP (varop, 1))) > { > rtx lhs = simplify_shift_const (NULL_RTX, code, shift_mode, > XEXP (varop, 0), count); > > Many thanks if so! > > --Alan
> Unfortunately the Alpha box I used last time is no longer available > and so I've not been able to try the linker fix. I've not had any > responses from anyone saying they use Ada on Alpha (let alone on VMS > - where the original bug was reported - and Ada/VMS support has now > been retired). If none of you folk are able to build+test the patch > (below) for Ada on Alpha: is this really reason for us to want to > hold this up? FWIW, AdaCore has stopped supporting/building/testing Ada on alpha several years ago already, so no reason as far as we are concerned to worry about this combination for GCC trunk, as long as your change doesn't break Ada on other platforms. Arno
Index: combine.c =================================================================== --- combine.c (revision 212523) +++ combine.c (working copy) @@ -10218,9 +10218,6 @@ if (CONST_INT_P (XEXP (varop, 1)) /* We can't do this if we have (ashiftrt (xor)) and the constant has its sign bit set in shift_mode. */ - && !(code == ASHIFTRT && GET_CODE (varop) == XOR - && 0 > trunc_int_for_mode (INTVAL (XEXP (varop, 1)), - shift_mode)) && (new_rtx = simplify_const_binary_operation (code, result_mode, gen_int_mode (INTVAL (XEXP (varop, 1)), result_mode), @@ -10237,10 +10234,7 @@ logical expression, make a new logical expression, and apply the inverse distributive law. This also can't be done for some (ashiftrt (xor)). */ - if (CONST_INT_P (XEXP (varop, 1)) - && !(code == ASHIFTRT && GET_CODE (varop) == XOR - && 0 > trunc_int_for_mode (INTVAL (XEXP (varop, 1)), - shift_mode))) + if (CONST_INT_P (XEXP (varop, 1))) { rtx lhs = simplify_shift_const (NULL_RTX, code, shift_mode, XEXP (varop, 0), count);