I've been trying to get a working GNAT on AIX 7. Starting with old GNAT binaries from GCC .1.0 for AIX 5.2, I went via GCC 4.7.4 and GCC 8.4.0, where the builds succeeded with minor issues. However, in all of GCC 9.3.0, 10.1.0, and current master, gnat1 fails to link in stage 1: $ g++ -std=gnu++98 -no-pie -g -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc -Wl,-bbigtoc -Wl,-bmaxdata:0x40000000 -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/raise-gcc.o ada/seh_init.o ada/targext.o ada/cuintp.o ada/decl.o ada/rtfinal.o ada/rtinit.o ada/misc.o ada/utils.o ada/utils2.o ada/trans.o ada/targtyps.o ada/libgnat/a-charac.o ada/libgnat/a-chlat1.o ada/libgnat/a-elchha.o ada/libgnat/a-except.o ada/libgnat/a-exctra.o ada/libgnat/a-ioexce.o ada/libgnat/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/contracts.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_unst.o ada/exp_util.o ada/expander.o ada/fmap.o ada/fname-uf.o ada/fname.o ada/freeze.o ada/frontend.o ada/libgnat/g-byorma.o ada/libgnat/g-dynhta.o ada/libgnat/g-hesora.o ada/libgnat/g-htable.o ada/libgnat/g-lists.o ada/libgnat/g-sets.o ada/libgnat/g-spchge.o ada/libgnat/g-speche.o ada/libgnat/g-u3spch.o ada/get_targ.o ada/ghost.o ada/libgnat/gnat.o ada/gnatvsn.o ada/hostparm.o ada/impunit.o ada/inline.o ada/libgnat/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_scos.o ada/repinfo.o ada/restrict.o ada/rident.o ada/rtsfind.o ada/libgnat/s-addope.o ada/libgnat/s-addima.o ada/libgnat/s-assert.o ada/libgnat/s-bitops.o ada/libgnat/s-carun8.o ada/libgnat/s-casuti.o ada/libgnat/s-conca2.o ada/libgnat/s-conca3.o ada/libgnat/s-conca4.o ada/libgnat/s-conca5.o ada/libgnat/s-conca6.o ada/libgnat/s-conca7.o ada/libgnat/s-conca8.o ada/libgnat/s-conca9.o ada/libgnat/s-crc32.o ada/libgnat/s-crtl.o ada/libgnat/s-excdeb.o ada/libgnat/s-except.o ada/libgnat/s-exctab.o ada/libgnat/s-excmac.o ada/libgnat/s-htable.o ada/libgnat/s-imenne.o ada/libgnat/s-imgenu.o ada/libgnat/s-imgint.o ada/libgnat/s-mastop.o ada/libgnat/s-memory.o ada/libgnat/s-os_lib.o ada/libgnat/s-parame.o ada/libgnat/s-purexc.o ada/libgnat/s-restri.o ada/libgnat/s-secsta.o ada/libgnat/s-soflin.o ada/libgnat/s-soliin.o ada/libgnat/s-sopco3.o ada/libgnat/s-sopco4.o ada/libgnat/s-sopco5.o ada/libgnat/s-stache.o ada/libgnat/s-stalib.o ada/libgnat/s-stoele.o ada/libgnat/s-strcom.o ada/libgnat/s-strhas.o ada/libgnat/s-string.o ada/libgnat/s-strops.o ada/libgnat/s-traceb.o ada/libgnat/s-traent.o ada/libgnat/s-trasym.o ada/libgnat/s-unstyp.o ada/libgnat/s-utf_32.o ada/libgnat/s-valint.o ada/libgnat/s-valuns.o ada/libgnat/s-valuti.o ada/libgnat/s-wchcnv.o ada/libgnat/s-wchcon.o ada/libgnat/s-wchjis.o ada/libgnat/s-wchstw.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_spark.o ada/sem_type.o ada/sem_util.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/libgnat/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 -lintl -liconv ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -L/opt/cfarm/gmp-latest/lib -L/opt/cfarm/mpfr-latest/lib -L/opt/cfarm/mpc-latest/lib -lmpc -lmpfr -lgmp -L./../zlib -lz -g ld: 0711-317 ERROR: Undefined symbol: vtable for range_label_for_type_mismatch ld: 0711-317 ERROR: Undefined symbol: .range_label_for_type_mismatch::get_text(unsigned int) const ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. collect2: error: ld returned 8 exit status With -Wl,-bnoquiet, I see: [...] (ld): er full ld: 0711-318 ERROR: Undefined symbols were found. The following symbols are in error: Symbol Inpndx TY CL Source-File(Object-File) OR Import-File{Shared-object} RLD: Address Section Rld-type Referencing Symbol ---------------------------------------------------------------------------------------------- vtable for range_label_for_type_mismatch [52] ER PR /home/ro/gcc/src/gcc-9.3.0/gcc/gcc-rich-location.c(libbackend.a[gcc-rich-location.o]) 00002570 .data R_POS [1919] <_ZTV29range_label_for_type_mismatch.P8> .range_label_for_type_mismatch::get_text(unsigned int) const [86] ER PR /home/ro/gcc/src/gcc-9.3.0/gcc/gcc-rich-location.c(libbackend.a[gcc-rich-location.o]) 00000c68 .text R_RBR [1523] .maybe_range_label_for_tree_type_mismatch::get_text(unsigned int) const ER: The return code is 8.
Is this still a problem?
> --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- > Is this still a problem? It was when I last tried in December (cf. PR ada/98171, last two lines).
I don't know why the vtable is not emitted. It seems that it should be in gcc-rich-location.o. This could be a situation of a conflict between a symbol label and a symbol qualname. The AIX backend has special code to try to handle it. I'm unsure why it's failing for gnat1 and not other languages.
GCC 9.4 is being released, retargeting bugs to GCC 9.5.
GCC 9 branch is being closed
GCC 10.4 is being released, retargeting bugs to GCC 10.5.
GCC 10 branch is being closed.