1 // RUN: %clang %s -### -no-canonical-prefixes --target=x86_64-unknown-fuchsia \ 2 // RUN: --sysroot=%S/platform 2>&1 \ 3 // RUN: | FileCheck -check-prefixes=CHECK,CHECK-X86_64 %s 4 // RUN: %clang %s -### -no-canonical-prefixes --target=aarch64-unknown-fuchsia \ 5 // RUN: --sysroot=%S/platform 2>&1 \ 6 // RUN: | FileCheck -check-prefixes=CHECK,CHECK-AARCH64 %s 7 // CHECK: {{.*}}clang{{.*}}" "-cc1" 8 // CHECK: "--mrelax-relocations" 9 // CHECK: "-munwind-tables" 10 // CHECK: "-fuse-init-array" 11 // CHECK: "-isysroot" "[[SYSROOT:[^"]+]]" 12 // CHECK: "-internal-externc-isystem" "[[SYSROOT]]{{/|\\\\}}include" 13 // CHECK: "-fno-common" 14 // CHECK: {{.*}}ld.lld{{.*}}" "-z" "rodynamic" 15 // CHECK: "--sysroot=[[SYSROOT]]" 16 // CHECK: "-pie" 17 // CHECK: "--build-id" 18 // CHECK: "--hash-style=gnu" 19 // CHECK: "-dynamic-linker" "ld.so.1" 20 // CHECK: Scrt1.o 21 // CHECK-NOT: crti.o 22 // CHECK-NOT: crtbegin.o 23 // CHECK: "-L[[SYSROOT]]{{/|\\\\}}lib" 24 // CHECK-X86_64: "{{.*[/\\]}}libclang_rt.builtins-x86_64.a" 25 // CHECK-AARCH64: "{{.*[/\\]}}libclang_rt.builtins-aarch64.a" 26 // CHECK: "-lc" 27 // CHECK-NOT: crtend.o 28 // CHECK-NOT: crtn.o 29 30 // RUN: %clang %s -### --target=x86_64-unknown-fuchsia -rtlib=libgcc 2>&1 \ 31 // RUN: | FileCheck %s -check-prefix=CHECK-RTLIB 32 // CHECK-RTLIB: error: invalid runtime library name in argument '-rtlib=libgcc' 33 34 // RUN: %clang %s -### --target=x86_64-unknown-fuchsia -static 2>&1 \ 35 // RUN: | FileCheck %s -check-prefix=CHECK-STATIC 36 // CHECK-STATIC: "-Bstatic" 37 // CHECK-STATIC: "-Bdynamic" 38 // CHECK-STATIC: "-lc" 39 40 // RUN: %clang %s -### --target=x86_64-unknown-fuchsia -shared 2>&1 \ 41 // RUN: | FileCheck %s -check-prefix=CHECK-SHARED 42 // CHECK-SHARED-NOT: "-pie" 43 // CHECK-SHARED: "-shared" 44 45 // RUN: %clang %s -### --target=x86_64-unknown-fuchsia -r 2>&1 \ 46 // RUN: | FileCheck %s -check-prefix=CHECK-RELOCATABLE 47 // CHECK-RELOCATABLE-NOT: "-pie" 48 // CHECK-RELOCATABLE-NOT: "--build-id" 49 // CHECK-RELOCATABLE: "-r" 50 51 // RUN: %clang %s -### --target=x86_64-unknown-fuchsia \ 52 // RUN: -fsanitize=safe-stack 2>&1 \ 53 // RUN: | FileCheck %s -check-prefix=CHECK-SAFESTACK 54 // CHECK-SAFESTACK: "-fsanitize=safe-stack" 55 // CHECK-SAFESTACK-NOT: "{{.*[/\\]}}libclang_rt.safestack-x86_64.a" 56 // CHECK-SAFESTACK-NOT: "__safestack_init" 57 58 // RUN: %clang %s -### --target=x86_64-unknown-fuchsia \ 59 // RUN: -fsanitize=address 2>&1 \ 60 // RUN: | FileCheck %s -check-prefix=CHECK-ASAN-X86 61 // CHECK-ASAN-X86: "-fsanitize=address" 62 // CHECK-ASAN-X86: "-fsanitize-address-globals-dead-stripping" 63 // CHECK-ASAN-X86: "-dynamic-linker" "asan/ld.so.1" 64 // CHECK-ASAN-X86: "{{.*[/\\]}}libclang_rt.asan-x86_64.so" 65 // CHECK-ASAN-X86: "{{.*[/\\]}}libclang_rt.asan-preinit-x86_64.a" 66 67 // RUN: %clang %s -### --target=aarch64-fuchsia \ 68 // RUN: -fsanitize=address 2>&1 \ 69 // RUN: | FileCheck %s -check-prefix=CHECK-ASAN-AARCH64 70 // CHECK-ASAN-AARCH64: "-fsanitize=address" 71 // CHECK-ASAN-AARCH64: "-fsanitize-address-globals-dead-stripping" 72 // CHECK-ASAN-AARCH64: "-dynamic-linker" "asan/ld.so.1" 73 // CHECK-ASAN-AARCH64: "{{.*[/\\]}}libclang_rt.asan-aarch64.so" 74 // CHECK-ASAN-AARCH64: "{{.*[/\\]}}libclang_rt.asan-preinit-aarch64.a" 75 76 // RUN: %clang %s -### --target=x86_64-unknown-fuchsia \ 77 // RUN: -fsanitize=address -fPIC -shared 2>&1 \ 78 // RUN: | FileCheck %s -check-prefix=CHECK-ASAN-SHARED 79 // CHECK-ASAN-SHARED: "-fsanitize=address" 80 // CHECK-ASAN-SHARED: "-fsanitize-address-globals-dead-stripping" 81 // CHECK-ASAN-SHARED: "{{.*[/\\]}}libclang_rt.asan-x86_64.so" 82 // CHECK-ASAN-SHARED-NOT: "{{.*[/\\]}}libclang_rt.asan-preinit-x86_64.a" 83 84 // RUN: %clang %s -### --target=x86_64-fuchsia \ 85 // RUN: -fsanitize=fuzzer 2>&1 \ 86 // RUN: | FileCheck %s -check-prefix=CHECK-FUZZER-X86 87 // CHECK-FUZZER-X86: "-fsanitize=fuzzer,fuzzer-no-link" 88 // CHECK-FUZZER-X86: "{{.*[/\\]}}libclang_rt.fuzzer-x86_64.a" 89 90 // RUN: %clang %s -### --target=aarch64-fuchsia \ 91 // RUN: -fsanitize=fuzzer 2>&1 \ 92 // RUN: | FileCheck %s -check-prefix=CHECK-FUZZER-AARCH64 93 // CHECK-FUZZER-AARCH64: "-fsanitize=fuzzer,fuzzer-no-link" 94 // CHECK-FUZZER-AARCH64: "{{.*[/\\]}}libclang_rt.fuzzer-aarch64.a" 95 96 // RUN: %clang %s -### --target=x86_64-fuchsia \ 97 // RUN: -fsanitize=scudo 2>&1 \ 98 // RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-X86 99 // CHECK-SCUDO-X86: "-fsanitize=scudo" 100 // CHECK-SCUDO-X86: "-pie" 101 // CHECK-SCUDO-X86: "{{.*[/\\]}}libclang_rt.scudo-x86_64.so" 102 103 // RUN: %clang %s -### --target=aarch64-fuchsia \ 104 // RUN: -fsanitize=scudo 2>&1 \ 105 // RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-AARCH64 106 // CHECK-SCUDO-AARCH64: "-fsanitize=scudo" 107 // CHECK-SCUDO-AARCH64: "-pie" 108 // CHECK-SCUDO-AARCH64: "{{.*[/\\]}}libclang_rt.scudo-aarch64.so" 109 110 // RUN: %clang %s -### --target=x86_64-fuchsia \ 111 // RUN: -fsanitize=scudo -fPIC -shared 2>&1 \ 112 // RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-SHARED 113 // CHECK-SCUDO-SHARED: "-fsanitize=scudo" 114 // CHECK-SCUDO-SHARED: "{{.*[/\\]}}libclang_rt.scudo-x86_64.so" 115