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

Reply via email to