blob: fa5459962370e1095d9952992cb04567376d16ba [file] [log] [blame]
Petr Hosek887f26d2018-06-28 03:11:52 +00001// RUN: %clang %s -### -no-canonical-prefixes --target=x86_64-fuchsia \
2// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosek3e199ec2017-10-23 21:31:05 +00003// RUN: --sysroot=%S/platform 2>&1 \
Petr Hoseke63da242017-09-12 01:28:37 +00004// RUN: | FileCheck -check-prefixes=CHECK,CHECK-X86_64 %s
Petr Hosek887f26d2018-06-28 03:11:52 +00005// RUN: %clang %s -### -no-canonical-prefixes --target=aarch64-fuchsia \
6// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosek3e199ec2017-10-23 21:31:05 +00007// RUN: --sysroot=%S/platform 2>&1 \
Petr Hoseke63da242017-09-12 01:28:37 +00008// RUN: | FileCheck -check-prefixes=CHECK,CHECK-AARCH64 %s
Petr Hosek62e1d232016-10-06 06:08:09 +00009// CHECK: {{.*}}clang{{.*}}" "-cc1"
Petr Hosek5668d832017-11-22 01:38:31 +000010// CHECK: "--mrelax-relocations"
Petr Hoseke63da242017-09-12 01:28:37 +000011// CHECK: "-munwind-tables"
Petr Hosek62e1d232016-10-06 06:08:09 +000012// CHECK: "-fuse-init-array"
13// CHECK: "-isysroot" "[[SYSROOT:[^"]+]]"
14// CHECK: "-internal-externc-isystem" "[[SYSROOT]]{{/|\\\\}}include"
Petr Hosekfdcbcfb2018-03-07 02:49:58 +000015// CHECK: "-fsanitize=safe-stack"
16// CHECK: "-stack-protector" "2"
Petr Hosekbf45ece2018-02-23 20:10:14 +000017// CHECK: "-fno-common"
Petr Hosek3e199ec2017-10-23 21:31:05 +000018// CHECK: {{.*}}ld.lld{{.*}}" "-z" "rodynamic"
Petr Hosek62e1d232016-10-06 06:08:09 +000019// CHECK: "--sysroot=[[SYSROOT]]"
20// CHECK: "-pie"
21// CHECK: "--build-id"
Petr Hosek83214df2017-08-04 02:39:27 +000022// CHECK: "--hash-style=gnu"
Petr Hosek62e1d232016-10-06 06:08:09 +000023// CHECK: "-dynamic-linker" "ld.so.1"
24// CHECK: Scrt1.o
25// CHECK-NOT: crti.o
26// CHECK-NOT: crtbegin.o
Petr Hosekcc248512017-07-12 22:14:41 +000027// CHECK: "-L[[SYSROOT]]{{/|\\\\}}lib"
Petr Hosek887f26d2018-06-28 03:11:52 +000028// CHECK-X86_64: "{{.*[/\\]}}libclang_rt.builtins.a"
29// CHECK-AARCH64: "{{.*[/\\]}}libclang_rt.builtins.a"
Petr Hosek62e1d232016-10-06 06:08:09 +000030// CHECK: "-lc"
31// CHECK-NOT: crtend.o
32// CHECK-NOT: crtn.o
33
Petr Hosek887f26d2018-06-28 03:11:52 +000034// RUN: %clang %s -### --target=x86_64-fuchsia -rtlib=libgcc 2>&1 \
Petr Hosek62e1d232016-10-06 06:08:09 +000035// RUN: | FileCheck %s -check-prefix=CHECK-RTLIB
36// CHECK-RTLIB: error: invalid runtime library name in argument '-rtlib=libgcc'
37
Petr Hosek887f26d2018-06-28 03:11:52 +000038// RUN: %clang %s -### --target=x86_64-fuchsia -static 2>&1 \
Petr Hosek62e1d232016-10-06 06:08:09 +000039// RUN: | FileCheck %s -check-prefix=CHECK-STATIC
40// CHECK-STATIC: "-Bstatic"
41// CHECK-STATIC: "-Bdynamic"
42// CHECK-STATIC: "-lc"
43
Petr Hosek887f26d2018-06-28 03:11:52 +000044// RUN: %clang %s -### --target=x86_64-fuchsia -shared 2>&1 \
Petr Hosek62e1d232016-10-06 06:08:09 +000045// RUN: | FileCheck %s -check-prefix=CHECK-SHARED
46// CHECK-SHARED-NOT: "-pie"
47// CHECK-SHARED: "-shared"
48
Petr Hosek887f26d2018-06-28 03:11:52 +000049// RUN: %clang %s -### --target=x86_64-fuchsia -r 2>&1 \
Petr Hosek62e1d232016-10-06 06:08:09 +000050// RUN: | FileCheck %s -check-prefix=CHECK-RELOCATABLE
51// CHECK-RELOCATABLE-NOT: "-pie"
52// CHECK-RELOCATABLE-NOT: "--build-id"
53// CHECK-RELOCATABLE: "-r"
Petr Hosek162540e2017-02-24 03:17:41 +000054
Petr Hosek887f26d2018-06-28 03:11:52 +000055// RUN: %clang %s -### --target=x86_64-fuchsia \
Petr Hosek162540e2017-02-24 03:17:41 +000056// RUN: -fsanitize=safe-stack 2>&1 \
Petr Hosek887f26d2018-06-28 03:11:52 +000057// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosek162540e2017-02-24 03:17:41 +000058// RUN: | FileCheck %s -check-prefix=CHECK-SAFESTACK
59// CHECK-SAFESTACK: "-fsanitize=safe-stack"
Petr Hosek887f26d2018-06-28 03:11:52 +000060// CHECK-SAFESTACK-NOT: "{{.*[/\\]}}libclang_rt.safestack.a"
Petr Hosek766288b2017-08-16 19:06:05 +000061// CHECK-SAFESTACK-NOT: "__safestack_init"
Petr Hosekb31582b2017-08-03 23:02:22 +000062
Petr Hosek887f26d2018-06-28 03:11:52 +000063// RUN: %clang %s -### --target=x86_64-fuchsia \
Petr Hosekb31582b2017-08-03 23:02:22 +000064// RUN: -fsanitize=address 2>&1 \
Petr Hosek887f26d2018-06-28 03:11:52 +000065// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosekb31582b2017-08-03 23:02:22 +000066// RUN: | FileCheck %s -check-prefix=CHECK-ASAN-X86
67// CHECK-ASAN-X86: "-fsanitize=address"
68// CHECK-ASAN-X86: "-fsanitize-address-globals-dead-stripping"
69// CHECK-ASAN-X86: "-dynamic-linker" "asan/ld.so.1"
Petr Hosek887f26d2018-06-28 03:11:52 +000070// CHECK-ASAN-X86: "{{.*[/\\]}}libclang_rt.asan.so"
71// CHECK-ASAN-X86: "{{.*[/\\]}}libclang_rt.asan-preinit.a"
Petr Hosekb31582b2017-08-03 23:02:22 +000072
73// RUN: %clang %s -### --target=aarch64-fuchsia \
74// RUN: -fsanitize=address 2>&1 \
Petr Hosek887f26d2018-06-28 03:11:52 +000075// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosekb31582b2017-08-03 23:02:22 +000076// RUN: | FileCheck %s -check-prefix=CHECK-ASAN-AARCH64
77// CHECK-ASAN-AARCH64: "-fsanitize=address"
78// CHECK-ASAN-AARCH64: "-fsanitize-address-globals-dead-stripping"
79// CHECK-ASAN-AARCH64: "-dynamic-linker" "asan/ld.so.1"
Petr Hosek887f26d2018-06-28 03:11:52 +000080// CHECK-ASAN-AARCH64: "{{.*[/\\]}}libclang_rt.asan.so"
81// CHECK-ASAN-AARCH64: "{{.*[/\\]}}libclang_rt.asan-preinit.a"
Petr Hosekb31582b2017-08-03 23:02:22 +000082
Petr Hosek887f26d2018-06-28 03:11:52 +000083// RUN: %clang %s -### --target=x86_64-fuchsia \
Petr Hosekb31582b2017-08-03 23:02:22 +000084// RUN: -fsanitize=address -fPIC -shared 2>&1 \
Petr Hosek887f26d2018-06-28 03:11:52 +000085// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosekb31582b2017-08-03 23:02:22 +000086// RUN: | FileCheck %s -check-prefix=CHECK-ASAN-SHARED
87// CHECK-ASAN-SHARED: "-fsanitize=address"
88// CHECK-ASAN-SHARED: "-fsanitize-address-globals-dead-stripping"
Petr Hosek887f26d2018-06-28 03:11:52 +000089// CHECK-ASAN-SHARED: "{{.*[/\\]}}libclang_rt.asan.so"
90// CHECK-ASAN-SHARED-NOT: "{{.*[/\\]}}libclang_rt.asan-preinit.a"
Petr Hosek37ae5af2017-12-21 22:04:31 +000091
92// RUN: %clang %s -### --target=x86_64-fuchsia \
Petr Hosekd3b520f2018-01-19 04:08:06 +000093// RUN: -fsanitize=fuzzer 2>&1 \
Petr Hosek887f26d2018-06-28 03:11:52 +000094// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosekd3b520f2018-01-19 04:08:06 +000095// RUN: | FileCheck %s -check-prefix=CHECK-FUZZER-X86
Petr Hosekfdcbcfb2018-03-07 02:49:58 +000096// CHECK-FUZZER-X86: "-fsanitize=fuzzer,fuzzer-no-link,safe-stack"
Petr Hosek887f26d2018-06-28 03:11:52 +000097// CHECK-FUZZER-X86: "{{.*[/\\]}}libclang_rt.fuzzer.a"
Petr Hosekd3b520f2018-01-19 04:08:06 +000098
99// RUN: %clang %s -### --target=aarch64-fuchsia \
100// RUN: -fsanitize=fuzzer 2>&1 \
Petr Hosek887f26d2018-06-28 03:11:52 +0000101// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosekd3b520f2018-01-19 04:08:06 +0000102// RUN: | FileCheck %s -check-prefix=CHECK-FUZZER-AARCH64
Petr Hosekfdcbcfb2018-03-07 02:49:58 +0000103// CHECK-FUZZER-AARCH64: "-fsanitize=fuzzer,fuzzer-no-link,safe-stack"
Petr Hosek887f26d2018-06-28 03:11:52 +0000104// CHECK-FUZZER-AARCH64: "{{.*[/\\]}}libclang_rt.fuzzer.a"
Petr Hosekd3b520f2018-01-19 04:08:06 +0000105
106// RUN: %clang %s -### --target=x86_64-fuchsia \
Petr Hosek37ae5af2017-12-21 22:04:31 +0000107// RUN: -fsanitize=scudo 2>&1 \
Petr Hosek887f26d2018-06-28 03:11:52 +0000108// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosek37ae5af2017-12-21 22:04:31 +0000109// RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-X86
Petr Hosekfdcbcfb2018-03-07 02:49:58 +0000110// CHECK-SCUDO-X86: "-fsanitize=safe-stack,scudo"
Petr Hosek37ae5af2017-12-21 22:04:31 +0000111// CHECK-SCUDO-X86: "-pie"
Petr Hosek887f26d2018-06-28 03:11:52 +0000112// CHECK-SCUDO-X86: "{{.*[/\\]}}libclang_rt.scudo.so"
Petr Hosek37ae5af2017-12-21 22:04:31 +0000113
114// RUN: %clang %s -### --target=aarch64-fuchsia \
115// RUN: -fsanitize=scudo 2>&1 \
Petr Hosek887f26d2018-06-28 03:11:52 +0000116// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosek37ae5af2017-12-21 22:04:31 +0000117// RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-AARCH64
Petr Hosekfdcbcfb2018-03-07 02:49:58 +0000118// CHECK-SCUDO-AARCH64: "-fsanitize=safe-stack,scudo"
Petr Hosek37ae5af2017-12-21 22:04:31 +0000119// CHECK-SCUDO-AARCH64: "-pie"
Petr Hosek887f26d2018-06-28 03:11:52 +0000120// CHECK-SCUDO-AARCH64: "{{.*[/\\]}}libclang_rt.scudo.so"
Petr Hosek37ae5af2017-12-21 22:04:31 +0000121
122// RUN: %clang %s -### --target=x86_64-fuchsia \
123// RUN: -fsanitize=scudo -fPIC -shared 2>&1 \
Petr Hosek887f26d2018-06-28 03:11:52 +0000124// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
Petr Hosek37ae5af2017-12-21 22:04:31 +0000125// RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-SHARED
Petr Hosekfdcbcfb2018-03-07 02:49:58 +0000126// CHECK-SCUDO-SHARED: "-fsanitize=safe-stack,scudo"
Petr Hosek887f26d2018-06-28 03:11:52 +0000127// CHECK-SCUDO-SHARED: "{{.*[/\\]}}libclang_rt.scudo.so"
Petr Hosek03eece72018-06-05 01:50:59 +0000128
129// RUN: %clang %s -### --target=aarch64-fuchsia \
130// RUN: -O3 -flto -mcpu=cortex-a53 2>&1 \
131// RUN: | FileCheck %s -check-prefix=CHECK-LTO
132// CHECK-LTO: "-plugin-opt=mcpu=cortex-a53"
133// CHECK-LTO: "-plugin-opt=O3"
134
135// RUN: %clang %s -### --target=x86_64-fuchsia \
136// RUN: -flto=thin -flto-jobs=8 2>&1 \
137// RUN: | FileCheck %s -check-prefix=CHECK-THINLTO
138// CHECK-THINLTO: "-plugin-opt=mcpu=x86-64"
139// CHECK-THINLTO: "-plugin-opt=thinlto"
140// CHECK-THINLTO: "-plugin-opt=jobs=8"