brintos

brintos / llvm-project-archived public Read only

0
0
Text · 100.3 KiB · be3293c Raw
1795 lines · c
1// UNSUPPORTED: system-windows2// General tests that ld invocations on Linux targets sane. Note that we use3// sysroot to make these tests independent of the host system.4//5// RUN: %clang -### -Werror %s -no-pie 2>&1 \6// RUN:     --target=i386-unknown-linux -rtlib=platform --unwindlib=platform \7// RUN:     --sysroot=%S/Inputs/basic_linux_tree \8// RUN:   | FileCheck --check-prefix=CHECK-LD-32 %s9// CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"10// CHECK-LD-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/10.2.0{{/|\\\\}}crtbegin.o"11// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/10.2.0"12// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/10.2.0/../../../../i386-unknown-linux/lib"13// CHECK-LD-32: "-L[[SYSROOT]]/lib"14// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib"15//16// RUN: %clang -### %s -Werror -no-pie 2>&1 \17// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \18// RUN:     --sysroot=%S/Inputs/basic_linux_tree \19// RUN:   | FileCheck --check-prefix=CHECK-LD-64 %s20// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"21// CHECK-LD-64: "--eh-frame-hdr"22// CHECK-LD-64: "-m" "elf_x86_64"23// CHECK-LD-64: "-dynamic-linker"24// CHECK-LD-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0{{/|\\\\}}crtbegin.o"25// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0"26// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"27// CHECK-LD-64: "-L[[SYSROOT]]/lib"28// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib"29// CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"30// CHECK-LD-64: "-lc"31// CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"32//33// RUN: %clang -### %s -Werror -no-pie 2>&1 \34// RUN:     --target=x86_64-unknown-linux-gnux32 -rtlib=platform --unwindlib=platform \35// RUN:     --sysroot=%S/Inputs/basic_linux_tree \36// RUN:   | FileCheck --check-prefix=CHECK-LD-X32 %s37// CHECK-LD-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"38// CHECK-LD-X32: "--eh-frame-hdr"39// CHECK-LD-X32: "-m" "elf32_x86_64"40// CHECK-LD-X32: "-dynamic-linker"41// CHECK-LD-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"42// CHECK-LD-X32: "-lc"43// CHECK-LD-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"44//45// RUN: %clang -### %s -Werror -no-pie 2>&1 \46// RUN:     --target=x86_64-unknown-linux \47// RUN:     -resource-dir=%S/Inputs/resource_dir \48// RUN:     --sysroot=%S/Inputs/basic_linux_tree \49// RUN:     --rtlib=compiler-rt \50// RUN:   | FileCheck --check-prefix=CHECK-LD-RT %s51// CHECK-LD-RT: "-resource-dir" "[[RESDIR:[^"]*]]"52// CHECK-LD-RT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"53// CHECK-LD-RT: "--eh-frame-hdr"54// CHECK-LD-RT: "-m" "elf_x86_64"55// CHECK-LD-RT: "-dynamic-linker"56// CHECK-LD-RT: "[[RESDIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-linux{{/|\\\\}}clang_rt.crtbegin.o"57// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0"58// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"59// CHECK-LD-RT: "-L[[SYSROOT]]/lib"60// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib"61// CHECK-LD-RT: libclang_rt.builtins.a"62// CHECK-LD-RT: "-lc"63// CHECK-LD-RT: libclang_rt.builtins.a"64// CHECK-LD-RT: "[[RESDIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-linux{{/|\\\\}}clang_rt.crtend.o"65//66// RUN: %clang -### %s -Werror -no-pie 2>&1 \67// RUN:     --target=i686-unknown-linux \68// RUN:     -resource-dir=%S/Inputs/resource_dir \69// RUN:     --sysroot=%S/Inputs/basic_linux_tree \70// RUN:     --rtlib=compiler-rt \71// RUN:   | FileCheck --check-prefix=CHECK-LD-RT-I686 %s72// CHECK-LD-RT-I686: "-resource-dir" "[[RESDIR:[^"]*]]"73// CHECK-LD-RT-I686: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"74// CHECK-LD-RT-I686: "--eh-frame-hdr"75// CHECK-LD-RT-I686: "-m" "elf_i386"76// CHECK-LD-RT-I686: "-dynamic-linker"77// CHECK-LD-RT-I686: "[[RESDIR]]{{/|\\\\}}lib{{/|\\\\}}i686-unknown-linux{{/|\\\\}}clang_rt.crtbegin.o"78// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/10.2.0"79// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/10.2.0/../../../../i686-unknown-linux/lib"80// CHECK-LD-RT-I686: "-L[[SYSROOT]]/lib"81// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib"82// CHECK-LD-RT-I686: libclang_rt.builtins.a"83// CHECK-LD-RT-I686: "-lc"84// CHECK-LD-RT-I686: libclang_rt.builtins.a"85// CHECK-LD-RT-I686: "[[RESDIR]]{{/|\\\\}}lib{{/|\\\\}}i686-unknown-linux{{/|\\\\}}clang_rt.crtend.o"86//87// RUN: %clang -### %s -Werror -no-pie 2>&1 \88// RUN:     --target=arm-linux-androideabi \89// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \90// RUN:     -resource-dir=%S/Inputs/resource_dir \91// RUN:     --rtlib=compiler-rt \92// RUN:   | FileCheck --check-prefix=CHECK-LD-RT-ANDROID %s93// CHECK-LD-RT-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"94// CHECK-LD-RT-ANDROID: "--eh-frame-hdr"95// CHECK-LD-RT-ANDROID: "-m" "armelf_linux_eabi"96// CHECK-LD-RT-ANDROID: "-dynamic-linker"97// CHECK-LD-RT-ANDROID: libclang_rt.builtins.a"98// CHECK-LD-RT-ANDROID: "-lc"99// CHECK-LD-RT-ANDROID: libclang_rt.builtins.a"100//101// RUN: %clang -### %s -Werror -no-pie 2>&1 \102// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \103// RUN:     --sysroot=%S/Inputs/basic_linux_tree \104// RUN:   | FileCheck --check-prefix=CHECK-LD-GCC %s105// CHECK-LD-GCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"106// CHECK-LD-GCC: "--eh-frame-hdr"107// CHECK-LD-GCC: "-m" "elf_x86_64"108// CHECK-LD-GCC: "-dynamic-linker"109// CHECK-LD-GCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0{{/|\\\\}}crtbegin.o"110// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0"111// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"112// CHECK-LD-GCC: "-L[[SYSROOT]]/lib"113// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib"114// CHECK-LD-GCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"115// CHECK-LD-GCC: "-lc"116// CHECK-LD-GCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"117//118// RUN: %clang -### %s -Werror -no-pie 2>&1 \119// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \120// RUN:     -static-libgcc \121// RUN:     --sysroot=%S/Inputs/basic_linux_tree \122// RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC-LIBGCC %s123// CHECK-LD-64-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"124// CHECK-LD-64-STATIC-LIBGCC: "--eh-frame-hdr"125// CHECK-LD-64-STATIC-LIBGCC: "-m" "elf_x86_64"126// CHECK-LD-64-STATIC-LIBGCC: "-dynamic-linker"127// CHECK-LD-64-STATIC-LIBGCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0{{/|\\\\}}crtbegin.o"128// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0"129// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"130// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/lib"131// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib"132// CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"133// CHECK-LD-64-STATIC-LIBGCC: "-lc"134// CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"135//136// RUN: %clang -### %s -no-pie 2>&1 \137// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \138// RUN:     --sysroot=%S/Inputs/basic_linux_tree \139// RUN:   | FileCheck --check-prefix=CHECK-CLANG-NO-LIBGCC %s140// CHECK-CLANG-NO-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"141// CHECK-CLANG-NO-LIBGCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"142// CHECK-CLANG-NO-LIBGCC: "-lc"143// CHECK-CLANG-NO-LIBGCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"144//145// RUN: %clangxx -### %s -no-pie 2>&1 \146// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \147// RUN:     --sysroot=%S/Inputs/basic_linux_tree \148// RUN:   | FileCheck --check-prefix=CHECK-CLANGXX-NO-LIBGCC %s149// CHECK-CLANGXX-NO-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"150// CHECK-CLANGXX-NO-LIBGCC: "-lgcc_s" "-lgcc"151// CHECK-CLANGXX-NO-LIBGCC: "-lc"152// CHECK-CLANGXX-NO-LIBGCC: "-lgcc_s" "-lgcc"153//154// RUN: %clang -static -### %s 2>&1 \155// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \156// RUN:     --sysroot=%S/Inputs/basic_linux_tree \157// RUN:   | FileCheck --check-prefix=CHECK-CLANG-NO-LIBGCC-STATIC %s158// CHECK-CLANG-NO-LIBGCC-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"159// CHECK-CLANG-NO-LIBGCC-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"160//161// RUN: %clang -static-pie -### %s 2>&1 \162// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \163// RUN:     --sysroot=%S/Inputs/basic_linux_tree \164// RUN:   | FileCheck --check-prefix=CHECK-CLANG-LD-STATIC-PIE %s165// CHECK-CLANG-LD-STATIC-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"166// CHECK-CLANG-LD-STATIC-PIE: "-m" "elf_x86_64"167// CHECK-CLANG-LD-STATIC-PIE-SAME: "-static" "-pie" "--no-dynamic-linker" "-z" "text"168// CHECK-CLANG-LD-STATIC-PIE: "{{.*}}rcrt1.o"169// CHECK-CLANG-LD-STATIC-PIE: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"170//171// RUN: not %clang -static-pie -pie -### %s -no-pie 2>&1 \172// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \173// RUN:     --sysroot=%S/Inputs/basic_linux_tree \174// RUN:   | FileCheck --check-prefix=CHECK-CLANG-LD-STATIC-PIE-PIE %s175// CHECK-CLANG-LD-STATIC-PIE-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"176// CHECK-CLANG-LD-STATIC-PIE-PIE: "-m" "elf_x86_64"177// CHECK-CLANG-LD-STATIC-PIE-PIE-SAME: "-static" "-pie" "--no-dynamic-linker" "-z" "text"178// CHECK-CLANG-LD-STATIC-PIE-PIE: "{{.*}}rcrt1.o"179// CHECK-CLANG-LD-STATIC-PIE-PIE: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"180//181// RUN: not %clang -static-pie -static -### %s -no-pie 2>&1 \182// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \183// RUN:     --sysroot=%S/Inputs/basic_linux_tree \184// RUN:   | FileCheck --check-prefix=CHECK-CLANG-LD-STATIC-PIE-STATIC %s185// CHECK-CLANG-LD-STATIC-PIE-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"186// CHECK-CLANG-LD-STATIC-PIE-STATIC: "-m" "elf_x86_64"187// CHECK-CLANG-LD-STATIC-PIE-STATIC-SAME: "-static" "-pie" "--no-dynamic-linker" "-z" "text"188// CHECK-CLANG-LD-STATIC-PIE-STATIC: "{{.*}}rcrt1.o"189// CHECK-CLANG-LD-STATIC-PIE-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"190//191// RUN: not %clang -static-pie -### %s -no-pie 2>&1 \192// RUN:     --target=x86_64-unknown-linux -rtlib=platform \193// RUN:     --sysroot=%S/Inputs/basic_linux_tree \194// RUN:   | FileCheck --check-prefix=CHECK-CLANG-LD-STATIC-PIE-NOPIE %s195// CHECK-CLANG-LD-STATIC-PIE-NOPIE: error: cannot specify 'nopie' along with 'static-pie'196//197// RUN: %clang -dynamic -### %s -no-pie 2>&1 \198// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \199// RUN:     --sysroot=%S/Inputs/basic_linux_tree \200// RUN:   | FileCheck --check-prefix=CHECK-CLANG-NO-LIBGCC-DYNAMIC %s201// CHECK-CLANG-NO-LIBGCC-DYNAMIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"202// CHECK-CLANG-NO-LIBGCC-DYNAMIC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"203// CHECK-CLANG-NO-LIBGCC-DYNAMIC: "-lc"204// CHECK-CLANG-NO-LIBGCC-DYNAMIC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"205//206// RUN: %clang -static-libgcc -### %s -no-pie 2>&1 \207// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \208// RUN:     --sysroot=%S/Inputs/basic_linux_tree \209// RUN:   | FileCheck --check-prefix=CHECK-CLANG-STATIC-LIBGCC %s210// CHECK-CLANG-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"211// CHECK-CLANG-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"212// CHECK-CLANG-STATIC-LIBGCC: "-lc"213// CHECK-CLANG-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"214//215// RUN: %clang -static-libgcc -dynamic -### %s -no-pie 2>&1 \216// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \217// RUN:     --sysroot=%S/Inputs/basic_linux_tree \218// RUN:   | FileCheck --check-prefix=CHECK-CLANG-STATIC-LIBGCC-DYNAMIC %s219// CHECK-CLANG-STATIC-LIBGCC-DYNAMIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"220// CHECK-CLANG-STATIC-LIBGCC-DYNAMIC: "-lgcc" "-lgcc_eh"221// CHECK-CLANG-STATIC-LIBGCC-DYNAMIC: "-lc"222// CHECK-CLANG-STATIC-LIBGCC-DYNAMIC: "-lgcc" "-lgcc_eh"223//224// RUN: %clang -shared-libgcc -### %s -no-pie 2>&1 \225// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \226// RUN:     --sysroot=%S/Inputs/basic_linux_tree \227// RUN:   | FileCheck --check-prefix=CHECK-CLANG-SHARED-LIBGCC %s228// CHECK-CLANG-SHARED-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"229// CHECK-CLANG-SHARED-LIBGCC: "-lgcc_s" "-lgcc"230// CHECK-CLANG-SHARED-LIBGCC: "-lc"231// CHECK-CLANG-SHARED-LIBGCC: "-lgcc_s" "-lgcc"232//233// RUN: %clang -shared-libgcc -dynamic -### %s -no-pie 2>&1 \234// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \235// RUN:     --sysroot=%S/Inputs/basic_linux_tree \236// RUN:   | FileCheck --check-prefix=CHECK-CLANG-SHARED-LIBGCC-DYNAMIC %s237// CHECK-CLANG-SHARED-LIBGCC-DYNAMIC: "-lgcc_s" "-lgcc"238// CHECK-CLANG-SHARED-LIBGCC-DYNAMIC: "-lc"239// CHECK-CLANG-SHARED-LIBGCC-DYNAMIC: "-lgcc_s" "-lgcc"240//241// RUN: %clang -### %s -no-pie 2>&1 \242// RUN:     --target=aarch64-linux-android -rtlib=platform --unwindlib=platform \243// RUN:     --sysroot=%S/Inputs/basic_linux_tree \244// RUN:   | FileCheck --check-prefix=CHECK-CLANG-ANDROID-NONE %s245// CHECK-CLANG-ANDROID-NONE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"246// CHECK-CLANG-ANDROID-NONE: "-l:libunwind.a" "-ldl" "-lc"247//248// RUN: %clang -shared -### %s -no-pie 2>&1 \249// RUN:     --target=aarch64-linux-android -rtlib=platform --unwindlib=platform \250// RUN:     --sysroot=%S/Inputs/basic_linux_tree \251// RUN:   | FileCheck --check-prefix=CHECK-CLANG-ANDROID-SHARED %s252// CHECK-CLANG-ANDROID-SHARED: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"253// CHECK-CLANG-ANDROID-SHARED: "-l:libunwind.a" "-ldl" "-lc"254//255// RUN: %clang -static -### %s -no-pie 2>&1 \256// RUN:     --target=aarch64-linux-android -rtlib=platform --unwindlib=platform \257// RUN:     --sysroot=%S/Inputs/basic_linux_tree \258// RUN:     -resource-dir=%S/Inputs/resource_dir \259// RUN:   | FileCheck --check-prefix=CHECK-CLANG-ANDROID-STATIC %s260// CHECK-CLANG-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"261// CHECK-CLANG-ANDROID-STATIC: "--start-group" "{{[^"]*}}{{/|\\\\}}libclang_rt.builtins.a" "-l:libunwind.a" "-lc" "--end-group"262//263// RUN: %clang -### %s -Werror --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \264// RUN:     -static \265// RUN:     --sysroot=%S/Inputs/basic_linux_tree 2>&1 \266// RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s267// CHECK-LD-64-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"268// CHECK-LD-64-STATIC: "--eh-frame-hdr"269// CHECK-LD-64-STATIC: "-m" "elf_x86_64"270// CHECK-LD-64-STATIC-NOT: "-dynamic-linker"271// CHECK-LD-64-STATIC: "-static"272// CHECK-LD-64-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0{{/|\\\\}}crtbeginT.o"273// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0"274// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"275// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/lib"276// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib"277// CHECK-LD-64-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"278 279// RUN: %clang -no-pie -### %s --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform -shared -static \280// RUN:   --sysroot=%S/Inputs/basic_linux_tree 2>&1 | FileCheck --check-prefix=CHECK-LD-SHARED-STATIC %s281// CHECK-LD-SHARED-STATIC: "-shared" "-static"282// CHECK-LD-SHARED-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0{{/|\\\\}}crtbeginS.o"283// CHECK-LD-SHARED-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0{{/|\\\\}}crtendS.o"284 285// Check that flags can be combined. The -static dominates.286// RUN: %clang -### %s 2>&1 \287// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform \288// RUN:     -static-libgcc -static \289// RUN:     --sysroot=%S/Inputs/basic_linux_tree \290// RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s291//292// RUN: %clang -### %s -no-pie 2>&1 \293// RUN:     --target=i386-unknown-linux -rtlib=platform --unwindlib=platform -m32 \294// RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \295// RUN:   | FileCheck --check-prefix=CHECK-32-TO-32 %s296// CHECK-32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"297// CHECK-32-TO-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/10.2.0{{/|\\\\}}crtbegin.o"298// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/10.2.0"299// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/10.2.0/../../../../i386-unknown-linux/lib/../lib32"300// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/10.2.0/../../../../lib32"301// CHECK-32-TO-32: "-L[[SYSROOT]]/lib/../lib32"302// CHECK-32-TO-32: "-L[[SYSROOT]]/usr{{/|\\\\}}lib32"303// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/10.2.0/../../../../i386-unknown-linux/lib"304// CHECK-32-TO-32: "-L[[SYSROOT]]/lib"305// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib"306//307// RUN: %clang -### %s -no-pie 2>&1 \308// RUN:     --target=i386-unknown-linux -rtlib=platform --unwindlib=platform -m64 \309// RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \310// RUN:   | FileCheck --check-prefix=CHECK-32-TO-64 %s311// CHECK-32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"312// CHECK-32-TO-64: "{{.*}}/usr/lib/gcc/i386-unknown-linux/10.2.0/64{{/|\\\\}}crtbegin.o"313// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/10.2.0/64"314// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/10.2.0/../../../../i386-unknown-linux/lib/../lib64"315// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/10.2.0/../../../../lib64"316// CHECK-32-TO-64: "-L[[SYSROOT]]/lib/../lib64"317// CHECK-32-TO-64: "-L[[SYSROOT]]/usr{{/|\\\\}}lib64"318// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/10.2.0/../../../../i386-unknown-linux/lib"319// CHECK-32-TO-64: "-L[[SYSROOT]]/lib"320// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib"321//322// RUN: %clang -### %s -no-pie 2>&1 \323// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform -m64 \324// RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \325// RUN:   | FileCheck --check-prefix=CHECK-64-TO-64 %s326// CHECK-64-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"327// CHECK-64-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0{{/|\\\\}}crtbegin.o"328// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0"329// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib/../lib64"330// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../lib64"331// CHECK-64-TO-64: "-L[[SYSROOT]]/lib/../lib64"332// CHECK-64-TO-64: "-L[[SYSROOT]]/usr{{/|\\\\}}lib64"333// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"334// CHECK-64-TO-64: "-L[[SYSROOT]]/lib"335// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib"336//337// RUN: not %clang -### %s -no-pie 2>&1 \338// RUN:     --target=x86_64-unknown-linux -rtlib=plaform --unwindlib=platform -m32 \339// RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \340// RUN:   | FileCheck --check-prefix=CHECK-64-TO-32 %s341// CHECK-64-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"342// CHECK-64-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0/32{{/|\\\\}}crtbegin.o"343// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/32"344// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib/../lib32"345// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../lib32"346// CHECK-64-TO-32: "-L[[SYSROOT]]/lib/../lib32"347// CHECK-64-TO-32: "-L[[SYSROOT]]/usr{{/|\\\\}}lib32"348// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"349// CHECK-64-TO-32: "-L[[SYSROOT]]/lib"350// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib"351//352// RUN: %clang -### %s -no-pie 2>&1 \353// RUN:     --target=x86_64-unknown-linux-gnux32 -rtlib=platform --unwindlib=platform \354// RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \355// RUN:   | FileCheck --check-prefix=CHECK-X32 %s356// CHECK-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"357// CHECK-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0/x32{{/|\\\\}}crtbegin.o"358// CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/x32"359// CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib/../libx32"360// CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../libx32"361// CHECK-X32: "-L[[SYSROOT]]/lib/../libx32"362// CHECK-X32: "-L[[SYSROOT]]/usr{{/|\\\\}}libx32"363// CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"364// CHECK-X32: "-L[[SYSROOT]]/lib"365// CHECK-X32: "-L[[SYSROOT]]/usr/lib"366//367// RUN: %clang -### %s -no-pie 2>&1 \368// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform -mx32 \369// RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \370// RUN:   | FileCheck --check-prefix=CHECK-64-TO-X32 %s371// CHECK-64-TO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"372// CHECK-64-TO-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0/x32{{/|\\\\}}crtbegin.o"373// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/x32"374// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib/../libx32"375// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../libx32"376// CHECK-64-TO-X32: "-L[[SYSROOT]]/lib/../libx32"377// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr{{/|\\\\}}libx32"378// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"379// CHECK-64-TO-X32: "-L[[SYSROOT]]/lib"380// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib"381//382// RUN: %clang -### %s -no-pie 2>&1 \383// RUN:     --target=i386-unknown-linux -rtlib=platform --unwindlib=platform -mx32 \384// RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \385// RUN:   | FileCheck --check-prefix=CHECK-32-TO-X32 %s386// CHECK-32-TO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"387// CHECK-32-TO-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0/x32{{/|\\\\}}crtbegin.o"388// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/x32"389// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib/../libx32"390// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../libx32"391// CHECK-32-TO-X32: "-L[[SYSROOT]]/lib/../libx32"392// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr{{/|\\\\}}libx32"393// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"394// CHECK-32-TO-X32: "-L[[SYSROOT]]/lib"395// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib"396//397// RUN: %clang -### %s -no-pie 2>&1 \398// RUN:     --target=x86_64-unknown-linux-gnux32 -rtlib=platform --unwindlib=platform -m64 \399// RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \400// RUN:   | FileCheck --check-prefix=CHECK-X32-TO-64 %s401// CHECK-X32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"402// CHECK-X32-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0{{/|\\\\}}crtbegin.o"403// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0"404// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib/../lib64"405// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../lib64"406// CHECK-X32-TO-64: "-L[[SYSROOT]]/lib/../lib64"407// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr{{/|\\\\}}lib64"408// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"409// CHECK-X32-TO-64: "-L[[SYSROOT]]/lib"410// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib"411//412// RUN: %clang -### %s -no-pie 2>&1 \413// RUN:     --target=x86_64-unknown-linux-gnux32 -rtlib=platform --unwindlib=platform -m32 \414// RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \415// RUN:   | FileCheck --check-prefix=CHECK-X32-TO-32 %s416// CHECK-X32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"417// CHECK-X32-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0/32{{/|\\\\}}crtbegin.o"418// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/32"419// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib/../lib32"420// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../lib32"421// CHECK-X32-TO-32: "-L[[SYSROOT]]/lib/../lib32"422// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr{{/|\\\\}}lib32"423// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/10.2.0/../../../../x86_64-unknown-linux/lib"424// CHECK-X32-TO-32: "-L[[SYSROOT]]/lib"425// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib"426//427// RUN: %clang -### %s -no-pie 2>&1 \428// RUN:     --target=x86_64-unknown-linux -rtlib=platform --unwindlib=platform -m32 \429// RUN:     --gcc-toolchain=%S/Inputs/multilib_64bit_linux_tree/usr \430// RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \431// RUN:   | FileCheck --check-prefix=CHECK-64-TO-32-SYSROOT %s432// CHECK-64-TO-32-SYSROOT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"433// CHECK-64-TO-32-SYSROOT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/10.2.0/32{{/|\\\\}}crtbegin.o"434// CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/10.2.0/32"435// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib/../lib32"436// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr{{/|\\\\}}lib32"437// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib"438// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib"439//440// Check that we support unusual patch version formats, including missing that441// component.442// RUN: %clang -### %s -no-pie 2>&1 \443// RUN:     --target=i386-unknown-linux -rtlib=platform --unwindlib=platform -m32 \444// RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing1/bin \445// RUN:     --sysroot=%S/Inputs/basic_linux_tree \446// RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION1 %s447// CHECK-GCC-VERSION1: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"448// CHECK-GCC-VERSION1: "{{.*}}/Inputs/basic_linux_tree/usr/lib/gcc/i386-unknown-linux/10.2.0{{/|\\\\}}crtbegin.o"449 450// Test a simulated installation of libc++ on Linux, both through sysroot and451// the installation path of Clang.452// RUN: %clangxx -x c++ -### %s -no-pie 2>&1 \453// RUN:     --target=x86_64-unknown-linux-gnu \454// RUN:     -stdlib=libc++ \455// RUN:     -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \456// RUN:     -resource-dir=%S/Inputs/resource_dir \457// RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \458// RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-SYSROOT %s459// CHECK-BASIC-LIBCXX-SYSROOT: "-cc1"460// CHECK-BASIC-LIBCXX-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"461// CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"462// CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"463// CHECK-BASIC-LIBCXX-SYSROOT: "--sysroot=[[SYSROOT]]"464// RUN: %clang -x c++ -### %s -no-pie 2>&1 \465// RUN:     --target=x86_64-unknown-linux-gnu \466// RUN:     -stdlib=libc++ \467// RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \468// RUN:     -resource-dir=%S/Inputs/resource_dir \469// RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \470// RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-INSTALL %s471// CHECK-BASIC-LIBCXX-INSTALL: "-cc1"472// CHECK-BASIC-LIBCXX-INSTALL: "-isysroot" "[[SYSROOT:[^"]+]]"473// CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"474// CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/local/include"475// CHECK-BASIC-LIBCXX-INSTALL: "--sysroot=[[SYSROOT]]"476//477// Test that we can use -stdlib=libc++ in a build system even when it478// occasionally links C code instead of C++ code.479// RUN: %clang -x c -### %s -Werror -no-pie 2>&1 \480// RUN:     --target=x86_64-unknown-linux-gnu \481// RUN:     -stdlib=libc++ \482// RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \483// RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \484// RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-C-LINK %s485// CHECK-BASIC-LIBCXX-C-LINK: "-cc1"486// CHECK-BASIC-LIBCXX-C-LINK: "-isysroot" "[[SYSROOT:[^"]+]]"487// CHECK-BASIC-LIBCXX-C-LINK-NOT: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"488// CHECK-BASIC-LIBCXX-C-LINK: "-internal-isystem" "[[SYSROOT]]/usr/local/include"489// CHECK-BASIC-LIBCXX-C-LINK: "--sysroot=[[SYSROOT]]"490//491// Check multi arch support on Ubuntu 12.04 LTS.492// RUN: %clang -### %s -no-pie 2>&1 \493// RUN:     --target=arm-unknown-linux-gnueabihf -rtlib=platform --unwindlib=platform \494// RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \495// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s496//497// Check that musleabihf is treated as a hardfloat config, with respect to498// multiarch directories.499//500// RUN: %clang -### %s -no-pie 2>&1 \501// RUN:     --target=arm-unknown-linux-musleabihf -rtlib=platform --unwindlib=platform \502// RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \503// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s504// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"505// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/arm-linux-gnueabihf{{/|\\\\}}crt1.o"506// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/arm-linux-gnueabihf{{/|\\\\}}crti.o"507// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtbegin.o"508// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3"509// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/lib/arm-linux-gnueabihf"510// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabihf"511// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtend.o"512// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/arm-linux-gnueabihf{{/|\\\\}}crtn.o"513//514// Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabihf.515// RUN: %clang -### %s -no-pie 2>&1 \516// RUN:     --target=arm-linux-gnueabihf -rtlib=platform --unwindlib=platform \517// RUN:     --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \518// RUN:   | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM-HF %s519// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"520// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-dynamic-linker" "{{(/usr/arm--linux-gnueabihf)?}}/lib/ld-linux-armhf.so.3"521// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crt1.o"522// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crti.o"523// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtbegin.o"524// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8"525// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib"526// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/lib/../lib"527// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr{{/|\\\\}}lib"528// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib"529// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtend.o"530// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crtn.o"531//532// Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabi.533// RUN: %clang -### %s -no-pie 2>&1 \534// RUN:     --target=arm-linux-gnueabi -rtlib=platform --unwindlib=platform \535// RUN:     --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \536// RUN:   | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM %s537// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"538// CHECK-X86-64-UBUNTU-13-10-ARM: "-dynamic-linker" "{{(/usr/arm--linux-gnueabi)?}}/lib/ld-linux.so.3"539// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crt1.o"540// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crti.o"541// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtbegin.o"542// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7"543// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib"544// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/lib/../lib"545// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr{{/|\\\\}}lib"546// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib"547// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtend.o"548// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crtn.o"549//550// Check Ubuntu 14.04 on powerpc64le.551// RUN: %clang -### %s -no-pie 2>&1 \552// RUN:     --target=powerpc64le-unknown-linux-gnu -rtlib=platform --unwindlib=platform \553// RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \554// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-PPC64LE %s555// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"556// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/powerpc64le-linux-gnu{{/|\\\\}}crt1.o"557// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/powerpc64le-linux-gnu{{/|\\\\}}crti.o"558// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8{{/|\\\\}}crtbegin.o"559// CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8"560// CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/lib/powerpc64le-linux-gnu"561// CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/powerpc64le-linux-gnu"562// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8{{/|\\\\}}crtend.o"563// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/powerpc64le-linux-gnu{{/|\\\\}}crtn.o"564//565// Check Ubuntu 14.04 on x32.566// "/usr/lib/gcc/x86_64-linux-gnu/4.8/x32/crtend.o" "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32/crtn.o"567// RUN: %clang -### %s -no-pie 2>&1 \568// RUN:     --target=x86_64-unknown-linux-gnux32 -rtlib=platform --unwindlib=platform \569// RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \570// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-X32 %s571// CHECK-UBUNTU-14-04-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"572// CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crt1.o"573// CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crti.o"574// CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/x32{{/|\\\\}}crtbegin.o"575// CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/x32"576// CHECK-UBUNTU-14-04-X32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32"577// CHECK-UBUNTU-14-04-X32-SAME: {{^}} "-L[[SYSROOT]]/lib/../libx32"578// CHECK-UBUNTU-14-04-X32-SAME: {{^}} "-L[[SYSROOT]]/usr{{/|\\\\}}libx32"579// CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/x32{{/|\\\\}}crtend.o"580// CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crtn.o"581//582// Check fedora 18 on arm.583// RUN: %clang -### %s -no-pie 2>&1 \584// RUN:     --target=armv7-unknown-linux-gnueabihf -rtlib=platform --unwindlib=platform \585// RUN:     --sysroot=%S/Inputs/fedora_18_tree \586// RUN:   | FileCheck --check-prefix=CHECK-FEDORA-18-ARM-HF %s587// CHECK-FEDORA-18-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"588// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crt1.o"589// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crti.o"590// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtbegin.o"591// CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2"592// CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib"593// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtend.o"594// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crtn.o"595//596// Check Fedora 21 on AArch64.597// RUN: %clang -### %s -no-pie 2>&1 \598// RUN:     --target=arm64-unknown-linux-gnu -rtlib=platform --unwindlib=platform \599// RUN:     --sysroot=%S/Inputs/fedora_21_tree \600// RUN:   | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s601// RUN: %clang -### %s -no-pie 2>&1 \602// RUN:     --target=aarch64-unknown-linux-gnu -rtlib=platform --unwindlib=platform \603// RUN:     --sysroot=%S/Inputs/fedora_21_tree \604// RUN:   | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s605// CHECK-FEDORA-21-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"606// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crt1.o"607// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crti.o"608// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtbegin.o"609// CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0"610// CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64"611// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtend.o"612// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crtn.o"613//614// Check Fedora 31 on riscv64.615// RUN: %clang -### %s -no-pie 2>&1 \616// RUN:     --target=riscv64-redhat-linux -rtlib=platform --unwindlib=platform \617// RUN:     --sysroot=%S/Inputs/fedora_31_riscv64_tree \618// RUN:   | FileCheck --check-prefix=CHECK-FEDORA-31-RISCV64 %s619// CHECK-FEDORA-31-RISCV64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"620// CHECK-FEDORA-31-RISCV64: "{{.*}}/usr/lib/gcc/riscv64-redhat-linux/9/../../../../lib64{{/|\\\\}}crt1.o"621// CHECK-FEDORA-31-RISCV64: "{{.*}}/usr/lib/gcc/riscv64-redhat-linux/9{{/|\\\\}}crti.o"622// CHECK-FEDORA-31-RISCV64: "{{.*}}/usr/lib/gcc/riscv64-redhat-linux/9{{/|\\\\}}crtbegin.o"623// CHECK-FEDORA-31-RISCV64: "-L[[SYSROOT]]/usr/lib/gcc/riscv64-redhat-linux/9"624// CHECK-FEDORA-31-RISCV64: "-L[[SYSROOT]]/usr/lib/gcc/riscv64-redhat-linux/9/../../../../lib64"625// CHECK-FEDORA-31-RISCV64: "{{.*}}/usr/lib/gcc/riscv64-redhat-linux/9{{/|\\\\}}crtend.o"626// CHECK-FEDORA-31-RISCV64: "{{.*}}/usr/lib/gcc/riscv64-redhat-linux/9{{/|\\\\}}crtn.o"627//628// RUN: %clang -### %s -no-pie 2>&1 \629// RUN:     --target=arm-unknown-linux-gnueabi -rtlib=platform --unwindlib=platform \630// RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \631// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s632// CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"633// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/arm-linux-gnueabi{{/|\\\\}}crt1.o"634// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/arm-linux-gnueabi{{/|\\\\}}crti.o"635// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtbegin.o"636// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1"637// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi"638// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi"639// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtend.o"640// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/arm-linux-gnueabi{{/|\\\\}}crtn.o"641//642// Test the setup that shipped in SUSE 10.3 on ppc64.643// RUN: %clang -### %s -no-pie 2>&1 \644// RUN:     --target=powerpc64-suse-linux -rtlib=platform --unwindlib=platform \645// RUN:     --sysroot=%S/Inputs/suse_10.3_ppc64_tree \646// RUN:   | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s647// CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"648// CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64{{/|\\\\}}crtbegin.o"649// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"650// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64"651// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64"652// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr{{/|\\\\}}lib64"653//654// Check openSuse Leap 42.2 on AArch64655// RUN: %clang -### %s -no-pie 2>&1 \656// RUN:     --target=arm64-unknown-linux-gnu -rtlib=platform --unwindlib=platform \657// RUN:     --sysroot=%S/Inputs/opensuse_42.2_aarch64_tree \658// RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-42-2-AARCH64 %s659// RUN: %clang -### %s -no-pie 2>&1 \660// RUN:     --target=aarch64-unknown-linux-gnu -rtlib=platform --unwindlib=platform \661// RUN:     --sysroot=%S/Inputs/opensuse_42.2_aarch64_tree \662// RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-42-2-AARCH64 %s663// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"664// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64{{/|\\\\}}crt1.o"665// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64{{/|\\\\}}crti.o"666// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8{{/|\\\\}}crtbegin.o"667// CHECK-OPENSUSE-42-2-AARCH64: "-L[[SYSROOT]]/usr/lib64/gcc/aarch64-suse-linux/4.8"668// CHECK-OPENSUSE-42-2-AARCH64: "-L[[SYSROOT]]/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64"669// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8{{/|\\\\}}crtend.o"670// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64{{/|\\\\}}crtn.o"671//672// Check openSUSE Tumbleweed on armv6hl673// RUN: %clang -### %s -no-pie 2>&1 \674// RUN:     --target=armv6hl-suse-linux-gnueabi -rtlib=platform --unwindlib=platform \675// RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_armv6hl_tree \676// RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV6HL %s677// RUN: %clang -### %s -no-pie 2>&1 \678// RUN:     --target=armv6hl-suse-linux-gnueabi -rtlib=platform --unwindlib=platform \679// RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_armv6hl_tree \680// RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV6HL %s681// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"682// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crt1.o"683// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crti.o"684// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5{{/|\\\\}}crtbegin.o"685// CHECK-OPENSUSE-TW-ARMV6HL: "-L[[SYSROOT]]/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5"686// CHECK-OPENSUSE-TW-ARMV6HL: "-L[[SYSROOT]]/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib"687// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5{{/|\\\\}}crtend.o"688// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crtn.o"689//690// Check openSUSE Tumbleweed on armv7hl691// RUN: %clang -### %s -no-pie 2>&1 \692// RUN:     --target=armv7hl-suse-linux-gnueabi -rtlib=platform --unwindlib=platform \693// RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_armv7hl_tree \694// RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV7HL %s695// RUN: %clang -### %s -no-pie 2>&1 \696// RUN:     --target=armv7hl-suse-linux-gnueabi -rtlib=platform --unwindlib=platform \697// RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_armv7hl_tree \698// RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV7HL %s699// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"700// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crt1.o"701// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crti.o"702// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5{{/|\\\\}}crtbegin.o"703// CHECK-OPENSUSE-TW-ARMV7HL: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5"704// CHECK-OPENSUSE-TW-ARMV7HL: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib"705// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5{{/|\\\\}}crtend.o"706// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crtn.o"707//708// Check openSUSE Tumbleweed on riscv64709// RUN: %clang -### %s -no-pie 2>&1 \710// RUN:     --target=riscv64-suse-linux -rtlib=platform --unwindlib=platform \711// RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_riscv64_tree \712// RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-RISCV64 %s713// RUN: %clang -### %s -no-pie 2>&1 \714// RUN:     --target=riscv64-suse-linux -rtlib=platform --unwindlib=platform \715// RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_riscv64_tree \716// RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-RISCV64 %s717// CHECK-OPENSUSE-TW-RISCV64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"718// CHECK-OPENSUSE-TW-RISCV64: "{{.*}}/usr/lib64/gcc/riscv64-suse-linux/9/../../../../lib64{{/|\\\\}}crt1.o"719// CHECK-OPENSUSE-TW-RISCV64: "{{.*}}/usr/lib64/gcc/riscv64-suse-linux/9/../../../../lib64{{/|\\\\}}crti.o"720// CHECK-OPENSUSE-TW-RISCV64: "{{.*}}/usr/lib64/gcc/riscv64-suse-linux/9{{/|\\\\}}crtbegin.o"721// CHECK-OPENSUSE-TW-RISCV64: "-L[[SYSROOT]]/usr/lib64/gcc/riscv64-suse-linux/9"722// CHECK-OPENSUSE-TW-RISCV64: "-L[[SYSROOT]]/usr/lib64/gcc/riscv64-suse-linux/9/../../../../lib64"723// CHECK-OPENSUSE-TW-RISCV64: "{{.*}}/usr/lib64/gcc/riscv64-suse-linux/9{{/|\\\\}}crtend.o"724// CHECK-OPENSUSE-TW-RISCV64: "{{.*}}/usr/lib64/gcc/riscv64-suse-linux/9/../../../../lib64{{/|\\\\}}crtn.o"725//726// Check openSUSE Tumbleweed on ppc727// RUN: %clang -### %s -no-pie 2>&1 \728// RUN:     --target=powerpc-unknown-linux-gnu -rtlib=platform --unwindlib=platform \729// RUN:     --sysroot=%S/Inputs/opensuse_tumbleweed_ppc_tree \730// RUN:   | FileCheck --check-prefix=CHECK-OPENSUSE-TW-PPC %s731// CHECK-OPENSUSE-TW-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"732// CHECK-OPENSUSE-TW-PPC: "{{.*}}/usr/lib{{/|\\\\}}crt1.o"733// CHECK-OPENSUSE-TW-PPC: "{{.*}}/usr/lib{{/|\\\\}}crti.o"734// CHECK-OPENSUSE-TW-PPC: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/9{{/|\\\\}}crtbegin.o"735// CHECK-OPENSUSE-TW-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/9"736// CHECK-OPENSUSE-TW-PPC: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/9{{/|\\\\}}crtend.o"737// CHECK-OPENSUSE-TW-PPC: "{{.*}}/usr/lib/crtn.o"738//739// Check dynamic-linker for different archs740// RUN: %clang -### %s -no-pie 2>&1 \741// RUN:     --target=arm-linux-gnueabi \742// RUN:   | FileCheck --check-prefix=CHECK-ARM %s743// CHECK-ARM: "{{.*}}ld{{(.exe)?}}"744// CHECK-ARM: "-m" "armelf_linux_eabi"745// CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3"746//747// RUN: %clang -### %s -no-pie 2>&1 \748// RUN:     --target=arm-linux-gnueabi -mfloat-abi=hard \749// RUN:   | FileCheck --check-prefix=CHECK-ARM-ABIHF %s750// CHECK-ARM-ABIHF: "{{.*}}ld{{(.exe)?}}"751// CHECK-ARM-ABIHF: "-m" "armelf_linux_eabi"752// CHECK-ARM-ABIHF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"753//754// RUN: %clang -### %s -no-pie 2>&1 \755// RUN:     --target=arm-linux-gnueabihf \756// RUN:   | FileCheck --check-prefix=CHECK-ARM-HF %s757// CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}"758// CHECK-ARM-HF: "-m" "armelf_linux_eabi"759// CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"760//761// RUN: %clang -### %s -no-pie 2>&1 \762// RUN:     --target=loongarch64-linux-gnu \763// RUN:   | FileCheck --check-prefix=CHECK-LOONGARCH-LP64D %s764// RUN: %clang -### %s -no-pie 2>&1 \765// RUN:     --target=loongarch64-linux-gnuf64 \766// RUN:   | FileCheck --check-prefix=CHECK-LOONGARCH-LP64D %s767// CHECK-LOONGARCH-LP64D: "{{.*}}ld{{(.exe)?}}"768// CHECK-LOONGARCH-LP64D: "-m" "elf64loongarch"769// CHECK-LOONGARCH-LP64D: "-dynamic-linker" "{{.*}}/lib64/ld-linux-loongarch-lp64d.so.1"770//771// RUN: %clang -### %s -no-pie 2>&1 \772// RUN:     --target=loongarch64-linux-gnuf32 \773// RUN:   | FileCheck --check-prefix=CHECK-LOONGARCH-LP64F %s774// CHECK-LOONGARCH-LP64F: "{{.*}}ld{{(.exe)?}}"775// CHECK-LOONGARCH-LP64F: "-m" "elf64loongarch"776// CHECK-LOONGARCH-LP64F: "-dynamic-linker" "{{.*}}/lib64/ld-linux-loongarch-lp64f.so.1"777//778// RUN: %clang -### %s -no-pie 2>&1 \779// RUN:     --target=loongarch64-linux-gnusf \780// RUN:   | FileCheck --check-prefix=CHECK-LOONGARCH-LP64S %s781// CHECK-LOONGARCH-LP64S: "{{.*}}ld{{(.exe)?}}"782// CHECK-LOONGARCH-LP64S: "-m" "elf64loongarch"783// CHECK-LOONGARCH-LP64S: "-dynamic-linker" "{{.*}}/lib64/ld-linux-loongarch-lp64s.so.1"784//785// RUN: %clang -### %s -no-pie 2>&1 \786// RUN:     --target=powerpc64-linux-gnu \787// RUN:   | FileCheck --check-prefix=CHECK-PPC64 %s788// CHECK-PPC64: "{{.*}}ld{{(.exe)?}}"789// CHECK-PPC64: "-m" "elf64ppc"790// CHECK-PPC64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"791//792// RUN: %clang -### %s -no-pie 2>&1 \793// RUN:     --target=powerpc64-linux-gnu -mabi=elfv1 \794// RUN:   | FileCheck --check-prefix=CHECK-PPC64-ELFv1 %s795// CHECK-PPC64-ELFv1: "{{.*}}ld{{(.exe)?}}"796// CHECK-PPC64-ELFv1: "-m" "elf64ppc"797// CHECK-PPC64-ELFv1: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"798//799// RUN: %clang -### %s -no-pie 2>&1 \800// RUN:     --target=powerpc64-linux-gnu -mabi=elfv2 \801// RUN:   | FileCheck --check-prefix=CHECK-PPC64-ELFv2 %s802// CHECK-PPC64-ELFv2: "{{.*}}ld{{(.exe)?}}"803// CHECK-PPC64-ELFv2: "-m" "elf64ppc"804// CHECK-PPC64-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"805//806// RUN: %clang -### %s -no-pie 2>&1 \807// RUN:     --target=powerpc64le-linux-gnu \808// RUN:   | FileCheck --check-prefix=CHECK-PPC64LE %s809// CHECK-PPC64LE: "{{.*}}ld{{(.exe)?}}"810// CHECK-PPC64LE: "-m" "elf64lppc"811// CHECK-PPC64LE: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"812//813// RUN: %clang -### %s -no-pie 2>&1 \814// RUN:     --target=powerpc64le-linux-gnu -mabi=elfv1 \815// RUN:   | FileCheck --check-prefix=CHECK-PPC64LE-ELFv1 %s816// CHECK-PPC64LE-ELFv1: "{{.*}}ld{{(.exe)?}}"817// CHECK-PPC64LE-ELFv1: "-m" "elf64lppc"818// CHECK-PPC64LE-ELFv1: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"819//820// RUN: %clang -### %s -no-pie 2>&1 \821// RUN:     --target=powerpc64le-linux-gnu -mabi=elfv2 \822// RUN:   | FileCheck --check-prefix=CHECK-PPC64LE-ELFv2 %s823// CHECK-PPC64LE-ELFv2: "{{.*}}ld{{(.exe)?}}"824// CHECK-PPC64LE-ELFv2: "-m" "elf64lppc"825// CHECK-PPC64LE-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"826//827// Check that we do not pass --hash-style=gnu or --hash-style=both to828// hexagon linux linker829// RUN: %clang -### %s -no-pie 2>&1 \830// RUN:     --target=hexagon-linux-gnu \831// RUN:   | FileCheck --check-prefix=CHECK-HEXAGON %s832// CHECK-HEXAGON: "{{.*}}{{hexagon-link|ld}}{{(.exe)?}}"833// CHECK-HEXAGON-NOT: "--hash-style={{gnu|both}}"834//835// Check that we do not pass --hash-style=gnu and --hash-style=both to linker836// and provide correct path to the dynamic linker and emulation mode when build837// for MIPS platforms.838// RUN: %clang -### %s -no-pie 2>&1 \839// RUN:     --target=mips-linux-gnu \840// RUN:   | FileCheck --check-prefix=CHECK-MIPS %s841// CHECK-MIPS: "{{.*}}ld{{(.exe)?}}"842// CHECK-MIPS: "-m" "elf32btsmip"843// CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1"844// CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"845//846// RUN: %clang -### %s -no-pie 2>&1 \847// RUN:     --target=mipsel-linux-gnu \848// RUN:   | FileCheck --check-prefix=CHECK-MIPSEL %s849// CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}"850// CHECK-MIPSEL: "-m" "elf32ltsmip"851// CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1"852// CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"853//854// RUN: %clang -### %s -no-pie 2>&1 --target=mipsel-linux-gnu -mnan=2008 \855// RUN:   | FileCheck --check-prefix=CHECK-MIPSEL-NAN2008 %s856// CHECK-MIPSEL-NAN2008: "{{.*}}ld{{(.exe)?}}"857// CHECK-MIPSEL-NAN2008: "-m" "elf32ltsmip"858// CHECK-MIPSEL-NAN2008: "-dynamic-linker" "{{.*}}/lib/ld-linux-mipsn8.so.1"859// CHECK-MIPSEL-NAN2008-NOT: "--hash-style={{gnu|both}}"860//861// RUN: %clang -### %s -no-pie 2>&1 --target=mipsel-linux-gnu -mcpu=mips32r6 \862// RUN:   | FileCheck --check-prefix=CHECK-MIPS32R6EL %s863// CHECK-MIPS32R6EL: "{{.*}}ld{{(.exe)?}}"864// CHECK-MIPS32R6EL: "-m" "elf32ltsmip"865// CHECK-MIPS32R6EL: "-dynamic-linker" "{{.*}}/lib/ld-linux-mipsn8.so.1"866// CHECK-MIPS32R6EL-NOT: "--hash-style={{gnu|both}}"867//868// RUN: %clang -### %s -no-pie 2>&1 \869// RUN:     --target=mips64-linux-gnu \870// RUN:   | FileCheck --check-prefix=CHECK-MIPS64 %s871// CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}"872// CHECK-MIPS64: "-m" "elf64btsmip"873// CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"874// CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"875//876// RUN: %clang -### %s -no-pie 2>&1 \877// RUN:     --target=mips64el-linux-gnu \878// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL %s879// CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}"880// CHECK-MIPS64EL: "-m" "elf64ltsmip"881// CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"882// CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"883//884// RUN: %clang -### %s -no-pie 2>&1 --target=mips64el-linux-gnu -mnan=2008 \885// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-NAN2008 %s886// CHECK-MIPS64EL-NAN2008: "{{.*}}ld{{(.exe)?}}"887// CHECK-MIPS64EL-NAN2008: "-m" "elf64ltsmip"888// CHECK-MIPS64EL-NAN2008: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-linux-mipsn8.so.1"889// CHECK-MIPS64EL-NAN2008-NOT: "--hash-style={{gnu|both}}"890//891// RUN: %clang -### %s -no-pie 2>&1 --target=mips64el-linux-gnu -mcpu=mips64r6 \892// RUN:   | FileCheck --check-prefix=CHECK-MIPS64R6EL %s893// CHECK-MIPS64R6EL: "{{.*}}ld{{(.exe)?}}"894// CHECK-MIPS64R6EL: "-m" "elf64ltsmip"895// CHECK-MIPS64R6EL: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-linux-mipsn8.so.1"896// CHECK-MIPS64R6EL-NOT: "--hash-style={{gnu|both}}"897//898// RUN: %clang -### %s -no-pie 2>&1 \899// RUN:     --target=mips64-linux-gnu -mabi=n32 \900// RUN:   | FileCheck --check-prefix=CHECK-MIPS64-N32 %s901// CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}"902// CHECK-MIPS64-N32: "-m" "elf32btsmipn32"903// CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"904// CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}"905//906// RUN: %clang -### %s -no-pie 2>&1 \907// RUN:     --target=mips64el-linux-gnu -mabi=n32 \908// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s909// CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}"910// CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32"911// CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"912// CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}"913//914// RUN: %clang -### %s -no-pie 2>&1 --target=mips64el-linux-gnu -mabi=n32 \915// RUN:   -mnan=2008 | FileCheck --check-prefix=CHECK-MIPS64EL-N32-NAN2008 %s916// CHECK-MIPS64EL-N32-NAN2008: "{{.*}}ld{{(.exe)?}}"917// CHECK-MIPS64EL-N32-NAN2008: "-m" "elf32ltsmipn32"918// CHECK-MIPS64EL-N32-NAN2008: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld-linux-mipsn8.so.1"919// CHECK-MIPS64EL-N32-NAN2008-NOT: "--hash-style={{gnu|both}}"920//921// RUN: %clang -### %s -no-pie 2>&1 --target=mips64el-redhat-linux \922// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-REDHAT %s923// CHECK-MIPS64EL-REDHAT: "{{.*}}ld{{(.exe)?}}"924// CHECK-MIPS64EL-REDHAT: "-m" "elf64ltsmip"925// CHECK-MIPS64EL-REDHAT: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"926// CHECK-MIPS64EL-REDHAT-NOT: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-musl-mipsel.so.1"927// CHECK-MIPS64EL-REDHAT-NOT: "--hash-style={{gnu|both}}"928 929// Check that we pass --hash-style=both for pre-M Android versions and930// --hash-style=gnu for newer Android versions.931// RUN: %clang -### %s -no-pie 2>&1 \932// RUN:     --target=armv7-linux-android21 \933// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-HASH-STYLE-L %s934// CHECK-ANDROID-HASH-STYLE-L: "{{.*}}ld{{(.exe)?}}"935// CHECK-ANDROID-HASH-STYLE-L: "--hash-style=both"936//937// RUN: %clang -### %s -no-pie 2>&1 \938// RUN:     --target=armv7-linux-android23 \939// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-HASH-STYLE-M %s940// CHECK-ANDROID-HASH-STYLE-M: "{{.*}}ld{{(.exe)?}}"941// CHECK-ANDROID-HASH-STYLE-M: "--hash-style=gnu"942 943// Check that we pass --no-rosegment for pre-29 Android versions and do not for944// 29+.945// RUN: %clang %s -### -o %t.o 2>&1 \946// RUN:     --target=armv7-linux-android28 \947// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-ROSEGMENT-28 %s948// CHECK-ANDROID-ROSEGMENT-28: "{{.*}}ld{{(.exe)?}}"949// CHECK-ANDROID-ROSEGMENT-28: "--no-rosegment"950//951// RUN: %clang %s -### -o %t.o 2>&1 \952// RUN:     --target=armv7-linux-android29 \953// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-ROSEGMENT-29 %s954// CHECK-ANDROID-ROSEGMENT-29: "{{.*}}ld{{(.exe)?}}"955// CHECK-ANDROID-ROSEGMENT-29-NOT: "--no-rosegment"956 957// Check that we pass --pack-dyn-relocs=relr for API 28+ and not before.958// RUN: %clang %s -### -o %t.o 2>&1 \959// RUN:     --target=armv7-linux-android27 \960// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-RELR-27 %s961// CHECK-ANDROID-RELR-27: "{{.*}}ld{{(.exe)?}}"962// CHECK-ANDROID-RELR-27-NOT: "--pack-dyn-relocs=relr"963// CHECK-ANDROID-RELR-27-NOT: "--pack-dyn-relocs=android+relr"964//965// RUN: %clang %s -### -o %t.o 2>&1 \966// RUN:     --target=armv7-linux-android28 \967// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-RELR-28 %s968// CHECK-ANDROID-RELR-28: "{{.*}}ld{{(.exe)?}}"969// CHECK-ANDROID-RELR-28: "--use-android-relr-tags"970// CHECK-ANDROID-RELR-28: "--pack-dyn-relocs=relr"971// CHECK-ANDROID-RELR-28-NOT: "--pack-dyn-relocs=android+relr"972 973// RUN: %clang -### %s -no-pie 2>&1 --target=mips64-linux-gnuabin32 \974// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-GNUABIN32 %s975// CHECK-MIPS64EL-GNUABIN32: "{{.*}}ld{{(.exe)?}}"976// CHECK-MIPS64EL-GNUABIN32: "-m" "elf32btsmipn32"977// CHECK-MIPS64EL-GNUABIN32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"978// CHECK-MIPS64EL-GNUABIN32-NOT: "--hash-style={{gnu|both}}"979//980// RUN: %clang -### %s -no-pie 2>&1 --target=mips64-linux-gnuabi64 \981// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-GNUABI64 %s982// CHECK-MIPS64EL-GNUABI64: "{{.*}}ld{{(.exe)?}}"983// CHECK-MIPS64EL-GNUABI64: "-m" "elf64btsmip"984// CHECK-MIPS64EL-GNUABI64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"985// CHECK-MIPS64EL-GNUABI64-NOT: "--hash-style={{gnu|both}}"986//987// RUN: %clang -### %s -no-pie 2>&1 \988// RUN:     --target=sparc-unknown-linux-gnu \989// RUN:   | FileCheck --check-prefix=CHECK-SPARCV8 %s990// CHECK-SPARCV8: "{{.*}}ld{{(.exe)?}}"991// CHECK-SPARCV8: "-m" "elf32_sparc"992// CHECK-SPARCV8: "-dynamic-linker" "{{(/usr/sparc-unknown-linux-gnu)?}}/lib/ld-linux.so.2"993// CHECK-SPARCV8: "--push-state" "--as-needed" "-latomic" "--pop-state"994//995// RUN: %clang -### %s -no-pie 2>&1 \996// RUN:     --target=sparcel-unknown-linux-gnu \997// RUN:   | FileCheck --check-prefix=CHECK-SPARCV8EL %s998// CHECK-SPARCV8EL: "{{.*}}ld{{(.exe)?}}"999// CHECK-SPARCV8EL: "-m" "elf32_sparc"1000// CHECK-SPARCV8EL: "-dynamic-linker" "{{(/usr/sparcel-unknown-linux-gnu)?}}/lib/ld-linux.so.2"1001//1002// RUN: %clang -### %s -no-pie 2>&1 \1003// RUN:     --target=sparcv9-unknown-linux-gnu \1004// RUN:   | FileCheck --check-prefix=CHECK-SPARCV9 %s1005// CHECK-SPARCV9: "{{.*}}ld{{(.exe)?}}"1006// CHECK-SPARCV9: "-m" "elf64_sparc"1007// CHECK-SPARCV9: "-dynamic-linker" "{{(/usr/sparcv9-unknown-linux-gnu)?}}/lib{{(64)?}}/ld-linux.so.2"1008// CHECK-SPARCV9-NOT: "-latomic"1009 1010// Test linker invocation on Android.1011// RUN: %clang -### %s -no-pie 2>&1 \1012// RUN:     --target=arm-linux-androideabi -rtlib=platform --unwindlib=platform \1013// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1014// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s1015// RUN: %clang -### %s -no-pie 2>&1 \1016// RUN:     --target=arm-linux-android -rtlib=platform --unwindlib=platform \1017// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1018// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s1019// RUN: %clang -### %s -no-pie 2>&1 \1020// RUN:     --target=aarch64-linux-android -rtlib=platform --unwindlib=platform \1021// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1022// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s1023// RUN: %clang -### %s -no-pie 2>&1 \1024// RUN:     --target=arm64-linux-android -rtlib=platform --unwindlib=platform \1025// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1026// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s1027// RUN: %clang -### %s -no-pie 2>&1 \1028// RUN:     --target=i686-linux-android -rtlib=platform --unwindlib=platform \1029// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1030// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s1031// RUN: %clang -### %s -no-pie 2>&1 \1032// RUN:     --target=x86_64-linux-android -rtlib=platform --unwindlib=platform \1033// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1034// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s1035// CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1036// CHECK-ANDROID: "-z" "now"1037// CHECK-ANDROID: "-z" "relro"1038// CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"1039// CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"1040// CHECK-ANDROID-NOT: "-lgcc_s"1041// CHECK-ANDROID-NOT: "-lgcc"1042// CHECK-ANDROID: "-l:libunwind.a"1043// CHECK-ANDROID: "-ldl"1044// CHECK-ANDROID-NOT: "-lgcc_s"1045// CHECK-ANDROID-NOT: "-lgcc"1046// CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtend_android.o"1047// RUN: %clang -### %s -no-pie 2>&1 \1048// RUN:     --target=arm-linux-androideabi -rtlib=platform --unwindlib=platform \1049// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1050// RUN:     -shared \1051// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s1052// RUN: %clang -### %s -no-pie 2>&1 \1053// RUN:     --target=arm-linux-android -rtlib=platform --unwindlib=platform \1054// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1055// RUN:     -shared \1056// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s1057// RUN: %clang -### %s -no-pie 2>&1 \1058// RUN:     --target=aarch64-linux-android -rtlib=platform --unwindlib=platform \1059// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1060// RUN:     -shared \1061// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s1062// RUN: %clang -### %s -no-pie 2>&1 \1063// RUN:     --target=arm64-linux-android -rtlib=platform --unwindlib=platform \1064// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1065// RUN:     -shared \1066// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s1067// RUN: %clang -### %s -no-pie 2>&1 \1068// RUN:     --target=i686-linux-android -rtlib=platform --unwindlib=platform \1069// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1070// RUN:     -shared \1071// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s1072// RUN: %clang -### %s -no-pie 2>&1 \1073// RUN:     --target=x86_64-linux-android -rtlib=platform --unwindlib=platform \1074// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1075// RUN:     -shared \1076// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s1077// CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1078// CHECK-ANDROID-SO-NOT: "-Bsymbolic"1079// CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtbegin_so.o"1080// CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"1081// CHECK-ANDROID-SO-NOT: "-lgcc_s"1082// CHECK-ANDROID-SO-NOT: "-lgcc"1083// CHECK-ANDROID-SO: "-l:libunwind.a"1084// CHECK-ANDROID-SO: "-ldl"1085// CHECK-ANDROID-SO-NOT: "-lgcc_s"1086// CHECK-ANDROID-SO-NOT: "-lgcc"1087// CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtend_so.o"1088// RUN: %clang -### %s -no-pie 2>&1 \1089// RUN:     --target=arm-linux-androideabi -rtlib=platform --unwindlib=platform \1090// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1091// RUN:     -static \1092// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s1093// RUN: %clang -### %s -no-pie 2>&1 \1094// RUN:     --target=arm-linux-android -rtlib=platform --unwindlib=platform \1095// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1096// RUN:     -static \1097// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s1098// RUN: %clang -### %s -no-pie 2>&1 \1099// RUN:     --target=aarch64-linux-android -rtlib=platform --unwindlib=platform \1100// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1101// RUN:     -static \1102// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s1103// RUN: %clang -### %s -no-pie 2>&1 \1104// RUN:     --target=arm64-linux-android -rtlib=platform --unwindlib=platform \1105// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1106// RUN:     -static \1107// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s1108// RUN: %clang -### %s -no-pie 2>&1 \1109// RUN:     --target=i686-linux-android -rtlib=platform --unwindlib=platform \1110// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1111// RUN:     -static \1112// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s1113// RUN: %clang -### %s -no-pie 2>&1 \1114// RUN:     --target=x86_64-linux-android -rtlib=platform --unwindlib=platform \1115// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1116// RUN:     -static \1117// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s1118// CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1119// CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtbegin_static.o"1120// CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"1121// CHECK-ANDROID-STATIC-NOT: "-lgcc_eh"1122// CHECK-ANDROID-STATIC-NOT: "-lgcc"1123// CHECK-ANDROID-STATIC: "-l:libunwind.a"1124// CHECK-ANDROID-STATIC-NOT: "-ldl"1125// CHECK-ANDROID-STATIC-NOT: "-lgcc_eh"1126// CHECK-ANDROID-STATIC-NOT: "-lgcc"1127// CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtend_android.o"1128// RUN: %clang -### %s -no-pie 2>&1 \1129// RUN:     --target=arm-linux-androideabi -rtlib=platform --unwindlib=platform \1130// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \1131// RUN:     -pie \1132// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s1133// RUN: %clang -### %s -no-pie 2>&1 \1134// RUN:     --target=arm-linux-android -rtlib=platform --unwindlib=platform \1135// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1136// RUN:     -pie \1137// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s1138// RUN: %clang -### %s -no-pie 2>&1 \1139// RUN:     --target=aarch64-linux-android -rtlib=platform --unwindlib=platform \1140// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \1141// RUN:     -pie \1142// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s1143// RUN: %clang -### %s -no-pie 2>&1 \1144// RUN:     --target=arm64-linux-android -rtlib=platform --unwindlib=platform \1145// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \1146// RUN:     -pie \1147// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s1148// RUN: %clang -### %s -no-pie 2>&1 \1149// RUN:     --target=i686-linux-android -rtlib=platform --unwindlib=platform \1150// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1151// RUN:     -pie \1152// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s1153// RUN: %clang -### %s -no-pie 2>&1 \1154// RUN:     --target=x86_64-linux-android -rtlib=platform --unwindlib=platform \1155// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1156// RUN:     -pie \1157// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s1158// CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1159// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"1160// CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"1161// CHECK-ANDROID-PIE-NOT: "-lgcc_s"1162// CHECK-ANDROID-PIE-NOT: "-lgcc"1163// CHECK-ANDROID-PIE: "-l:libunwind.a"1164// CHECK-ANDROID-PIE-NOT: "-lgcc_s"1165// CHECK-ANDROID-PIE-NOT: "-lgcc"1166// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtend_android.o"1167// RUN: %clang -### %s -no-pie 2>&1 \1168// RUN:     --target=arm-linux-androideabi \1169// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1170// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s1171// RUN: %clang -### %s -no-pie 2>&1 \1172// RUN:     --target=arm-linux-android \1173// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1174// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s1175// RUN: %clang -### %s -no-pie 2>&1 \1176// RUN:     --target=aarch64-linux-android \1177// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1178// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s1179// RUN: %clang -### %s -no-pie 2>&1 \1180// RUN:     --target=arm64-linux-android \1181// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1182// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s1183// RUN: %clang -### %s -no-pie 2>&1 \1184// RUN:     --target=i686-linux-android \1185// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1186// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s1187// RUN: %clang -### %s -no-pie 2>&1 \1188// RUN:     --target=x86_64-linux-android \1189// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1190// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s1191// CHECK-ANDROID-32: "-dynamic-linker" "/system/bin/linker"1192// CHECK-ANDROID-64: "-dynamic-linker" "/system/bin/linker64"1193//1194// Test that Android 14 and newer use linker_hwasan64 for hwasan builds1195// RUN: %clang -### %s -no-pie 2>&1 \1196// RUN:     -fsanitize=hwaddress \1197// RUN:     --target=x86_64-linux-android33 \1198// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1199// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-OLD %s1200// RUN: %clang -### %s -no-pie 2>&1 \1201// RUN:     -fsanitize=hwaddress \1202// RUN:     --target=x86_64-linux-android34 \1203// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1204// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-NEW %s1205// CHECK-ANDROID-OLD: "-dynamic-linker" "/system/bin/linker64"1206// CHECK-ANDROID-NEW: "-dynamic-linker" "/system/bin/linker_hwasan64"1207//1208// Test that -pthread does not add -lpthread on Android.1209// RUN: %clang -### %s -no-pie 2>&1 \1210// RUN:     --target=arm-linux-androideabi -pthread \1211// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1212// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1213// RUN: %clang -### %s -no-pie 2>&1 \1214// RUN:     --target=arm-linux-android -pthread \1215// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1216// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1217// RUN: %clang -### %s -no-pie 2>&1 \1218// RUN:     --target=aarch64-linux-android -pthread \1219// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1220// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1221// RUN: %clang -### %s -no-pie 2>&1 \1222// RUN:     --target=arm64-linux-android -pthread \1223// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1224// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1225// RUN: %clang -### %s -no-pie 2>&1 \1226// RUN:     --target=i686-linux-android -pthread \1227// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1228// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1229// RUN: %clang -### %s -no-pie 2>&1 \1230// RUN:     --target=x86_64-linux-android -pthread \1231// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1232// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1233// RUN: %clang -### %s -no-pie 2>&1 \1234// RUN:     --target=arm-linux-androideabi -pthread \1235// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1236// RUN:     -shared \1237// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1238// RUN: %clang -### %s -no-pie 2>&1 \1239// RUN:     --target=arm-linux-android -pthread \1240// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1241// RUN:     -shared \1242// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1243// RUN: %clang -### %s -no-pie 2>&1 \1244// RUN:     --target=aarch64-linux-android -pthread \1245// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1246// RUN:     -shared \1247// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1248// RUN: %clang -### %s -no-pie 2>&1 \1249// RUN:     --target=arm64-linux-android -pthread \1250// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1251// RUN:     -shared \1252// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1253// RUN: %clang -### %s -no-pie 2>&1 \1254// RUN:     --target=i686-linux-android -pthread \1255// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1256// RUN:     -shared \1257// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1258// RUN: %clang -### %s -no-pie 2>&1 \1259// RUN:     --target=x86_64-linux-android -pthread \1260// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1261// RUN:     -shared \1262// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s1263// CHECK-ANDROID-PTHREAD-NOT: -lpthread1264//1265// RUN: not %clang %t.o -no-pie -### -o %t 2>&1 \1266// RUN:     --target=arm-linux-androideabi -pthread \1267// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \1268// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD-LINK %s1269// CHECK-ANDROID-PTHREAD-LINK-NOT: argument unused during compilation: '-pthread'1270 1271/// Check -fandroid-pad-segment.1272// RUN: %clang -### %s --target=aarch64-linux-android -rtlib=platform --unwindlib=platform \1273// RUN:   --sysroot=%S/Inputs/basic_android_tree/sysroot \1274// RUN:   -fandroid-pad-segment 2>&1 | FileCheck --check-prefix=CHECK-ANDROID-PAD-PHDR %s1275// CHECK-ANDROID-PAD-PHDR: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1276// CHECK-ANDROID-PAD-PHDR: "[[SYSROOT]]/usr/lib/crtbegin_dynamic.o" "[[SYSROOT]]/usr/lib/crt_pad_segment.o"1277 1278// RUN: %clang -### %s --target=aarch64-linux-android -rtlib=platform --unwindlib=platform \1279// RUN:   --sysroot=%S/Inputs/basic_android_tree/sysroot \1280// RUN:   -fandroid-pad-segment -fno-android-pad-segment 2>&1 | FileCheck --check-prefix=CHECK-NO-ANDROID-PAD-PHDR %s1281// CHECK-NO-ANDROID-PAD-PHDR: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1282// CHECK-NO-ANDROID-PAD-PHDR: "[[SYSROOT]]/usr/lib/crtbegin_dynamic.o"1283// CHECK-NO-ANDROID-PAD-PHDR-NOT: crt_pad_segment.o"1284 1285// RUN: not %clang -### %s --target=aarch64-linux -fandroid-pad-segment 2>&1 | FileCheck --check-prefix=ERR-ANDROID-PAD-EHDR %s1286// ERR-ANDROID-PAD-EHDR: error: unsupported option '-fandroid-pad-segment' for target 'aarch64-linux'1287 1288// Check linker invocation on a Debian LoongArch sysroot.1289// RUN: %clang -### %s -no-pie 2>&1 \1290// RUN:     --target=loongarch64-linux-gnu -rtlib=platform --unwindlib=platform \1291// RUN:     --sysroot=%S/Inputs/debian_loong64_tree \1292// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-LOONG64 %s1293//1294// Check that "-gnuf64" is seen as "-gnu" for loong64.1295// RUN: %clang -### %s -no-pie 2>&1 \1296// RUN:     --target=loongarch64-linux-gnuf64 -rtlib=platform --unwindlib=platform \1297// RUN:     --sysroot=%S/Inputs/debian_loong64_tree \1298// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-LOONG64 %s1299// CHECK-DEBIAN-ML-LOONG64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1300// CHECK-DEBIAN-ML-LOONG64: "[[SYSROOT]]/usr/lib/loongarch64-linux-gnu/crt1.o"1301// CHECK-DEBIAN-ML-LOONG64: "[[SYSROOT]]/usr/lib/loongarch64-linux-gnu/crti.o"1302// CHECK-DEBIAN-ML-LOONG64: "[[SYSROOT]]/usr/lib/gcc/loongarch64-linux-gnu/13/crtbegin.o"1303// CHECK-DEBIAN-ML-LOONG64: "-L[[SYSROOT]]/usr/lib/gcc/loongarch64-linux-gnu/13"1304// CHECK-DEBIAN-ML-LOONG64: "-L[[SYSROOT]]/usr/lib/loongarch64-linux-gnu"1305// CHECK-DEBIAN-ML-LOONG64: "-L[[SYSROOT]]/usr/lib"1306// CHECK-DEBIAN-ML-LOONG64: "[[SYSROOT]]/usr/lib/gcc/loongarch64-linux-gnu/13/crtend.o"1307// CHECK-DEBIAN-ML-LOONG64: "[[SYSROOT]]/usr/lib/loongarch64-linux-gnu/crtn.o"1308//1309// Check linker invocation on Debian 6 MIPS 32/64-bit.1310// RUN: %clang -### %s -no-pie 2>&1 \1311// RUN:     --target=mipsel-linux-gnu -rtlib=platform --unwindlib=platform \1312// RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \1313// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s1314// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1315// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crt1.o"1316// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crti.o"1317// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4{{/|\\\\}}crtbegin.o"1318// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"1319// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"1320// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"1321// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr{{/|\\\\}}lib"1322// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"1323// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"1324//1325// RUN: %clang -### %s -no-pie 2>&1 \1326// RUN:     --target=mips64el-linux-gnu -rtlib=platform --unwindlib=platform \1327// RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \1328// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s1329// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1330// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crt1.o"1331// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crti.o"1332// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64{{/|\\\\}}crtbegin.o"1333// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"1334// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"1335// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"1336// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr{{/|\\\\}}lib64"1337// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"1338// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"1339//1340// RUN: %clang -### %s -no-pie 2>&1 \1341// RUN:     --target=mips64el-linux-gnu -rtlib=platform --unwindlib=platform -mabi=n32 \1342// RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \1343// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s1344// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1345// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crt1.o"1346// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crti.o"1347// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32{{/|\\\\}}crtbegin.o"1348// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"1349// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"1350// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"1351// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr{{/|\\\\}}lib32"1352// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"1353// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"1354//1355// RUN: %clang -### %s -no-pie 2>&1 \1356// RUN:     --target=mips64el-linux-gnuabi64 -rtlib=platform --unwindlib=platform -mabi=32 \1357// RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \1358// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-O32 %s1359// CHECK-DEBIAN-ML-MIPS64EL-O32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1360// CHECK-DEBIAN-ML-MIPS64EL-O32: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../../libo32{{/|\\\\}}crt1.o"1361// CHECK-DEBIAN-ML-MIPS64EL-O32: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../../libo32{{/|\\\\}}crti.o"1362// CHECK-DEBIAN-ML-MIPS64EL-O32: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/32{{/|\\\\}}crtbegin.o"1363// CHECK-DEBIAN-ML-MIPS64EL-O32: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/32"1364// CHECK-DEBIAN-ML-MIPS64EL-O32: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../../libo32"1365// CHECK-DEBIAN-ML-MIPS64EL-O32: "-L[[SYSROOT]]/libo32"1366// CHECK-DEBIAN-ML-MIPS64EL-O32: "-L[[SYSROOT]]/usr/libo32"1367// CHECK-DEBIAN-ML-MIPS64EL-O32: "-L[[SYSROOT]]/lib"1368// CHECK-DEBIAN-ML-MIPS64EL-O32: "-L[[SYSROOT]]/usr/lib"1369//1370// RUN: %clang -### %s -no-pie 2>&1 \1371// RUN:     --target=mips64-unknown-linux-gnu --rtlib=platform --unwindlib=platform \1372// RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \1373// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64-GNUABI %s1374// RUN: %clang -### %s -no-pie 2>&1 \1375// RUN:     --target=mips64-linux-gnuabi64 -rtlib=platform --unwindlib=platform -mabi=n64 \1376// RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \1377// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64-GNUABI %s1378// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1379// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/mips64-linux-gnuabi64{{/|\\\\}}crt1.o"1380// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/mips64-linux-gnuabi64{{/|\\\\}}crti.o"1381// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"1382// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"1383// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib/mips64-linux-gnuabi64"1384// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64-linux-gnuabi64"1385// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib"1386// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib"1387// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"1388// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/mips64-linux-gnuabi64{{/|\\\\}}crtn.o"1389//1390// RUN: %clang -### %s -no-pie 2>&1 \1391// RUN:     --target=mips64el-unknown-linux-gnu -rtlib=platform --unwindlib=platform \1392// RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \1393// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-GNUABI %s1394// RUN: %clang -### %s -no-pie 2>&1 \1395// RUN:     --target=mips64el-linux-gnuabi64 -rtlib=platform --unwindlib=platform -mabi=n64 \1396// RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \1397// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-GNUABI %s1398// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1399// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/mips64el-linux-gnuabi64{{/|\\\\}}crt1.o"1400// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/mips64el-linux-gnuabi64{{/|\\\\}}crti.o"1401// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"1402// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"1403// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib/mips64el-linux-gnuabi64"1404// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64el-linux-gnuabi64"1405// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib"1406// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib"1407// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"1408// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/mips64el-linux-gnuabi64{{/|\\\\}}crtn.o"1409//1410// Test linker invocation for Freescale SDK (OpenEmbedded).1411// RUN: %clang -### %s -no-pie 2>&1 \1412// RUN:     --target=powerpc-fsl-linux -rtlib=platform --unwindlib=platform \1413// RUN:     --sysroot=%S/Inputs/freescale_ppc_tree \1414// RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC %s1415// CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1416// CHECK-FSL-PPC: "-m" "elf32ppclinux"1417// CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crt1.o"1418// CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crtbegin.o"1419// CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"1420// RUN: %clang -### %s -no-pie 2>&1 \1421// RUN:     --target=powerpc64-fsl-linux -rtlib=platform --unwindlib=platform \1422// RUN:     --sysroot=%S/Inputs/freescale_ppc64_tree \1423// RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC64 %s1424// CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1425// CHECK-FSL-PPC64: "-m" "elf64ppc"1426// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crt1.o"1427// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crtbegin.o"1428//1429// Check that crtfastmath.o is linked with -ffast-math and with -Ofast.1430// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s \1431// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1432// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s1433// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -ffast-math \1434// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1435// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1436// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -funsafe-math-optimizations\1437// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1438// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1439// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -ffp-model=fast \1440// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1441// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1442// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -Ofast\1443// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1444// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1445// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -Ofast -O3\1446// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1447// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s1448// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -O3 -Ofast\1449// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1450// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1451// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -ffast-math -fno-fast-math \1452// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1453// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s1454// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -Ofast -fno-fast-math \1455// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1456// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1457// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -Ofast -fno-unsafe-math-optimizations \1458// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1459// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1460// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -fno-fast-math -Ofast  \1461// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1462// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1463// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -fno-unsafe-math-optimizations -Ofast \1464// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1465// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1466// We don't have crtfastmath.o in the i386 tree, use it to check that file1467// detection works.1468// RUN: %clang --target=i386-unknown-linux -no-pie -### %s -ffast-math \1469// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1470// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s1471// Don't link crtfastmath.o with -shared1472// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -ffast-math -shared \1473// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1474// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s1475// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -Ofast -shared \1476// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1477// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s1478// Check for effects of -mdaz-ftz1479// RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math -shared -mdaz-ftz \1480// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1481// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1482// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -ffast-math -mdaz-ftz \1483// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1484// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1485// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -mdaz-ftz \1486// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1487// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s1488// RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math -shared -mno-daz-ftz \1489// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1490// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s1491// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -ffast-math -mno-daz-ftz \1492// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1493// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s1494// RUN: %clang --target=x86_64-unknown-linux -no-pie -### %s -mno-daz-ftz \1495// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \1496// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s1497// CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/10.2.0{{/|\\\\}}crtfastmath.o1498// CHECK-NOCRTFASTMATH-NOT: crtfastmath.o1499 1500// Check that we link in gcrt1.o when compiling with -pg1501// RUN: %clang -pg --target=x86_64-unknown-linux -no-pie -### %s \1502// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \1503// RUN:   | FileCheck --check-prefix=CHECK-PG %s1504// CHECK-PG: gcrt1.o1505 1506// GCC forwards -u to the linker.1507// RUN: %clang -u asdf --target=x86_64-unknown-linux -no-pie -### %s \1508// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \1509// RUN:   | FileCheck --check-prefix=CHECK-u %s1510// CHECK-u: "-u" "asdf"1511 1512// RUN: %clang -### %s -no-pie 2>&1 \1513// RUN:     --target=armeb-unknown-linux \1514// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1515// RUN:   | FileCheck --check-prefix=CHECK-ARMEB %s1516// CHECK-ARMEB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1517// CHECK-ARMEB-NOT: "--be8"1518// CHECK-ARMEB: "-EB"1519// CHECK-ARMEB: "-m" "armelfb_linux_eabi"1520 1521// RUN: %clang -### %s -no-pie 2>&1 \1522// RUN:     --target=armebv7-unknown-linux \1523// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1524// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s1525// CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1526// CHECK-ARMV7EB: "--be8"1527// CHECK-ARMV7EB: "-EB"1528// CHECK-ARMV7EB: "-m" "armelfb_linux_eabi"1529 1530// RUN: %clang -### %s -no-pie 2>&1 \1531// RUN:     --target=armv7-unknown-linux \1532// RUN:     -mbig-endian \1533// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1534// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s1535 1536// RUN: %clang -### %s -no-pie 2>&1 \1537// RUN:     --target=armebv7-unknown-linux \1538// RUN:     -mbig-endian \1539// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1540// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s1541 1542// RUN: %clang -### %s -no-pie 2>&1 \1543// RUN:     --target=armv7-unknown-linux \1544// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1545// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EL %s1546// CHECK-ARMV7EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1547// CHECK-ARMV7EL-NOT: "--be8"1548// CHECK-ARMV7EL: "-EL"1549// CHECK-ARMV7EL: "-m" "armelf_linux_eabi"1550 1551// RUN: %clang -### %s -no-pie 2>&1 \1552// RUN:     --target=armebv7-unknown-linux \1553// RUN:     -mlittle-endian \1554// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1555// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EL %s1556 1557// RUN: %clang -### %s -no-pie 2>&1 \1558// RUN:     --target=armv7-unknown-linux \1559// RUN:     -mlittle-endian \1560// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1561// RUN:   | FileCheck --check-prefix=CHECK-ARMV7EL %s1562 1563// RUN: %clang -### %s -no-pie 2>&1 \1564// RUN:     --target=aarch64_be-unknown-linux \1565// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1566// RUN:   | FileCheck --check-prefix=CHECK-AARCH64BE %s1567// CHECK-AARCH64BE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1568// CHECK-AARCH64BE-NOT: "--be8"1569// CHECK-AARCH64BE: "-EB"1570// CHECK-AARCH64BE: "-m" "aarch64linuxb"1571 1572// RUN: %clang -### %s -no-pie 2>&1 \1573// RUN:     --target=aarch64-unknown-linux \1574// RUN:     -mbig-endian \1575// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1576// RUN:   | FileCheck --check-prefix=CHECK-AARCH64BE %s1577 1578// RUN: %clang -### %s -no-pie 2>&1 \1579// RUN:     --target=aarch64_be-unknown-linux \1580// RUN:     -mbig-endian \1581// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1582// RUN:   | FileCheck --check-prefix=CHECK-AARCH64BE %s1583 1584// RUN: %clang -### %s -no-pie 2>&1 \1585// RUN:     --target=aarch64-unknown-linux \1586// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1587// RUN:   | FileCheck --check-prefix=CHECK-AARCH64LE %s1588// CHECK-AARCH64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1589// CHECK-AARCH64LE-NOT: "--be8"1590// CHECK-AARCH64LE: "-EL"1591// CHECK-AARCH64LE: "-m" "aarch64linux"1592 1593// RUN: %clang -### %s -no-pie 2>&1 \1594// RUN:     --target=aarch64_be-unknown-linux \1595// RUN:     -mlittle-endian \1596// RUN:     --sysroot=%S/Inputs/basic_linux_tree \1597// RUN:   | FileCheck --check-prefix=CHECK-AARCH64LE %s1598 1599// Check dynamic-linker for musl-libc1600// RUN: %clang -### %s -no-pie 2>&1 \1601// RUN:     --target=i386-pc-linux-musl \1602// RUN:   | FileCheck --check-prefix=CHECK-MUSL-X86 %s1603// RUN: %clang -### %s -no-pie 2>&1 \1604// RUN:     --target=x86_64-pc-linux-musl \1605// RUN:   | FileCheck --check-prefix=CHECK-MUSL-X86_64 %s1606// RUN: %clang -### %s -no-pie 2>&1 \1607// RUN:     --target=mips-pc-linux-musl \1608// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS %s1609// RUN: %clang -### %s -no-pie 2>&1 \1610// RUN:     --target=mipsel-pc-linux-musl \1611// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPSEL %s1612// RUN: %clang -### %s -no-pie 2>&1 \1613// RUN:     --target=mips64-pc-linux-musl \1614// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS64 %s1615// RUN: %clang -### %s -no-pie 2>&1 \1616// RUN:     --target=mips64el-pc-linux-musl \1617// RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS64EL %s1618// RUN: %clang -### %s -no-pie 2>&1 \1619// RUN:     --target=powerpc-pc-linux-musl \1620// RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPC %s1621// RUN: %clang -### %s -no-pie 2>&1 \1622// RUN:     --target=powerpc64-pc-linux-musl \1623// RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPC64 %s1624// RUN: %clang -### %s -no-pie 2>&1 \1625// RUN:     --target=powerpcspe-pc-linux-musl \1626// RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPCSPE %s1627// RUN: %clang -### %s -no-pie 2>&1 \1628// RUN:     --target=thumb-pc-linux-musleabi \1629// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARM %s1630// RUN: %clang -### %s -no-pie 2>&1 \1631// RUN:     --target=thumb-pc-linux-musleabihf \1632// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s1633// RUN: %clang -### %s -no-pie 2>&1 \1634// RUN:     --target=thumbv7-pc-linux-musleabi -mhard-float \1635// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s1636// RUN: %clang -### %s -no-pie 2>&1 \1637// RUN:     --target=thumbeb-pc-linux-musleabi \1638// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s1639// RUN: %clang -### %s -no-pie 2>&1 \1640// RUN:     --target=thumbeb-pc-linux-musleabihf \1641// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s1642// RUN: %clang -### %s -no-pie 2>&1 \1643// RUN:     --target=thumbv7eb-pc-linux-musleabi -mhard-float \1644// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s1645// RUN: %clang -### %s -no-pie 2>&1 \1646// RUN:     --target=arm-pc-linux-musleabi \1647// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARM %s1648// RUN: %clang -### %s -no-pie 2>&1 \1649// RUN:     --target=arm-pc-linux-musleabihf \1650// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s1651// RUN: %clang -### %s -no-pie 2>&1 \1652// RUN:     --target=armv7-pc-linux-musleabi -mhard-float \1653// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s1654// RUN: %clang -### %s -no-pie 2>&1 \1655// RUN:     --target=armeb-pc-linux-musleabi \1656// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s1657// RUN: %clang -### %s -no-pie 2>&1 \1658// RUN:     --target=armeb-pc-linux-musleabihf \1659// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s1660// RUN: %clang -### %s -no-pie 2>&1 \1661// RUN:     --target=armv7eb-pc-linux-musleabi -mhard-float \1662// RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s1663// RUN: %clang -### %s -no-pie 2>&1 \1664// RUN:     --target=aarch64-pc-linux-musl \1665// RUN:   | FileCheck --check-prefix=CHECK-MUSL-AARCH64 %s1666// RUN: %clang -### %s -no-pie 2>&1 \1667// RUN:     --target=aarch64_be-pc-linux-musl \1668// RUN:   | FileCheck --check-prefix=CHECK-MUSL-AARCH64_BE %s1669// CHECK-MUSL-X86:        "-dynamic-linker" "/lib/ld-musl-i386.so.1"1670// CHECK-MUSL-X86_64:     "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"1671// CHECK-MUSL-MIPS:       "-dynamic-linker" "/lib/ld-musl-mips.so.1"1672// CHECK-MUSL-MIPSEL:     "-dynamic-linker" "/lib/ld-musl-mipsel.so.1"1673// CHECK-MUSL-MIPS64:     "-dynamic-linker" "/lib/ld-musl-mips64.so.1"1674// CHECK-MUSL-MIPS64EL:   "-dynamic-linker" "/lib/ld-musl-mips64el.so.1"1675// CHECK-MUSL-PPC:        "-dynamic-linker" "/lib/ld-musl-powerpc.so.1"1676// CHECK-MUSL-PPC64:      "-dynamic-linker" "/lib/ld-musl-powerpc64.so.1"1677// CHECK-MUSL-PPCSPE:     "-dynamic-linker" "/lib/ld-musl-powerpc-sf.so.1"1678// CHECK-MUSL-ARM:        "-dynamic-linker" "/lib/ld-musl-arm.so.1"1679// CHECK-MUSL-ARMHF:      "-dynamic-linker" "/lib/ld-musl-armhf.so.1"1680// CHECK-MUSL-ARMEB:      "-dynamic-linker" "/lib/ld-musl-armeb.so.1"1681// CHECK-MUSL-ARMEBHF:    "-dynamic-linker" "/lib/ld-musl-armebhf.so.1"1682// CHECK-MUSL-AARCH64:    "-dynamic-linker" "/lib/ld-musl-aarch64.so.1"1683// CHECK-MUSL-AARCH64_BE: "-dynamic-linker" "/lib/ld-musl-aarch64_be.so.1"1684 1685// Check whether multilib gcc install works fine on Gentoo with gcc-config1686// RUN: %clang -### %s -Werror -no-pie 2>&1 \1687// RUN:     --target=x86_64-unknown-linux-gnu -rtlib=platform --unwindlib=platform \1688// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \1689// RUN:   | FileCheck --check-prefix=CHECK-LD-GENTOO %s1690// CHECK-LD-GENTOO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1691// CHECK-LD-GENTOO: "--eh-frame-hdr"1692// CHECK-LD-GENTOO: "-m" "elf_x86_64"1693// CHECK-LD-GENTOO: "-dynamic-linker"1694// CHECK-LD-GENTOO: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3{{/|\\\\}}crtbegin.o"1695// CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3"1696// CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"1697// CHECK-LD-GENTOO: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"1698// CHECK-LD-GENTOO: "-lc"1699// CHECK-LD-GENTOO: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"1700// RUN: %clang -### %s -Werror -no-pie 2>&1 \1701// RUN:     --target=i686-unknown-linux-gnu -rtlib=platform --unwindlib=platform \1702// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \1703// RUN:   | FileCheck --check-prefix=CHECK-LD-GENTOO-32 %s1704// CHECK-LD-GENTOO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1705// CHECK-LD-GENTOO-32: "--eh-frame-hdr"1706// CHECK-LD-GENTOO-32: "-m" "elf_i386"1707// CHECK-LD-GENTOO-32: "-dynamic-linker"1708// CHECK-LD-GENTOO-32: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/32{{/|\\\\}}crtbegin.o"1709// CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/32"1710// CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"1711// CHECK-LD-GENTOO-32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"1712// CHECK-LD-GENTOO-32: "-lc"1713// CHECK-LD-GENTOO-32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"1714// RUN: %clang -### %s -Werror -no-pie 2>&1 \1715// RUN:     --target=x86_64-unknown-linux-gnux32 -rtlib=platform --unwindlib=platform \1716// RUN:     --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \1717// RUN:   | FileCheck --check-prefix=CHECK-LD-GENTOO-X32 %s1718// CHECK-LD-GENTOO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1719// CHECK-LD-GENTOO-X32: "--eh-frame-hdr"1720// CHECK-LD-GENTOO-X32: "-m" "elf32_x86_64"1721// CHECK-LD-GENTOO-X32: "-dynamic-linker"1722// CHECK-LD-GENTOO-X32: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/x32{{/|\\\\}}crtbegin.o"1723// CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/x32"1724// CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"1725// CHECK-LD-GENTOO-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"1726// CHECK-LD-GENTOO-X32: "-lc"1727// CHECK-LD-GENTOO-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"1728 1729// RUN: %clang -### %s -no-pie -fuse-ld=ld 2>&1 \1730// RUN:     --target=x86_64-unknown-linux-gnu \1731// RUN:     --gcc-toolchain="%S/Inputs/rhel_7_tree/opt/rh/devtoolset-7/root/usr" \1732// RUN:     --sysroot="%S/Inputs/rhel_7_tree/opt/rh/devtoolset-7/root" \1733// RUN:   | FileCheck --check-prefix=CHECK-LD-RHEL7-DTS %s1734// CHECK-LD-RHEL7-DTS: "-isysroot" "[[SYSROOT:[^"]+]]"1735// CHECK-LD-RHEL7-DTS-NOT: /usr/bin/ld1736// CHECK-LD-RHEL7-DTS: [[SYSROOT]]/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld1737 1738// Check whether gcc7 install works fine on Amazon Linux AMI1739// RUN: %clang -### %s -Werror -no-pie 2>&1 \1740// RUN:     --target=x86_64-amazon-linux -rtlib=libgcc --unwindlib=platform \1741// RUN:     --sysroot=%S/Inputs/ami_linux_tree \1742// RUN:   | FileCheck --check-prefix=CHECK-LD-AMI %s1743// CHECK-LD-AMI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"1744// CHECK-LD-AMI: "--eh-frame-hdr"1745// CHECK-LD-AMI: "-m" "elf_x86_64"1746// CHECK-LD-AMI: "-dynamic-linker"1747// CHECK-LD-AMI: "{{.*}}/usr/lib/gcc/x86_64-amazon-linux/7{{/|\\\\}}crtbegin.o"1748// CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-amazon-linux/7"1749// CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-amazon-linux/7/../../../../lib64"1750// CHECK-LD-AMI: "-L[[SYSROOT]]/lib"1751// CHECK-LD-AMI: "-L[[SYSROOT]]/usr/lib"1752// CHECK-LD-AMI: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"1753// CHECK-LD-AMI: "-lc"1754// CHECK-LD-AMI: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"1755 1756// Check whether the OpenEmbedded ARM libs are added correctly.1757// RUN: %clang -### %s -no-pie 2>&1 \1758// RUN:     --target=arm-oe-linux-gnueabi -rtlib=libgcc --unwindlib=platform \1759// RUN:     --sysroot=%S/Inputs/openembedded_arm_linux_tree \1760// RUN:   | FileCheck --check-prefix=CHECK-OE-ARM %s1761 1762// CHECK-OE-ARM: "-cc1" "-triple" "armv4t-oe-linux-gnueabi"1763// CHECK-OE-ARM: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"1764// CHECK-OE-ARM: "-m" "armelf_linux_eabi" "-dynamic-linker"1765// CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../lib{{/|\\\\}}crt1.o"1766// CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../lib{{/|\\\\}}crti.o"1767// CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0{{/|\\\\}}crtbegin.o"1768// CHECK-OE-ARM: "-L[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0"1769// CHECK-OE-ARM: "-L[[SYSROOT]]/usr/lib"1770// CHECK-OE-ARM: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"1771// CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0{{/|\\\\}}crtend.o"1772// CHECK-OE-ARM: "[[SYSROOT]]/usr/lib/arm-oe-linux-gnueabi/6.3.0/../../../lib{{/|\\\\}}crtn.o"1773 1774// Check whether the OpenEmbedded AArch64 libs are added correctly.1775// RUN: %clang -### %s -no-pie 2>&1 \1776// RUN:     --target=aarch64-oe-linux -rtlib=libgcc --unwindlib=platform \1777// RUN:     --sysroot=%S/Inputs/openembedded_aarch64_linux_tree \1778// RUN:   | FileCheck --check-prefix=CHECK-OE-AARCH64 %s1779 1780// CHECK-OE-AARCH64: "-cc1" "-triple" "aarch64-oe-linux"1781// CHECK-OE-AARCH64: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"1782// CHECK-OE-AARCH64: "-m" "aarch64linux" "-dynamic-linker"1783// CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../lib64{{/|\\\\}}crt1.o"1784// CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../lib64{{/|\\\\}}crti.o"1785// CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0{{/|\\\\}}crtbegin.o"1786// CHECK-OE-AARCH64: "-L[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0"1787// CHECK-OE-AARCH64: "-L[[SYSROOT]]/usr/lib64"1788// CHECK-OE-AARCH64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"1789// CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0{{/|\\\\}}crtend.o"1790// CHECK-OE-AARCH64: "[[SYSROOT]]/usr/lib64/aarch64-oe-linux/6.3.0/../../../lib64{{/|\\\\}}crtn.o"1791 1792/// -nopie is OpenBSD-specific.1793// RUN: not %clang -### --target=x86_64-unknown-linux-gnu %s -nopie 2>&1 | FileCheck %s --check-prefix=CHECK-NOPIE1794// CHECK-NOPIE: error: unsupported option '-nopie' for target 'x86_64-unknown-linux-gnu'1795