https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113507
Kewen Lin <linkw at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |segher at gcc dot gnu.org Last reconfirmed| |2024-01-23 Ever confirmed|0 |1 --- Comment #5 from Kewen Lin <linkw at gcc dot gnu.org> --- (In reply to H.J. Lu from comment #3) > (In reply to Kewen Lin from comment #2) > > Guessing /usr/local/bin/ld is a gnu ld? Based on what I heard before, gnu ld > > has some problems on aix, people pass object files to aix system and use aix > > ld there. Not sure if the understanding still holds. > > I am building a cross compiler. No AIX tools are involved. Thanks for clarifying, I was dull and misunderstood it. Confirmed, some symbols are from rs6000-builtin.cc (which is not generated) but it requires some symbols in rs6000-builtins.cc (which is generated). Both object files are not included in linking. The below diff can fix it: diff --git a/gcc/config.gcc b/gcc/config.gcc index b2d7d7dd475..6b62e4fe56c 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -557,8 +557,10 @@ rs6000*-*-*) extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt" extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o" extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o" + extra_objs="${extra_objs} rs6000-builtin.o rs6000-builtins.o" target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc" target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc" + target_gtfiles="$target_gtfiles ./rs6000-builtins.h" ;; sparc*-*-*) cpu_type=sparc According to David's comments "rs6000-ibm-aix doesn't exist any more" and I vaguely remembered Segher also mentioned rs6000*-*-*) becomes stale, maybe we can aggressively drop the whole rs6000*-*-*) case handling?