Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Feb 2016 14:13:24 -0700
From:      Warner Losh <imp@bsdimp.com>
To:        Ben Morrow <ben@morrow.me.uk>
Cc:        "freebsd-mips@freebsd.org" <freebsd-mips@freebsd.org>
Subject:   Re: Re: mips/qemu jails with native-xtools
Message-ID:  <CANCZdfoCB59ZuV_GFTGwwkZ8f%2BQtGNto-SauHmqUY7kD6dKROQ@mail.gmail.com>
In-Reply-To: <20160205210351.GD93874@anubis.morrow.me.uk>
References:  <20160205143335.GC93874@anubis.morrow.me.uk> <CANCZdfpuPtiK0d8UfDrD1WA0r_ossC3ug2F_RP-scR57noDb5w@mail.gmail.com> <20160205210351.GD93874@anubis.morrow.me.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Feb 5, 2016 at 2:03 PM, Ben Morrow <ben@morrow.me.uk> wrote:

> Warner Losh <imp@bsdimp.com> wrote:
> > On Fri, Feb 5, 2016 at 7:33 AM, Ben Morrow <ben@morrow.me.uk> wrote:
> > > Warner Losh <imp@bsdimp.com> wrote:
> > > > On Thu, Feb 4, 2016 at 5:26 PM, Ben Morrow <ben@morrow.me.uk> wrote:
> > > >
> > > > > I've finally got a mips/qemu poudriere jail working properly with a
> > > > > native toolchain, but it took a bit of fiddling to make it work,
> so I
> > > > > thought I'd report on what I did.
> > > [...]
> > > > > Having put the proper libraries back, the next problem was that ld
> was
> > > > > failing to find shared libraries that were implicitly linked
> > > (DT_NEEDED)
> > > > > by other shared libraries. The specific port I was building was
> > > > > net/tshark, which links glib, which implicitly pulls in libpcre and
> > > > > libiconv. The configure step was failing because ld couldn't find
> > > > > libpcre.so.3.
> > > > >
> > > > > It turns out that ld finds the path to search for DT_NEEDED
> libraries
> > > by
> > > > > reading ld-elf.so.hints. That file (in the jail) is BE, because
> this is
> > > > > a mips world with a mips ldconfig, but the ld binary is LE, so it
> can't
> > > > > read the file. With the patch below, it can; since endianness is
> the
> > > > > only difference between architectures, I think it should be safe
> for
> > > > > general use, but I don't really know
> > > >
> > > > I'd think it would be better to generate the ld.so in the proper
> binary
> > > > format. How hard is that?
> > >
> > > ld.so has to be a mips binary, otherwise we can't run any other
> > > (non-static) mips binaries. So ld.so.hints has to be in BE format,
> > > otherwise ld.so can't read it. The problem is that ld and ld.so have
> > > different endiannesses, and ld is assuming it can read ld.so's files to
> > > find the search path.
> > >
> > > Of course, it would always be possible to simply use a mips binary for
> > > ld, as well, and just let it be emulated.
> >
> > I guess I'm misunderstanding something. When / how is ld have a different
> > endianness? Is it the amd64 ld that produces binaries for big-endian mips
> > that introduces the cross-threading?
>
> Yes, exactly.
>

Then I see little alternative than your patch. And a similar patch to
llvm...

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfoCB59ZuV_GFTGwwkZ8f%2BQtGNto-SauHmqUY7kD6dKROQ>