diff options
Diffstat (limited to 'test/Driver/linux-ld.c')
-rw-r--r-- | test/Driver/linux-ld.c | 127 |
1 files changed, 107 insertions, 20 deletions
diff --git a/test/Driver/linux-ld.c b/test/Driver/linux-ld.c index c15e24d294a9..f9f4b482c920 100644 --- a/test/Driver/linux-ld.c +++ b/test/Driver/linux-ld.c @@ -388,6 +388,15 @@ // CHECK-GCC-VERSION4: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" // CHECK-GCC-VERSION4: "{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99{{/|\\\\}}crtbegin.o" // CHECK-GCC-VERSION4: "-L{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99" +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=i386-unknown-linux -m32 \ +// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing5/bin \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION5 %s +// CHECK-GCC-VERSION5: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" +// CHECK-GCC-VERSION5: "{{.*}}/Inputs/gcc_version_parsing5/bin/../lib/gcc/i386-unknown-linux/5{{/|\\\\}}crtbegin.o" +// CHECK-GCC-VERSION5: "-L{{.*}}/Inputs/gcc_version_parsing5/bin/../lib/gcc/i386-unknown-linux/5" // // Test a simulated installation of libc++ on Linux, both through sysroot and // the installation path of Clang. @@ -474,7 +483,7 @@ // RUN: --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \ // RUN: | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM-HF %s // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" -// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-dynamic-linker" "/lib/ld-linux-armhf.so.3" +// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-dynamic-linker" "{{(/usr/arm--linux-gnueabihf)?}}/lib/ld-linux-armhf.so.3" // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crt1.o" // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crti.o" // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtbegin.o" @@ -493,7 +502,7 @@ // RUN: --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \ // RUN: | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM %s // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" -// CHECK-X86-64-UBUNTU-13-10-ARM: "-dynamic-linker" "/lib/ld-linux.so.3" +// CHECK-X86-64-UBUNTU-13-10-ARM: "-dynamic-linker" "{{(/usr/arm--linux-gnueabi)?}}/lib/ld-linux.so.3" // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crt1.o" // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crti.o" // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtbegin.o" @@ -636,7 +645,7 @@ // RUN: | FileCheck --check-prefix=CHECK-PPC64 %s // CHECK-PPC64: "{{.*}}ld{{(.exe)?}}" // CHECK-PPC64: "-m" "elf64ppc" -// CHECK-PPC64: "-dynamic-linker" "{{.*}}/lib64/ld64.so.1" +// CHECK-PPC64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1" // // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=powerpc64-linux-gnu -mabi=elfv1 \ @@ -646,35 +655,35 @@ // RUN: | FileCheck --check-prefix=CHECK-PPC64-ELFv1 %s // CHECK-PPC64-ELFv1: "{{.*}}ld{{(.exe)?}}" // CHECK-PPC64-ELFv1: "-m" "elf64ppc" -// CHECK-PPC64-ELFv1: "-dynamic-linker" "{{.*}}/lib64/ld64.so.1" +// CHECK-PPC64-ELFv1: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1" // // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=powerpc64-linux-gnu -mabi=elfv2 \ // RUN: | FileCheck --check-prefix=CHECK-PPC64-ELFv2 %s // CHECK-PPC64-ELFv2: "{{.*}}ld{{(.exe)?}}" // CHECK-PPC64-ELFv2: "-m" "elf64ppc" -// CHECK-PPC64-ELFv2: "-dynamic-linker" "{{.*}}/lib64/ld64.so.2" +// CHECK-PPC64-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2" // // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=powerpc64le-linux-gnu \ // RUN: | FileCheck --check-prefix=CHECK-PPC64LE %s // CHECK-PPC64LE: "{{.*}}ld{{(.exe)?}}" // CHECK-PPC64LE: "-m" "elf64lppc" -// CHECK-PPC64LE: "-dynamic-linker" "{{.*}}/lib64/ld64.so.2" +// CHECK-PPC64LE: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2" // // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=powerpc64le-linux-gnu -mabi=elfv1 \ // RUN: | FileCheck --check-prefix=CHECK-PPC64LE-ELFv1 %s // CHECK-PPC64LE-ELFv1: "{{.*}}ld{{(.exe)?}}" // CHECK-PPC64LE-ELFv1: "-m" "elf64lppc" -// CHECK-PPC64LE-ELFv1: "-dynamic-linker" "{{.*}}/lib64/ld64.so.1" +// CHECK-PPC64LE-ELFv1: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1" // // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=powerpc64le-linux-gnu -mabi=elfv2 \ // RUN: | FileCheck --check-prefix=CHECK-PPC64LE-ELFv2 %s // CHECK-PPC64LE-ELFv2: "{{.*}}ld{{(.exe)?}}" // CHECK-PPC64LE-ELFv2: "-m" "elf64lppc" -// CHECK-PPC64LE-ELFv2: "-dynamic-linker" "{{.*}}/lib64/ld64.so.2" +// CHECK-PPC64LE-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2" // // Check that we do not pass --hash-style=gnu and --hash-style=both to linker // and provide correct path to the dynamic linker and emulation mode when build @@ -714,7 +723,7 @@ // RUN: | FileCheck --check-prefix=CHECK-MIPS64 %s // CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}" // CHECK-MIPS64: "-m" "elf64btsmip" -// CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib64/ld.so.1" +// CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1" // CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}" // // RUN: %clang %s -### -o %t.o 2>&1 \ @@ -722,21 +731,21 @@ // RUN: | FileCheck --check-prefix=CHECK-MIPS64EL %s // CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}" // CHECK-MIPS64EL: "-m" "elf64ltsmip" -// CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib64/ld.so.1" +// CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1" // CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}" // // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mnan=2008 \ // RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-NAN2008 %s // CHECK-MIPS64EL-NAN2008: "{{.*}}ld{{(.exe)?}}" // CHECK-MIPS64EL-NAN2008: "-m" "elf64ltsmip" -// CHECK-MIPS64EL-NAN2008: "-dynamic-linker" "{{.*}}/lib64/ld-linux-mipsn8.so.1" +// CHECK-MIPS64EL-NAN2008: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-linux-mipsn8.so.1" // CHECK-MIPS64EL-NAN2008-NOT: "--hash-style={{gnu|both}}" // // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mcpu=mips64r6 \ // RUN: | FileCheck --check-prefix=CHECK-MIPS64R6EL %s // CHECK-MIPS64R6EL: "{{.*}}ld{{(.exe)?}}" // CHECK-MIPS64R6EL: "-m" "elf64ltsmip" -// CHECK-MIPS64R6EL: "-dynamic-linker" "{{.*}}/lib64/ld-linux-mipsn8.so.1" +// CHECK-MIPS64R6EL: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-linux-mipsn8.so.1" // CHECK-MIPS64R6EL-NOT: "--hash-style={{gnu|both}}" // // RUN: %clang %s -### -o %t.o 2>&1 \ @@ -744,7 +753,7 @@ // RUN: | FileCheck --check-prefix=CHECK-MIPS64-N32 %s // CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" // CHECK-MIPS64-N32: "-m" "elf32btsmipn32" -// CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1" +// CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1" // CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}" // // RUN: %clang %s -### -o %t.o 2>&1 \ @@ -752,36 +761,44 @@ // RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s // CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" // CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32" -// CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1" +// CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1" // CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}" // // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mabi=n32 \ // RUN: -mnan=2008 | FileCheck --check-prefix=CHECK-MIPS64EL-N32-NAN2008 %s // CHECK-MIPS64EL-N32-NAN2008: "{{.*}}ld{{(.exe)?}}" // CHECK-MIPS64EL-N32-NAN2008: "-m" "elf32ltsmipn32" -// CHECK-MIPS64EL-N32-NAN2008: "-dynamic-linker" "{{.*}}/lib32/ld-linux-mipsn8.so.1" +// CHECK-MIPS64EL-N32-NAN2008: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld-linux-mipsn8.so.1" // CHECK-MIPS64EL-N32-NAN2008-NOT: "--hash-style={{gnu|both}}" // +// RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-redhat-linux \ +// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-REDHAT %s +// CHECK-MIPS64EL-REDHAT: "{{.*}}ld{{(.exe)?}}" +// CHECK-MIPS64EL-REDHAT: "-m" "elf64ltsmip" +// CHECK-MIPS64EL-REDHAT: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1" +// CHECK-MIPS64EL-REDHAT-NOT: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-musl-mipsel.so.1" +// CHECK-MIPS64EL-REDHAT-NOT: "--hash-style={{gnu|both}}" +// // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=sparc-unknown-linux-gnu \ // RUN: | FileCheck --check-prefix=CHECK-SPARCV8 %s // CHECK-SPARCV8: "{{.*}}ld{{(.exe)?}}" // CHECK-SPARCV8: "-m" "elf32_sparc" -// CHECK-SPARCV8: "-dynamic-linker" "/lib/ld-linux.so.2" +// CHECK-SPARCV8: "-dynamic-linker" "{{(/usr/sparc-unknown-linux-gnu)?}}/lib/ld-linux.so.2" // // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=sparcel-unknown-linux-gnu \ // RUN: | FileCheck --check-prefix=CHECK-SPARCV8EL %s // CHECK-SPARCV8EL: "{{.*}}ld{{(.exe)?}}" // CHECK-SPARCV8EL: "-m" "elf32_sparc" -// CHECK-SPARCV8EL: "-dynamic-linker" "/lib/ld-linux.so.2" +// CHECK-SPARCV8EL: "-dynamic-linker" "{{(/usr/sparcel-unknown-linux-gnu)?}}/lib/ld-linux.so.2" // // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=sparcv9-unknown-linux-gnu \ // RUN: | FileCheck --check-prefix=CHECK-SPARCV9 %s // CHECK-SPARCV9: "{{.*}}ld{{(.exe)?}}" // CHECK-SPARCV9: "-m" "elf64_sparc" -// CHECK-SPARCV9: "-dynamic-linker" "/lib64/ld-linux.so.2" +// CHECK-SPARCV9: "-dynamic-linker" "{{(/usr/sparcv9-unknown-linux-gnu)?}}/lib{{(64)?}}/ld-linux.so.2" // // Thoroughly exercise the Debian multiarch environment. // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ @@ -1553,7 +1570,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ARMEB %s // CHECK-ARMEB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" // CHECK-ARMEB-NOT: "--be8" -// CHECK-ARMEB: "-m" "armebelf_linux_eabi" +// CHECK-ARMEB: "-m" "armelfb_linux_eabi" // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=armebv7-unknown-linux \ @@ -1562,4 +1579,74 @@ // RUN: | FileCheck --check-prefix=CHECK-ARMV7EB %s // CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" // CHECK-ARMV7EB: "--be8" -// CHECK-ARMV7EB: "-m" "armebelf_linux_eabi" +// CHECK-ARMV7EB: "-m" "armelfb_linux_eabi" + +// Check dynamic-linker for musl-libc +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=i386-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-X86 %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=x86_64-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-X86_64 %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=mips-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPS %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=mipsel-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPSEL %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=mips64-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPS64 %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=mips64el-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPS64EL %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=powerpc-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-PPC %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=powerpc64-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-PPC64 %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=thumb-pc-linux-musleabi \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARM %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=thumb-pc-linux-musleabihf \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=thumbeb-pc-linux-musleabi \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=thumbeb-pc-linux-musleabihf \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=arm-pc-linux-musleabi \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARM %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=arm-pc-linux-musleabihf \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=armeb-pc-linux-musleabi \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=armeb-pc-linux-musleabihf \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=aarch64-pc-linux-musleabi \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-AARCH64 %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=aarch64_be-pc-linux-musleabi \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-AARCH64_BE %s +// CHECK-MUSL-X86: "-dynamic-linker" "/lib/ld-musl-i386.so.1" +// CHECK-MUSL-X86_64: "-dynamic-linker" "/lib/ld-musl-x86_64.so.1" +// CHECK-MUSL-MIPS: "-dynamic-linker" "/lib/ld-musl-mips.so.1" +// CHECK-MUSL-MIPSEL: "-dynamic-linker" "/lib/ld-musl-mipsel.so.1" +// CHECK-MUSL-MIPS64: "-dynamic-linker" "/lib/ld-musl-mips64.so.1" +// CHECK-MUSL-MIPS64EL: "-dynamic-linker" "/lib/ld-musl-mips64el.so.1" +// CHECK-MUSL-PPC: "-dynamic-linker" "/lib/ld-musl-powerpc.so.1" +// CHECK-MUSL-PPC64: "-dynamic-linker" "/lib/ld-musl-powerpc64.so.1" +// CHECK-MUSL-ARM: "-dynamic-linker" "/lib/ld-musl-arm.so.1" +// CHECK-MUSL-ARMHF: "-dynamic-linker" "/lib/ld-musl-armhf.so.1" +// CHECK-MUSL-ARMEB: "-dynamic-linker" "/lib/ld-musl-armeb.so.1" +// CHECK-MUSL-ARMEBHF: "-dynamic-linker" "/lib/ld-musl-armebhf.so.1" +// CHECK-MUSL-AARCH64: "-dynamic-linker" "/lib/ld-musl-aarch64.so.1" +// CHECK-MUSL-AARCH64_BE: "-dynamic-linker" "/lib/ld-musl-aarch64_be.so.1" |