As reported in the PR, powerpc-rtems bootstrap (and certainly several
other powerpc targets) is currently broken since rs6000/ibm-ldouble.c
appears twice in LIB2ADD, once from rs6000/t-ppccomm and
rs6000/t-ppccomm-ldbl, which confuses make.
It took me a while to understand how we got into that situation. Here's
what I found: before the toplevel libgcc move started, we had both
gcc/config/rs6000/t-ppccomm and libgcc/config/rs6000/t-ppccomm. The
second is a superset of the first, in that it contains LIB2ADD_ST +=
crtsavfpr.S crtresfpr.S and many other similar files.
The set of targets using the gcc and libgcc files differs:
gcc/config/rs6000/t-ppccomm libgcc/config/rs6000/t-ppccomm
powerpc-*-freebsd* powerpc-*-freebsd*
powerpc-*-eabispe* powerpc-*-eabispe*
powerpc-*-eabisimaltivec*
powerpc-*-eabisim*
powerpc-*-elf*
powerpc-*-eabialtivec*
powerpc-xilinx-eabi*
powerpc-*-eabi* powerpc-*-eabi*
powerpc-*-rtems*
powerpc-*-linux* powerpc-*-linux*
| powerpc64-*-linux* | powerpc64-*-linux*
powerpc-*-gnu-gnualtivec*
powerpc-*-gnu*
powerpc-wrs-vxworks
| powerpc-wrs-vxworksae
powerpcle-*-elf*
powerpcle-*-eabisim*
powerpcle-*-eabi*
When I started the move, I introduced
libgcc/config/rs6000/t-ppccomm-ldbl since I couldn't simply use the
existing t-ppccomm file which is used on a far smaller set of targets.
To reach an end state matching what we had before the move, I propose to
instead create a separate t-savresfgpr (for {sav,res}{fpr,gpr,gprctr})
that only contains the additional files and add that to the targets that
had it before, and remove t-ppccomm-ldbl to avoid the duplication.
When checking this, I noticed that powerpc-vxworks had lost
rs6000/t-ppccomm, which the patch adds back.
I'd really appreciate if some affected targets could fully test the
patch.