[cfe-dev] choosing the gcc toolchain

Reed Kotler rkotler at mips.com
Fri Feb 28 11:20:15 PST 2014


Seems to almost work.
It should have picked up 4.7.2 I would think.

rkotler at mipsswbrd006-le:~/caviumllvmwclang/install/bin$ ./clang -v
clang version 3.5 (gitosis at dmz-portal.mips.com:clang.git 
42303467cd4adb0dbcbead5517482265ea111bfa) 
(gitosis at dmz-portal.mips.com:llvm.git 
0ff25b31d895c82d3fea67b76531c9580ce00d0a)
Target: mipsel-unknown-linux-gnu
Thread model: posix
Found candidate GCC installation: /usr/lib/gcc/mipsel-linux-gnu/4.4
Found candidate GCC installation: /usr/lib/gcc/mipsel-linux-gnu/4.4.6
Found candidate GCC installation: /usr/lib/gcc/mipsel-linux-gnu/4.4.7
Found candidate GCC installation: /usr/lib/gcc/mipsel-linux-gnu/4.6
Found candidate GCC installation: /usr/lib/gcc/mipsel-linux-gnu/4.6.3
Found candidate GCC installation: /usr/lib/gcc/mipsel-linux-gnu/4.7
Found candidate GCC installation: /usr/lib/gcc/mipsel-linux-gnu/4.7.2
Selected GCC installation: /usr/lib/gcc/mipsel-linux-gnu/4.7
Candidate multilib: .;@m32
Selected multilib: .;@m32

I do a diff in my area and pick up some other changes that look like 
formatting changes from my clang. Not sure why.

I only made the change you suggested.

On 02/27/2014 10:00 PM, Simon Atanasyan wrote:
> It looks like a regression after r201205. The problem is in the end of
> the findMIPSMultilibs routine in the following line:
>
> [[
> else if (DebianMipsMultilibs.size() == 3) {
> ]]
>
> The clang driver does not select a regular Debian MIPS toolchain if
> the toolchain includes 32-bit libraries only and does not include 64
> and n32 variants.
>
> If temporarily delete FSF and CS toolchain selection it solves the
> problem at least on my x86-64 Debian machines with a regular MIPS 4.7
> toolchain.
>
> [[
> --- a/lib/Driver/ToolChains.cpp
> +++ b/lib/Driver/ToolChains.cpp
> @@ -1802,13 +1802,10 @@ bool
> Generic_GCC::GCCInstallationDetector::findMIPSMultilibs(
>     //  a bit of overlap in the directories that each specifies)
>     if (TargetTriple.getEnvironment() == llvm::Triple::Android)
>       Multilibs.combineWith(AndroidMipsMultilibs);
> -  else if (DebianMipsMultilibs.size() == 3) {
> +  else {
>       Multilibs.combineWith(DebianMipsMultilibs);
>       BiarchSibling = Multilib();
> -  } else if (FSFMipsMultilibs.size() > CSMipsMultilibs.size())
> -    Multilibs.combineWith(FSFMipsMultilibs);
> -  else
> -    Multilibs.combineWith(CSMipsMultilibs);
> +  }
>
>     llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
>
> ]]
>
> Reed, could you check this hack on the cavium board?
>
> I will try to fix this bug.
>
> On Fri, Feb 28, 2014 at 3:37 AM, reed kotler <rkotler-8NJIiSa5LzA at public.gmane.org> wrote:
>> The clang is working ok. I can compile, link and run a program in a simple
>> fashion.
>>
>> I will take a look.
>
> [...]
>
>> On 02/27/2014 03:34 PM, Chandler Carruth wrote:
>>
>> My best guess is that the multilib stuff wasn't setup correctly. Note that
>> MIPS has custom logic for this (findMIPSMultilibs). If that fails, then
>> we'll not use the newer GCC installation. You could add logging there to try
>> and figure out why.
>



More information about the cfe-dev mailing list