[LLVMdev] [3.7.0] Two late issues with cross compilation to mips

Daniel Sanders
Wed, 29 Jul 2015 12:58:45 -0000

#1 is the most important but I'm already debugging that. I don't want to
interrupt your holiday but if you could look at #3 that would be great.

> As to the issue #3 - do we need to keep compatibility with the old
mips-mti-linux-gnu toolchain layout?

It would be nice to support both the old and new layouts but I doubt that's
possible with the current framework (see below). If it's not possible then
we should use the new layout and encourage users to update their gcc toolchains
since the new layout has been in use for at least 6 months.

I believe that supporting both layouts ties into the later target triple work to
some degree. There are at least three mips-mti-linux-gnu toolchains with
different sets of multilibs, and anyone can build more variants of the
mips-mti-linux-gnu toolchain. So ideally, we should be able to configure the
multilib layout at configure-time or using config files. Of course, implementing
this kind of thing is too much work for this release.

> -----Original Message-----
> From: Simon Atanasyan [mailto:simon at atanasyan.com]
> Sent: 29 July 2015 13:04
> To: Daniel Sanders
> Cc: Hans Wennborg (hans at chromium.org); LLVM Developers Mailing List
> (llvmdev at cs.uiuc.edu)
> Subject: Re: [3.7.0] Two late issues with cross compilation to mips
>
> Hi Daniel,
>
> I am on a vacation now till the Aug 3 but I can take a look at these
> problems. What is the most important?
>
> As to the issue #3 - do we need to keep compatibility with the old
> mips-mti-linux-gnu toolchain layout?
>
> Simon
>
> On Wed, Jul 29, 2015 at 1:08 PM, Daniel Sanders
> <Daniel.Sanders at imgtec.com> wrote:
> > The issues are:
> >
> > 1.       Almabench has some significant numerical differences and
fails the
> > reference check for some configs. I'm investigating this one at
the moment
> > but early indications are that it's a similar (but different)
problem to the
> > one we had in LLVM 3.6.2.
> >
> > 2.       Read-only exception tables have broken compatibility with the
~2
> > year old gcc toolchains I was using for release testing cross
compilation.
> > This isn't a problem for most test-suite runs since we can just
update the
> > assembler but is causing trouble for microMIPS. More recent toolchains
> lack
> > the microMIPS multilib I was using and migrating to the new one is
causing
> > link failures. These failures are related to ELF header bits
specifying the
> > SNaN/QNaN encodings to be IEEE754-1985 or IEEE754-2008 compliant. I
> suspect
> > the –mnan=2008 isn't reaching the assembler.
> >
> > 3.       Clang is incompatible with changes to the mips-mti-linux-gnu
> > sysroot from Imagination's mips-mti-linux-gnu toolchain. Libaries
are still
> > multilib'd (albeit with a reduced set) but some of the include
paths aren't
> > anymore. It's also no longer correct to include sysroot/include
(this path
> > is added by common code) since this skips some function definitions.
> > Instead, we must only include sysroot/usr/include like GCC does. There
> may
> > be more details but so far the fix doesn't look simple. As far as
I can
> > tell, clang's multilib expects includes and libraries to have the
same
> > layout (osSuffix() seems to control both). The good news is that
it's not a
> > regression since we can use toolchains from before this layout change.