[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
This revision was automatically updated to reflect the committed changes. Closed by commit rL311923: Reland r311836 - [Driver] Use arch type to find compiler-rt libraries (on Linux) (authored by mgorny). Repository: rL LLVM https://reviews.llvm.org/D26796 Files: cfe/trunk/lib/Driver/ToolChain.cpp cfe/trunk/test/Driver/Inputs/basic_linux_tree/usr/i686-unknown-linux/lib/.keep cfe/trunk/test/Driver/Inputs/basic_linux_tree/usr/lib/gcc/i686-unknown-linux/4.6.0/crtbegin.o cfe/trunk/test/Driver/linux-ld.c cfe/trunk/test/Driver/nostdlib.c cfe/trunk/test/Driver/print-libgcc-file-name-clangrt.c cfe/trunk/test/Driver/windows-cross.c Index: cfe/trunk/test/Driver/windows-cross.c === --- cfe/trunk/test/Driver/windows-cross.c +++ cfe/trunk/test/Driver/windows-cross.c @@ -64,7 +64,7 @@ // RUN:| FileCheck %s --check-prefix CHECK-SANITIZE-ADDRESS-EXE-X86 // CHECK-SANITIZE-ADDRESS-EXE-X86: "-fsanitize=address" -// CHECK-SANITIZE-ADDRESS-EXE-X86: "{{.*}}clang_rt.asan_dynamic-i686.lib" "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i686.lib" "--undefined" "___asan_seh_interceptor" +// CHECK-SANITIZE-ADDRESS-EXE-X86: "{{.*}}clang_rt.asan_dynamic-i386.lib" "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i386.lib" "--undefined" "___asan_seh_interceptor" // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=lld-link2 -shared -o shared.dll -fsanitize=tsan -x c++ %s 2>&1 \ // RUN:| FileCheck %s --check-prefix CHECK-SANITIZE-TSAN Index: cfe/trunk/test/Driver/linux-ld.c === --- cfe/trunk/test/Driver/linux-ld.c +++ cfe/trunk/test/Driver/linux-ld.c @@ -71,6 +71,27 @@ // CHECK-LD-RT: libclang_rt.builtins-x86_64.a" // // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=i686-unknown-linux \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: --rtlib=compiler-rt \ +// RUN: | FileCheck --check-prefix=CHECK-LD-RT-I686 %s +// CHECK-LD-RT-I686-NOT: warning: +// CHECK-LD-RT-I686: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" +// CHECK-LD-RT-I686: "--eh-frame-hdr" +// CHECK-LD-RT-I686: "-m" "elf_i386" +// CHECK-LD-RT-I686: "-dynamic-linker" +// CHECK-LD-RT-I686: "{{.*}}/usr/lib/gcc/i686-unknown-linux/4.6.0{{/|}}crtbegin.o" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../../../i686-unknown-linux/lib" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../.." +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/lib" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib" +// CHECK-LD-RT-I686: libclang_rt.builtins-i386.a" +// CHECK-LD-RT-I686: "-lc" +// CHECK-LD-RT-I686: libclang_rt.builtins-i386.a" +// +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=arm-linux-androideabi \ // RUN: --gcc-toolchain="" \ // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ Index: cfe/trunk/test/Driver/nostdlib.c === --- cfe/trunk/test/Driver/nostdlib.c +++ cfe/trunk/test/Driver/nostdlib.c @@ -27,5 +27,5 @@ // // CHECK-LINUX-NOSTDLIB: warning: argument unused during compilation: '--rtlib=compiler-rt' // CHECK-LINUX-NOSTDLIB: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-LINUX-NOSTDLIB-NOT: "{{.*}}/Inputs/resource_dir{{/|}}lib{{/|}}linux{{/|}}libclang_rt.builtins-i686.a" +// CHECK-LINUX-NOSTDLIB-NOT: "{{.*}}/Inputs/resource_dir{{/|}}lib{{/|}}linux{{/|}}libclang_rt.builtins-i386.a" // CHECK-MSVC-NOSTDLIB: warning: argument unused during compilation: '--rtlib=compiler-rt' Index: cfe/trunk/test/Driver/print-libgcc-file-name-clangrt.c === --- cfe/trunk/test/Driver/print-libgcc-file-name-clangrt.c +++ cfe/trunk/test/Driver/print-libgcc-file-name-clangrt.c @@ -6,9 +6,15 @@ // CHECK-CLANGRT-X8664: libclang_rt.builtins-x86_64.a // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ +// RUN: --target=i386-pc-linux \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I386 %s +// CHECK-CLANGRT-I386: libclang_rt.builtins-i386.a + +// Check whether alternate arch values map to the correct library. +// +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ // RUN: --target=i686-pc-linux \ -// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I686 %s -// CHECK-CLANGRT-I686: libclang_rt.builtins-i686.a +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I386 %s // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ // RUN: --target=arm-linux-gnueabi \ Index: cfe/trunk/lib/Driver/ToolChain.cpp === ---
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny added a comment. @eugenis, thanks for the suggestion. I've found the problematic push (that attempts to move the wrong file) and filed https://reviews.llvm.org/D37226 for review. Repository: rL LLVM https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
eugenis added a comment. In https://reviews.llvm.org/D26796#853446, @mgorny wrote: > The problems: > > 1. > http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/builds/2140/steps/annotate/logs/stdio > -- purely this change, This one still builds i686 libraries. Maybe it needs a clean cmake? Try "clobber" "1" in build properties. [171/178] Linking CXX shared library /var/lib/buildbot/sanitizer-buildbot6/sanitizer-x86_64-linux-android/build/llvm_build64/lib/clang/6.0.0/lib/linux/libclang_rt.asan-i686-android.so [172/178] Linking CXX static library /var/lib/buildbot/sanitizer-buildbot6/sanitizer-x86_64-linux-android/build/llvm_build64/lib/clang/6.0.0/lib/linux/libclang_rt.asan-i686-android.a > 2. > http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/builds/2146/steps/run%20instrumented%20asan%20tests%20%5Bi686%2Ffugu-userdebug%2FN2G48C%5D/logs/stdio > -- after https://reviews.llvm.org/D26764. This probably needs an update of zorg/buildbot/builders/sanitizers/buildbot_android.sh in the zorg repo. Repository: rL LLVM https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny reopened this revision. mgorny added a comment. This revision is now accepted and ready to land. I have reverted the changes for now to fix Android. Repository: rL LLVM https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny added a comment. The problems: 1. http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/builds/2140/steps/annotate/logs/stdio -- purely this change, 2. http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/builds/2146/steps/run%20instrumented%20asan%20tests%20%5Bi686%2Ffugu-userdebug%2FN2G48C%5D/logs/stdio -- after https://reviews.llvm.org/D26764. Repository: rL LLVM https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny added a comment. @eugenis, it seems that this broke the Android buildbot. Could you suggest an appropriate course of action? I suppose we either have to fix Android-something to use i386, or keep using i686 for Android. The latter I know how to do but for the former, I have no clue where the issue might be. Repository: rL LLVM https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny added a comment. Thanks a lot. Let's hope no buildbot complains now ;-). Repository: rL LLVM https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
This revision was automatically updated to reflect the committed changes. Closed by commit rL311836: [Driver] Use arch type to find compiler-rt libraries (on Linux) (authored by mgorny). Changed prior to commit: https://reviews.llvm.org/D26796?vs=112796=112800#toc Repository: rL LLVM https://reviews.llvm.org/D26796 Files: cfe/trunk/lib/Driver/ToolChain.cpp cfe/trunk/test/Driver/Inputs/basic_linux_tree/usr/i686-unknown-linux/lib/.keep cfe/trunk/test/Driver/Inputs/basic_linux_tree/usr/lib/gcc/i686-unknown-linux/4.6.0/crtbegin.o cfe/trunk/test/Driver/linux-ld.c cfe/trunk/test/Driver/nostdlib.c cfe/trunk/test/Driver/print-libgcc-file-name-clangrt.c cfe/trunk/test/Driver/windows-cross.c Index: cfe/trunk/test/Driver/print-libgcc-file-name-clangrt.c === --- cfe/trunk/test/Driver/print-libgcc-file-name-clangrt.c +++ cfe/trunk/test/Driver/print-libgcc-file-name-clangrt.c @@ -6,9 +6,15 @@ // CHECK-CLANGRT-X8664: libclang_rt.builtins-x86_64.a // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ +// RUN: --target=i386-pc-linux \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I386 %s +// CHECK-CLANGRT-I386: libclang_rt.builtins-i386.a + +// Check whether alternate arch values map to the correct library. +// +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ // RUN: --target=i686-pc-linux \ -// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I686 %s -// CHECK-CLANGRT-I686: libclang_rt.builtins-i686.a +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I386 %s // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ // RUN: --target=arm-linux-gnueabi \ Index: cfe/trunk/test/Driver/linux-ld.c === --- cfe/trunk/test/Driver/linux-ld.c +++ cfe/trunk/test/Driver/linux-ld.c @@ -71,6 +71,27 @@ // CHECK-LD-RT: libclang_rt.builtins-x86_64.a" // // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=i686-unknown-linux \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: --rtlib=compiler-rt \ +// RUN: | FileCheck --check-prefix=CHECK-LD-RT-I686 %s +// CHECK-LD-RT-I686-NOT: warning: +// CHECK-LD-RT-I686: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" +// CHECK-LD-RT-I686: "--eh-frame-hdr" +// CHECK-LD-RT-I686: "-m" "elf_i386" +// CHECK-LD-RT-I686: "-dynamic-linker" +// CHECK-LD-RT-I686: "{{.*}}/usr/lib/gcc/i686-unknown-linux/4.6.0{{/|}}crtbegin.o" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../../../i686-unknown-linux/lib" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../.." +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/lib" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib" +// CHECK-LD-RT-I686: libclang_rt.builtins-i386.a" +// CHECK-LD-RT-I686: "-lc" +// CHECK-LD-RT-I686: libclang_rt.builtins-i386.a" +// +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=arm-linux-androideabi \ // RUN: --gcc-toolchain="" \ // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ Index: cfe/trunk/test/Driver/nostdlib.c === --- cfe/trunk/test/Driver/nostdlib.c +++ cfe/trunk/test/Driver/nostdlib.c @@ -27,5 +27,5 @@ // // CHECK-LINUX-NOSTDLIB: warning: argument unused during compilation: '--rtlib=compiler-rt' // CHECK-LINUX-NOSTDLIB: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-LINUX-NOSTDLIB-NOT: "{{.*}}/Inputs/resource_dir{{/|}}lib{{/|}}linux{{/|}}libclang_rt.builtins-i686.a" +// CHECK-LINUX-NOSTDLIB-NOT: "{{.*}}/Inputs/resource_dir{{/|}}lib{{/|}}linux{{/|}}libclang_rt.builtins-i386.a" // CHECK-MSVC-NOSTDLIB: warning: argument unused during compilation: '--rtlib=compiler-rt' Index: cfe/trunk/test/Driver/windows-cross.c === --- cfe/trunk/test/Driver/windows-cross.c +++ cfe/trunk/test/Driver/windows-cross.c @@ -64,7 +64,7 @@ // RUN:| FileCheck %s --check-prefix CHECK-SANITIZE-ADDRESS-EXE-X86 // CHECK-SANITIZE-ADDRESS-EXE-X86: "-fsanitize=address" -// CHECK-SANITIZE-ADDRESS-EXE-X86: "{{.*}}clang_rt.asan_dynamic-i686.lib" "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i686.lib" "--undefined" "___asan_seh_interceptor" +// CHECK-SANITIZE-ADDRESS-EXE-X86: "{{.*}}clang_rt.asan_dynamic-i386.lib" "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i386.lib" "--undefined" "___asan_seh_interceptor" // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=lld-link2 -shared -o shared.dll -fsanitize=tsan -x c++ %s 2>&1 \ // RUN:| FileCheck %s --check-prefix CHECK-SANITIZE-TSAN Index: cfe/trunk/lib/Driver/ToolChain.cpp
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
compnerd accepted this revision. compnerd added a comment. I don't think that there is a guarantee that compiler-rt and clang are upgraded in lockstep. At least for the builtins, there is a relatively stable interface. However, I don't think that at this point the Windows MSVC environment depends on compiler-rt much (except for complex multiplication/division in C99+). That can be satisfied with `vcclang.lib`. So, this is probably better off now than before. https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny updated this revision to Diff 112796. mgorny added a comment. Rebased the patch since it no longer applied. https://reviews.llvm.org/D26796 Files: lib/Driver/ToolChain.cpp test/Driver/Inputs/basic_linux_tree/usr/i686-unknown-linux/lib/.keep test/Driver/Inputs/basic_linux_tree/usr/lib/gcc/i686-unknown-linux/4.6.0/crtbegin.o test/Driver/linux-ld.c test/Driver/nostdlib.c test/Driver/print-libgcc-file-name-clangrt.c test/Driver/windows-cross.c Index: test/Driver/windows-cross.c === --- test/Driver/windows-cross.c +++ test/Driver/windows-cross.c @@ -64,7 +64,7 @@ // RUN:| FileCheck %s --check-prefix CHECK-SANITIZE-ADDRESS-EXE-X86 // CHECK-SANITIZE-ADDRESS-EXE-X86: "-fsanitize=address" -// CHECK-SANITIZE-ADDRESS-EXE-X86: "{{.*}}clang_rt.asan_dynamic-i686.lib" "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i686.lib" "--undefined" "___asan_seh_interceptor" +// CHECK-SANITIZE-ADDRESS-EXE-X86: "{{.*}}clang_rt.asan_dynamic-i386.lib" "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i386.lib" "--undefined" "___asan_seh_interceptor" // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=lld-link2 -shared -o shared.dll -fsanitize=tsan -x c++ %s 2>&1 \ // RUN:| FileCheck %s --check-prefix CHECK-SANITIZE-TSAN Index: test/Driver/print-libgcc-file-name-clangrt.c === --- test/Driver/print-libgcc-file-name-clangrt.c +++ test/Driver/print-libgcc-file-name-clangrt.c @@ -5,10 +5,16 @@ // RUN: | FileCheck --check-prefix=CHECK-CLANGRT-X8664 %s // CHECK-CLANGRT-X8664: libclang_rt.builtins-x86_64.a +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ +// RUN: --target=i386-pc-linux \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I386 %s +// CHECK-CLANGRT-I386: libclang_rt.builtins-i386.a + +// Check whether alternate arch values map to the correct library. +// // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ // RUN: --target=i686-pc-linux \ -// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I686 %s -// CHECK-CLANGRT-I686: libclang_rt.builtins-i686.a +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I386 %s // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ // RUN: --target=arm-linux-gnueabi \ Index: test/Driver/nostdlib.c === --- test/Driver/nostdlib.c +++ test/Driver/nostdlib.c @@ -27,5 +27,5 @@ // // CHECK-LINUX-NOSTDLIB: warning: argument unused during compilation: '--rtlib=compiler-rt' // CHECK-LINUX-NOSTDLIB: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-LINUX-NOSTDLIB-NOT: "{{.*}}/Inputs/resource_dir{{/|}}lib{{/|}}linux{{/|}}libclang_rt.builtins-i686.a" +// CHECK-LINUX-NOSTDLIB-NOT: "{{.*}}/Inputs/resource_dir{{/|}}lib{{/|}}linux{{/|}}libclang_rt.builtins-i386.a" // CHECK-MSVC-NOSTDLIB: warning: argument unused during compilation: '--rtlib=compiler-rt' Index: test/Driver/linux-ld.c === --- test/Driver/linux-ld.c +++ test/Driver/linux-ld.c @@ -71,6 +71,27 @@ // CHECK-LD-RT: libclang_rt.builtins-x86_64.a" // // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=i686-unknown-linux \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: --rtlib=compiler-rt \ +// RUN: | FileCheck --check-prefix=CHECK-LD-RT-I686 %s +// CHECK-LD-RT-I686-NOT: warning: +// CHECK-LD-RT-I686: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" +// CHECK-LD-RT-I686: "--eh-frame-hdr" +// CHECK-LD-RT-I686: "-m" "elf_i386" +// CHECK-LD-RT-I686: "-dynamic-linker" +// CHECK-LD-RT-I686: "{{.*}}/usr/lib/gcc/i686-unknown-linux/4.6.0{{/|}}crtbegin.o" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../../../i686-unknown-linux/lib" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../.." +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/lib" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib" +// CHECK-LD-RT-I686: libclang_rt.builtins-i386.a" +// CHECK-LD-RT-I686: "-lc" +// CHECK-LD-RT-I686: libclang_rt.builtins-i386.a" +// +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=arm-linux-androideabi \ // RUN: --gcc-toolchain="" \ // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ Index: lib/Driver/ToolChain.cpp === --- lib/Driver/ToolChain.cpp +++ lib/Driver/ToolChain.cpp @@ -297,15 +297,12 @@ const llvm::Triple = TC.getTriple(); bool IsWindows = Triple.isOSWindows(); - if (Triple.isWindowsMSVCEnvironment() && TC.getArch() == llvm::Triple::x86) -return "i386"; - if
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny added a comment. Another ping. Since 4.0.0 final has been tagged, I think we should get back to working on this. @compnerd, any suggestion how to proceed here? https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
compnerd added a comment. I do think that this is an issue. Particularly for Windows targets, which have usually had the different architecture value. https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny added a comment. @compnerd, ping. Do you really think this is a real issue? As I said on the other patch, the only case when compiler-rt would generate i686-suffixed library is if the builder specifically used `-march=i686` for the compiler-rt build, and in that case the i386 variant (which is identical to the i686 variant since both are built with the same flags) is built anyway. https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny added a comment. In https://reviews.llvm.org/D26796#632602, @compnerd wrote: > This would need an upgrade path, since the output name can actually be > different from the `AchTypeName` (e.g. i386 vs i686). I was considering committing this alongside with the i686 removal, and assuming that people are going to upgrade clang and compiler-rt in lockstep. Is there any other case that needs explicit consideration? Do you have another suggestion on handling this? https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
compnerd added a comment. This would need an upgrade path, since the output name can actually be different from the `AchTypeName` (e.g. i386 vs i686). https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
eugenis accepted this revision. eugenis added a comment. This revision is now accepted and ready to land. LGTM https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny added a comment. Second ping. https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
rengolin resigned from this revision. rengolin removed a reviewer: rengolin. rengolin added a comment. I don't know enough about the x86 environment to be able to review this patch. Sorry. https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny added a comment. Ping. https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny updated this revision to Diff 78378. mgorny marked 2 inline comments as done. mgorny added a comment. Updated the -print-libgcc-file-name test name. Additionally, I've added another subvariant of that test using i686-* target to ensure that the mapping works for that function too, in case we ever decide to split it. https://reviews.llvm.org/D26796 Files: lib/Driver/ToolChain.cpp test/Driver/Inputs/basic_linux_tree/usr/i686-unknown-linux/lib/.keep test/Driver/Inputs/basic_linux_tree/usr/lib/gcc/i686-unknown-linux/4.6.0/crtbegin.o test/Driver/linux-ld.c test/Driver/nostdlib.c test/Driver/print-libgcc-file-name-clangrt.c test/Driver/windows-cross.c Index: test/Driver/windows-cross.c === --- test/Driver/windows-cross.c +++ test/Driver/windows-cross.c @@ -59,7 +59,7 @@ // RUN:| FileCheck %s --check-prefix CHECK-SANITIZE-ADDRESS-EXE-X86 // CHECK-SANITIZE-ADDRESS-EXE-X86: "-fsanitize=address" -// CHECK-SANITIZE-ADDRESS-EXE-X86: "{{.*}}clang_rt.asan_dynamic-i686.lib" "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i686.lib" "--undefined" "___asan_seh_interceptor" +// CHECK-SANITIZE-ADDRESS-EXE-X86: "{{.*}}clang_rt.asan_dynamic-i386.lib" "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i386.lib" "--undefined" "___asan_seh_interceptor" // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=lld-link2 -shared -o shared.dll -fsanitize=tsan -x c++ %s 2>&1 \ // RUN:| FileCheck %s --check-prefix CHECK-SANITIZE-TSAN Index: test/Driver/print-libgcc-file-name-clangrt.c === --- test/Driver/print-libgcc-file-name-clangrt.c +++ test/Driver/print-libgcc-file-name-clangrt.c @@ -6,6 +6,12 @@ // CHECK-CLANGRT-X8664: libclang_rt.builtins-x86_64.a // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ +// RUN: --target=i386-pc-linux \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I386 %s +// CHECK-CLANGRT-I386: libclang_rt.builtins-i386.a + +// Check whether alternate arch values map to the correct library. +// +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ // RUN: --target=i686-pc-linux \ -// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I686 %s -// CHECK-CLANGRT-I686: libclang_rt.builtins-i686.a +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I386 %s Index: test/Driver/nostdlib.c === --- test/Driver/nostdlib.c +++ test/Driver/nostdlib.c @@ -14,18 +14,18 @@ // passed down to link line // RUN: %clang -no-canonical-prefixes %s -### -Wno-liblto -o %t.o 2>&1 \ // RUN: -target i686-pc-linux-gnu -nostdlib --rtlib=compiler-rt \ -// RUN: -resource-dir=%S/Inputs/resource_dir -lclang_rt.builtins-i686 \ +// RUN: -resource-dir=%S/Inputs/resource_dir -lclang_rt.builtins-i386 \ // RUN: | FileCheck --check-prefix=CHECK-LINUX-NOSTDLIB %s // // RUN: %clang -no-canonical-prefixes %s -### -Wno-liblto -o %t.o 2>&1 \ // RUN: -target i686-pc-linux-gnu --rtlib=compiler-rt -nostdlib \ -// RUN: -resource-dir=%S/Inputs/resource_dir -lclang_rt.builtins-i686 \ +// RUN: -resource-dir=%S/Inputs/resource_dir -lclang_rt.builtins-i386 \ // RUN: | FileCheck --check-prefix=CHECK-LINUX-NOSTDLIB %s // // RUN: %clang -target x86_64-pc-windows-msvc -nostdlib --rtlib=compiler-rt -### -Wno-liblto %s 2>&1 | FileCheck %s -check-prefix CHECK-MSVC-NOSTDLIB // RUN: %clang -target x86_64-pc-windows-msvc --rtlib=compiler-rt -nostdlib -### -Wno-liblto %s 2>&1 | FileCheck %s -check-prefix CHECK-MSVC-NOSTDLIB // // CHECK-LINUX-NOSTDLIB: warning: argument unused during compilation: '--rtlib=compiler-rt' // CHECK-LINUX-NOSTDLIB: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-LINUX-NOSTDLIB-NOT: "{{.*}}/Inputs/resource_dir{{/|}}lib{{/|}}linux{{/|}}libclang_rt.builtins-i686.a" +// CHECK-LINUX-NOSTDLIB-NOT: "{{.*}}/Inputs/resource_dir{{/|}}lib{{/|}}linux{{/|}}libclang_rt.builtins-i386.a" // CHECK-MSVC-NOSTDLIB: warning: argument unused during compilation: '--rtlib=compiler-rt' Index: test/Driver/linux-ld.c === --- test/Driver/linux-ld.c +++ test/Driver/linux-ld.c @@ -71,6 +71,27 @@ // CHECK-LD-RT: libclang_rt.builtins-x86_64.a" // // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=i686-unknown-linux \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: --rtlib=compiler-rt \ +// RUN: | FileCheck --check-prefix=CHECK-LD-RT-I686 %s +// CHECK-LD-RT-I686-NOT: warning: +// CHECK-LD-RT-I686: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" +// CHECK-LD-RT-I686: "--eh-frame-hdr" +// CHECK-LD-RT-I686: "-m" "elf_i386" +// CHECK-LD-RT-I686: "-dynamic-linker" +// CHECK-LD-RT-I686:
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny added inline comments. Comment at: test/Driver/print-libgcc-file-name-clangrt.c:11 // RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I686 %s -// CHECK-CLANGRT-I686: libclang_rt.builtins-i686.a +// CHECK-CLANGRT-I686: libclang_rt.builtins-i386.a jroelofs wrote: > This CHECK's name is now a lie. Right. I'll change it. https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny updated this revision to Diff 78370. mgorny added a comment. Updated expected output for existing tests and added an additional test to linux-ld.c. https://reviews.llvm.org/D26796 Files: lib/Driver/ToolChain.cpp test/Driver/Inputs/basic_linux_tree/usr/i686-unknown-linux/lib/.keep test/Driver/Inputs/basic_linux_tree/usr/lib/gcc/i686-unknown-linux/4.6.0/crtbegin.o test/Driver/linux-ld.c test/Driver/nostdlib.c test/Driver/print-libgcc-file-name-clangrt.c test/Driver/windows-cross.c Index: test/Driver/windows-cross.c === --- test/Driver/windows-cross.c +++ test/Driver/windows-cross.c @@ -59,7 +59,7 @@ // RUN:| FileCheck %s --check-prefix CHECK-SANITIZE-ADDRESS-EXE-X86 // CHECK-SANITIZE-ADDRESS-EXE-X86: "-fsanitize=address" -// CHECK-SANITIZE-ADDRESS-EXE-X86: "{{.*}}clang_rt.asan_dynamic-i686.lib" "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i686.lib" "--undefined" "___asan_seh_interceptor" +// CHECK-SANITIZE-ADDRESS-EXE-X86: "{{.*}}clang_rt.asan_dynamic-i386.lib" "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i386.lib" "--undefined" "___asan_seh_interceptor" // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=lld-link2 -shared -o shared.dll -fsanitize=tsan -x c++ %s 2>&1 \ // RUN:| FileCheck %s --check-prefix CHECK-SANITIZE-TSAN Index: test/Driver/print-libgcc-file-name-clangrt.c === --- test/Driver/print-libgcc-file-name-clangrt.c +++ test/Driver/print-libgcc-file-name-clangrt.c @@ -6,6 +6,6 @@ // CHECK-CLANGRT-X8664: libclang_rt.builtins-x86_64.a // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name 2>&1 \ -// RUN: --target=i686-pc-linux \ +// RUN: --target=i386-pc-linux \ // RUN: | FileCheck --check-prefix=CHECK-CLANGRT-I686 %s -// CHECK-CLANGRT-I686: libclang_rt.builtins-i686.a +// CHECK-CLANGRT-I686: libclang_rt.builtins-i386.a Index: test/Driver/nostdlib.c === --- test/Driver/nostdlib.c +++ test/Driver/nostdlib.c @@ -14,18 +14,18 @@ // passed down to link line // RUN: %clang -no-canonical-prefixes %s -### -Wno-liblto -o %t.o 2>&1 \ // RUN: -target i686-pc-linux-gnu -nostdlib --rtlib=compiler-rt \ -// RUN: -resource-dir=%S/Inputs/resource_dir -lclang_rt.builtins-i686 \ +// RUN: -resource-dir=%S/Inputs/resource_dir -lclang_rt.builtins-i386 \ // RUN: | FileCheck --check-prefix=CHECK-LINUX-NOSTDLIB %s // // RUN: %clang -no-canonical-prefixes %s -### -Wno-liblto -o %t.o 2>&1 \ // RUN: -target i686-pc-linux-gnu --rtlib=compiler-rt -nostdlib \ -// RUN: -resource-dir=%S/Inputs/resource_dir -lclang_rt.builtins-i686 \ +// RUN: -resource-dir=%S/Inputs/resource_dir -lclang_rt.builtins-i386 \ // RUN: | FileCheck --check-prefix=CHECK-LINUX-NOSTDLIB %s // // RUN: %clang -target x86_64-pc-windows-msvc -nostdlib --rtlib=compiler-rt -### -Wno-liblto %s 2>&1 | FileCheck %s -check-prefix CHECK-MSVC-NOSTDLIB // RUN: %clang -target x86_64-pc-windows-msvc --rtlib=compiler-rt -nostdlib -### -Wno-liblto %s 2>&1 | FileCheck %s -check-prefix CHECK-MSVC-NOSTDLIB // // CHECK-LINUX-NOSTDLIB: warning: argument unused during compilation: '--rtlib=compiler-rt' // CHECK-LINUX-NOSTDLIB: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-LINUX-NOSTDLIB-NOT: "{{.*}}/Inputs/resource_dir{{/|}}lib{{/|}}linux{{/|}}libclang_rt.builtins-i686.a" +// CHECK-LINUX-NOSTDLIB-NOT: "{{.*}}/Inputs/resource_dir{{/|}}lib{{/|}}linux{{/|}}libclang_rt.builtins-i386.a" // CHECK-MSVC-NOSTDLIB: warning: argument unused during compilation: '--rtlib=compiler-rt' Index: test/Driver/linux-ld.c === --- test/Driver/linux-ld.c +++ test/Driver/linux-ld.c @@ -71,6 +71,27 @@ // CHECK-LD-RT: libclang_rt.builtins-x86_64.a" // // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=i686-unknown-linux \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: --rtlib=compiler-rt \ +// RUN: | FileCheck --check-prefix=CHECK-LD-RT-I686 %s +// CHECK-LD-RT-I686-NOT: warning: +// CHECK-LD-RT-I686: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" +// CHECK-LD-RT-I686: "--eh-frame-hdr" +// CHECK-LD-RT-I686: "-m" "elf_i386" +// CHECK-LD-RT-I686: "-dynamic-linker" +// CHECK-LD-RT-I686: "{{.*}}/usr/lib/gcc/i686-unknown-linux/4.6.0{{/|}}crtbegin.o" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../../../i686-unknown-linux/lib" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../.." +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/lib" +// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib" +// CHECK-LD-RT-I686: libclang_rt.builtins-i386.a" +//
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
jroelofs added a comment. Testcase? https://reviews.llvm.org/D26796 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26796: [Driver] Use arch type to find compiler-rt libraries (on Linux)
mgorny created this revision. mgorny added reviewers: rsmith, compnerd, pcc, rengolin. mgorny added a subscriber: cfe-commits. Herald added a subscriber: dberris. Use llvm::Triple::getArchTypeName() when looking for compiler-rt libraries, rather than the exact arch string from the triple. This is more correct as it matches the values used when building compiler-rt (builtin-config-ix.cmake) which are the subset of the values allowed in triples. For example, this fixes an issue when the compiler set for i686-pc-linux-gnu triple would not find an i386 compiler-rt library, while this is the exact arch that is detected by compiler-rt. The same applies to any other i?86 variant allowed by LLVM. This also makes the special case for MSVC unnecessary, since now i386 will be used reliably for all 32-bit x86 variants. https://reviews.llvm.org/D26796 Files: lib/Driver/ToolChain.cpp Index: lib/Driver/ToolChain.cpp === --- lib/Driver/ToolChain.cpp +++ lib/Driver/ToolChain.cpp @@ -283,15 +283,12 @@ const llvm::Triple = TC.getTriple(); bool IsWindows = Triple.isOSWindows(); - if (Triple.isWindowsMSVCEnvironment() && TC.getArch() == llvm::Triple::x86) -return "i386"; - if (TC.getArch() == llvm::Triple::arm || TC.getArch() == llvm::Triple::armeb) return (arm::getARMFloatABI(TC, Args) == arm::FloatABI::Hard && !IsWindows) ? "armhf" : "arm"; - return TC.getArchName(); + return llvm::Triple::getArchTypeName(TC.getArch()); } std::string ToolChain::getCompilerRT(const ArgList , StringRef Component, Index: lib/Driver/ToolChain.cpp === --- lib/Driver/ToolChain.cpp +++ lib/Driver/ToolChain.cpp @@ -283,15 +283,12 @@ const llvm::Triple = TC.getTriple(); bool IsWindows = Triple.isOSWindows(); - if (Triple.isWindowsMSVCEnvironment() && TC.getArch() == llvm::Triple::x86) -return "i386"; - if (TC.getArch() == llvm::Triple::arm || TC.getArch() == llvm::Triple::armeb) return (arm::getARMFloatABI(TC, Args) == arm::FloatABI::Hard && !IsWindows) ? "armhf" : "arm"; - return TC.getArchName(); + return llvm::Triple::getArchTypeName(TC.getArch()); } std::string ToolChain::getCompilerRT(const ArgList , StringRef Component, ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits