r341373 - Fix the -print-multi-directory flag to print the selected multilib.

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 4 15:05:58 PDT 2018


This is breaking buildbots:

http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/19509

Can you take a look? Thanks!

On Tue, 4 Sep 2018 at 08:36, Christian Bruel via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: chrib
> Date: Tue Sep  4 08:22:13 2018
> New Revision: 341373
>
> URL: http://llvm.org/viewvc/llvm-project?rev=341373&view=rev
> Log:
> Fix the -print-multi-directory flag to print the selected multilib.
>
> Summary: Fix -print-multi-directory to print the selected multilib
>
> Reviewers: jroelofs
>
> Reviewed By: jroelofs
>
> Subscribers: srhines, cfe-commits
>
> Differential Revision: https://reviews.llvm.org/D51354
>
> Added:
>     cfe/trunk/test/Driver/print-multi-directory.c
> Modified:
>     cfe/trunk/include/clang/Driver/ToolChain.h
>     cfe/trunk/lib/Driver/Driver.cpp
>     cfe/trunk/lib/Driver/ToolChains/Linux.cpp
>
> Modified: cfe/trunk/include/clang/Driver/ToolChain.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/ToolChain.h?rev=341373&r1=341372&r2=341373&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/Driver/ToolChain.h (original)
> +++ cfe/trunk/include/clang/Driver/ToolChain.h Tue Sep  4 08:22:13 2018
> @@ -149,6 +149,7 @@ private:
>
>  protected:
>    MultilibSet Multilibs;
> +  Multilib SelectedMultilib;
>
>    ToolChain(const Driver &D, const llvm::Triple &T,
>              const llvm::opt::ArgList &Args);
> @@ -227,6 +228,8 @@ public:
>
>    const MultilibSet &getMultilibs() const { return Multilibs; }
>
> +  const Multilib &getMultilib() const { return SelectedMultilib; }
> +
>    const SanitizerArgs& getSanitizerArgs() const;
>
>    const XRayArgs& getXRayArgs() const;
>
> Modified: cfe/trunk/lib/Driver/Driver.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=341373&r1=341372&r2=341373&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Driver/Driver.cpp (original)
> +++ cfe/trunk/lib/Driver/Driver.cpp Tue Sep  4 08:22:13 2018
> @@ -1661,14 +1661,13 @@ bool Driver::HandleImmediateArgs(const C
>    }
>
>    if (C.getArgs().hasArg(options::OPT_print_multi_directory)) {
> -    for (const Multilib &Multilib : TC.getMultilibs()) {
> -      if (Multilib.gccSuffix().empty())
> -        llvm::outs() << ".\n";
> -      else {
> -        StringRef Suffix(Multilib.gccSuffix());
> -        assert(Suffix.front() == '/');
> -        llvm::outs() << Suffix.substr(1) << "\n";
> -      }
> +    const Multilib &Multilib = TC.getMultilib();
> +    if (Multilib.gccSuffix().empty())
> +      llvm::outs() << ".\n";
> +    else {
> +      StringRef Suffix(Multilib.gccSuffix());
> +      assert(Suffix.front() == '/');
> +      llvm::outs() << Suffix.substr(1) << "\n";
>      }
>      return false;
>    }
>
> Modified: cfe/trunk/lib/Driver/ToolChains/Linux.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Linux.cpp?rev=341373&r1=341372&r2=341373&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Driver/ToolChains/Linux.cpp (original)
> +++ cfe/trunk/lib/Driver/ToolChains/Linux.cpp Tue Sep  4 08:22:13 2018
> @@ -210,6 +210,7 @@ Linux::Linux(const Driver &D, const llvm
>      : Generic_ELF(D, Triple, Args) {
>    GCCInstallation.init(Triple, Args);
>    Multilibs = GCCInstallation.getMultilibs();
> +  SelectedMultilib = GCCInstallation.getMultilib();
>    llvm::Triple::ArchType Arch = Triple.getArch();
>    std::string SysRoot = computeSysRoot();
>
> @@ -299,16 +300,14 @@ Linux::Linux(const Driver &D, const llvm
>    if (GCCInstallation.isValid()) {
>      const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
>      const std::string &LibPath = GCCInstallation.getParentLibPath();
> -    const Multilib &Multilib = GCCInstallation.getMultilib();
> -    const MultilibSet &Multilibs = GCCInstallation.getMultilibs();
>
>      // Add toolchain / multilib specific file paths.
> -    addMultilibsFilePaths(D, Multilibs, Multilib,
> +    addMultilibsFilePaths(D, Multilibs, SelectedMultilib,
>                            GCCInstallation.getInstallPath(), Paths);
>
>      // Sourcery CodeBench MIPS toolchain holds some libraries under
>      // a biarch-like suffix of the GCC installation.
> -    addPathIfExists(D, GCCInstallation.getInstallPath() +
> Multilib.gccSuffix(),
> +    addPathIfExists(D, GCCInstallation.getInstallPath() +
> SelectedMultilib.gccSuffix(),
>                      Paths);
>
>      // GCC cross compiling toolchains will install target libraries which
> ship
> @@ -330,7 +329,7 @@ Linux::Linux(const Driver &D, const llvm
>      // Note that this matches the GCC behavior. See the below comment for
> where
>      // Clang diverges from GCC's behavior.
>      addPathIfExists(D, LibPath + "/../" + GCCTriple.str() + "/lib/../" +
> -                           OSLibDir + Multilib.osSuffix(),
> +                           OSLibDir + SelectedMultilib.osSuffix(),
>                      Paths);
>
>      // If the GCC installation we found is inside of the sysroot, we want
> to
>
> Added: cfe/trunk/test/Driver/print-multi-directory.c
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/print-multi-directory.c?rev=341373&view=auto
>
> ==============================================================================
> --- cfe/trunk/test/Driver/print-multi-directory.c (added)
> +++ cfe/trunk/test/Driver/print-multi-directory.c Tue Sep  4 08:22:13 2018
> @@ -0,0 +1,28 @@
> +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
> +// RUN:     -target i386-none-linux \
> +// RUN:     -print-multi-directory \
> +// RUN:   | FileCheck --check-prefix=CHECK-X86-MULTILIBS %s
> +
> +// CHECK-X86-MULTILIBS:      32
> +// CHECK-X86-MULTILIBS-NOT:  x32
> +// CHECK-X86-MULTILIBS-NOT:  .
> +
> +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
> +// RUN:     -target i386-none-linux -m64 \
> +// RUN:     -print-multi-directory \
> +// RUN:   | FileCheck --check-prefix=CHECK-X86_64-MULTILIBS %s
> +
> +// CHECK-X86_64-MULTILIBS:      .
> +// CHECK-X86_64-MULTILIBS-NOT:  x32
> +// CHECK-X86_64-MULTILIBS-NOT:  32
> +
> +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
> +// RUN:     -target arm-linux-androideabi21 -stdlib=libstdc++ \
> +// RUN:     -mthumb \
> +// RUN:     -B%S/Inputs/basic_android_ndk_tree \
> +// RUN:     --sysroot=%S/Inputs/basic_android_ndk_tree/sysroot \
> +// RUN:     -print-multi-directory \
> +// RUN:   | FileCheck  --check-prefix=CHECK-ARM-MULTILIBS %s
> +
> +// CHECK-ARM-MULTILIBS:      thumb
> +// CHECK-ARM-MULTILIBS-NOT:  .
>
>
> _______________________________________________
> 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/20180904/637e0263/attachment-0001.html>


More information about the cfe-commits mailing list