On Tue, Mar 10, 2015 at 08:32:59AM +0100, Markus Trippelsdorf wrote: > On 2015.03.10 at 17:58 +1030, Alan Modra wrote: > > On Tue, Mar 10, 2015 at 07:13:48AM +0100, Markus Trippelsdorf wrote: > > > This patch breaks the build on ppc64le: > > > > Works for me with your configure options. > > > > > trippels@gcc2-power8 gcc_build_dir % ../gcc/configure --with-cpu=power8 > > > --disable-libsanitizer --disable-bootstrap --disable-libstdcxx-pch > > > --disable-libvtv --disable-libitm --disable-libcilkrts --disable-libssp > > > --disable-libgomp --disable-werror --disable-multilib > > > --enable-languages=c,c++ > > > > At a guess, you're trying to build without glibc installed. If so, > > you'll also need --disable-shared. I'm a bit surprised if you could > > do that before my patch. > > No, glibc is installed. > > > > There is a ppc64le compile farm machine available > > > @gcc2-2-power8.osuosl.org. > > > > I would be greedy to load the compile farm when I can use internal IBM > > machines. :) > > I mentioned the machine, because it runs Fedora 21 and you have tested > only on Ubuntu.
Yeah, please see https://gcc.gnu.org/ml/gcc-patches/2013-03/msg00288.html for similar issue on aarch64. You really don't want to use MULTIARCH_DIRNAME for the powerpc64le* case, as that will work only with the Debian/Ubuntu mess. You want to define MULTILIB_OSDIRNAMES instead. So perhaps something like completely untested following patch? --- gcc/config/rs6000/t-linux.jj 2015-03-10 07:27:43.734454250 +0100 +++ gcc/config/rs6000/t-linux 2015-03-10 08:52:54.268126702 +0100 @@ -2,7 +2,7 @@ # or soft-float. ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float))) ifneq (,$(findstring powerpc64,$(target))) -MULTIARCH_DIRNAME := powerpc64-linux-gnu +MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) else ifneq (,$(findstring spe,$(target))) MULTIARCH_DIRNAME := powerpc-linux-gnuspe$(if $(findstring 8548,$(with_cpu)),,v1) @@ -10,9 +10,12 @@ else MULTIARCH_DIRNAME := powerpc-linux-gnu endif endif -ifneq (,$(findstring powerpcle,$(target))$(findstring powerpc64le,$(target))) +ifneq (,$(findstring powerpcle,$(target))) MULTIARCH_DIRNAME := $(subst -linux,le-linux,$(MULTIARCH_DIRNAME)) endif +ifneq (,$(findstring powerpc64le,$(target))) +MULTILIB_OSDIRNAMES := $(subst -linux,le-linux,$(MULTILIB_OSDIRNAMES)) +endif endif rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c Of course, needs testing on standard multilib distros and Debian/Ubuntu multiarch. Jakub