[cfe-commits] r164177 - in /cfe/trunk: lib/Driver/ test/Driver/ test/Driver/Inputs/freescale_ppc_tree/ test/Driver/Inputs/freescale_ppc_tree/lib/ test/Driver/Inputs/freescale_ppc_tree/usr/ test/Driver/Inputs/freescale_ppc_tree/usr/lib/ test/Driver/Inputs/freescale_ppc_tree/usr/lib/powerpc-fsl-linux/ test/Driver/Inputs/freescale_ppc_tree/usr/lib/powerpc-fsl-linux/4.6.2/

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 9 14:40:47 PST 2017


On 9 February 2017 at 14:33, Hal Finkel via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> On 02/08/2017 07:21 PM, Chandler Carruth wrote:
>
> It's blast from the past time!
>
> On Tue, Sep 18, 2012 at 3:28 PM Hal Finkel <hfinkel at anl.gov> wrote:
>
>> Author: hfinkel
>> Date: Tue Sep 18 17:25:07 2012
>> New Revision: 164177
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=164177&view=rev
>> Log:
>> Add C/C++ header locations for the Freescale SDK.
>>
>> The Freescale SDK is based on OpenEmbedded, and this might be useful
>> for other OpenEmbedded-based configurations as well.
>>
>> With minor modifications, patch by Tobias von Koch!
>>
>> Added:
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/lib/
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/lib/.keep
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/crt1.o
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/crti.o
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/crtn.o
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/
>> powerpc-fsl-linux/
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/
>> powerpc-fsl-linux/4.6.2/
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/
>> powerpc-fsl-linux/4.6.2/crtbegin.o
>>     cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/
>> powerpc-fsl-linux/4.6.2/crtend.o
>> Modified:
>>     cfe/trunk/lib/Driver/ToolChains.cpp
>>     cfe/trunk/test/Driver/linux-ld.c
>>
>> Modified: cfe/trunk/lib/Driver/ToolChains.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/
>> ToolChains.cpp?rev=164177&r1=164176&r2=164177&view=diff
>> ============================================================
>> ==================
>> --- cfe/trunk/lib/Driver/ToolChains.cpp (original)
>> +++ cfe/trunk/lib/Driver/ToolChains.cpp Tue Sep 18 17:25:07 2012
>> @@ -1291,6 +1291,10 @@
>>      "/gcc/" + CandidateTriple.str(),
>>      "/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
>>
>> +    // The Freescale PPC SDK has the gcc libraries in
>> +    // <sysroot>/usr/lib/<triple>/x.y.z so have a look there as well.
>> +    "/" + CandidateTriple.str(),
>>
>
> So, this is really bad it turns out.
>
> We use this directory to walk every installed GCC version. But because
> this is just a normal lib directory on many systems (ever Debian and Ubuntu
> system for example) this goes very badly. It goes even more badly because
> of the (questionable) design of LLVM's directory iterator:
>
> It ends up stat'ing *every single file* in /usr/lib/<triple> .... =[ For
> the current Ubuntu LTS for example, this causes roughly 3900 spurrious stat
> syscalls for every invocation of the Clang driver.
>
> Can we do something different here?
>
>
> Wow. Hrmm, okay. Why are we stating every file?
>

That mistake seems to be baked into the design of llvm's
directory_iterator. =(

In any case, are we just searching for a directory with the right triple?
> Or are we searching for the version-number directory and doing that by
> looking at every entry?
>

The latter.


>  -Hal
>
>
>
>
>> +
>>      // Ubuntu has a strange mis-matched pair of triples that this
>> happens to
>>      // match.
>>      // FIXME: It may be worthwhile to generalize this and look for a
>> second
>> @@ -1300,6 +1304,7 @@
>>    const std::string InstallSuffixes[] = {
>>      "/../../..",
>>      "/../../../..",
>> +    "/../..",
>>      "/../../../.."
>>    };
>>    // Only look at the final, weird Ubuntu suffix for i386-linux-gnu.
>> @@ -2374,6 +2379,9 @@
>>      InstallDir.str() + "/include/g++-v4",
>>      // Android standalone toolchain has C++ headers in yet another place.
>>      LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" +
>> Version.str(),
>> +    // Freescale SDK C++ headers are directly in
>> <sysroot>/usr/include/c++,
>> +    // without a subdirectory corresponding to the gcc version.
>> +    LibDir.str() + "/../include/c++",
>>    };
>>
>>    for (unsigned i = 0; i < llvm::array_lengthof(IncludePathCandidates);
>> ++i) {
>>
>> Added: cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/lib/.keep
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
>> Inputs/freescale_ppc_tree/lib/.keep?rev=164177&view=auto
>> ============================================================
>> ==================
>>     (empty)
>>
>> Added: cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/crt1.o
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
>> Inputs/freescale_ppc_tree/usr/lib/crt1.o?rev=164177&view=auto
>> ============================================================
>> ==================
>>     (empty)
>>
>> Added: cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/crti.o
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
>> Inputs/freescale_ppc_tree/usr/lib/crti.o?rev=164177&view=auto
>> ============================================================
>> ==================
>>     (empty)
>>
>> Added: cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/crtn.o
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
>> Inputs/freescale_ppc_tree/usr/lib/crtn.o?rev=164177&view=auto
>> ============================================================
>> ==================
>>     (empty)
>>
>> Added: cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/
>> powerpc-fsl-linux/4.6.2/crtbegin.o
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
>> Inputs/freescale_ppc_tree/usr/lib/powerpc-fsl-linux/4.6.2/
>> crtbegin.o?rev=164177&view=auto
>> ============================================================
>> ==================
>>     (empty)
>>
>> Added: cfe/trunk/test/Driver/Inputs/freescale_ppc_tree/usr/lib/
>> powerpc-fsl-linux/4.6.2/crtend.o
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
>> Inputs/freescale_ppc_tree/usr/lib/powerpc-fsl-linux/4.6.2/
>> crtend.o?rev=164177&view=auto
>> ============================================================
>> ==================
>>     (empty)
>>
>> Modified: cfe/trunk/test/Driver/linux-ld.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
>> linux-ld.c?rev=164177&r1=164176&r2=164177&view=diff
>> ============================================================
>> ==================
>> --- cfe/trunk/test/Driver/linux-ld.c (original)
>> +++ cfe/trunk/test/Driver/linux-ld.c Tue Sep 18 17:25:07 2012
>> @@ -462,3 +462,23 @@
>>  // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/
>> mipsel-linux-gnu/4.4/../../.."
>>  // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
>>  // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
>> +//
>> +// Test linker invocation for Freescale SDK (OpenEmbedded).
>> +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
>> +// RUN:     -target powerpc-fsl-linux \
>> +// RUN:     --sysroot=%S/Inputs/freescale_ppc_tree \
>> +// RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC %s
>> +// CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
>> +// CHECK-FSL-PPC: "-m" "elf32ppclinux"
>> +// CHECK-FSL-PPC: "{{.*}}/crt1.o"
>> +// CHECK-FSL-PPC: "{{.*}}/crtbegin.o"
>> +// CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
>> +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
>> +// RUN:     -target powerpc64-fsl-linux \
>> +// RUN:     --sysroot=%S/Inputs/freescale_ppc64_tree \
>> +// RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
>> +// CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
>> +// CHECK-FSL-PPC64: "-m" "elf64ppc"
>> +// CHECK-FSL-PPC64: "{{.*}}/crt1.o"
>> +// CHECK-FSL-PPC64: "{{.*}}/crtbegin.o"
>> +// CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/
>> powerpc64-fsl-linux/4.6.2/../.."
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
> --
> Hal Finkel
> Lead, Compiler Technology and Programming Languages
> Leadership Computing Facility
> Argonne National Laboratory
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170209/c33a081f/attachment-0001.html>


More information about the cfe-commits mailing list