On Tue, Jun 26, 2012 at 11:28 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Tue, Jun 26, 2012 at 2:04 PM, Alexandre Oliva <aol...@redhat.com> wrote: >> I test i686-linux-gnu in a presumably unusual setting: it's an >> x86_64-linux-gnu system, and I've configured the GCC build to use as >> builddev tools wrapper scripts for as, ld, gnatmake and gcc that add >> flags that make them default to 32-bit. >> >> This worked fine for regression testing, but I've recently realized >> (with the PR49888/53671 mishap) that I'm getting tons of LTO testsuite >> failures (before and after, so no regression), because the 32-bit LTO >> plugin built in this setting can't possibly be used by the 64-bit linker >> installed on the system. Obviously, passing -melf_i386 to the linker >> through the wrapper is not enough for it to be able to dlopen a 32-bit >> plugin ;-) > > I am using this Makefile fragment to bootstrap and test > -m32 and -mx32 GCC on Linux/x86-64: > > ifneq ($(BUILD-ARCH),$(CPU)) > ifeq (i386,$(ARCH)) > TARGET-FLAGS=$(TARGET) > CC=gcc -m32 > CXX=g++ -m32 > FLAGS-TO-PASS+=CC="$(CC)" > FLAGS-TO-PASS+=CXX="$(CXX)" > # Need 32bit linker for LTO. */ > PATH:=/usr/local32/bin:$(PATH) > endif > > ifeq (x32,$(ARCH)) > CC=gcc -mx32 > CXX=g++ -mx32 > FLAGS-TO-PASS+=CC="$(CC)" > FLAGS-TO-PASS+=CXX="$(CXX)" > # Need x32 linker for LTO. */ > PATH:=/usr/localx32/bin:$(PATH) > endif > endif > > [hjl@gnu-32 gcc-32bit]$ file /usr/localx32/bin/ld > /usr/localx32/bin/ld: ELF 32-bit LSB executable, x86-64, version 1 > (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.38, > BuildID[sha1]=0x85a2821594e122d4fc60741e2664c2b57888682e, not stripped > [hjl@gnu-32 gcc-32bit]$ file /usr/local32/bin/ld > /usr/local32/bin/ld: ELF 32-bit LSB executable, Intel 80386, version 1 > (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, > not stripped > [hjl@gnu-32 gcc-32bit]$
So I suppose the above would be good to have in collect-ld? > > > -- > H.J.