[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/

Chandler Carruth via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 8 17:21:51 PST 2017


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?


> +
>      // 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170209/759b5d39/attachment-0001.html>


More information about the cfe-commits mailing list