xref: /aosp_15_r20/external/clang/test/Driver/darwin-sanitizer-ld.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Test sanitizer link flags on Darwin.
2*67e74705SXin Li 
3*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
4*67e74705SXin Li // RUN:   -stdlib=platform -fsanitize=address %s -o %t.o 2>&1 \
5*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ASAN %s
6*67e74705SXin Li 
7*67e74705SXin Li // CHECK-ASAN: "{{.*}}ld{{(.exe)?}}"
8*67e74705SXin Li // CHECK-ASAN-NOT: "-lstdc++"
9*67e74705SXin Li // CHECK-ASAN-NOT: "-lc++"
10*67e74705SXin Li // CHECK-ASAN: libclang_rt.asan_osx_dynamic.dylib"
11*67e74705SXin Li // CHECK-ASAN: "-rpath" "@executable_path"
12*67e74705SXin Li // CHECK-ASAN: "-rpath" "{{.*}}lib{{.*}}darwin"
13*67e74705SXin Li 
14*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
15*67e74705SXin Li // RUN:   -fPIC -shared -fsanitize=address %s -o %t.so 2>&1 \
16*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DYN-ASAN %s
17*67e74705SXin Li 
18*67e74705SXin Li // CHECK-DYN-ASAN: "{{.*}}ld{{(.exe)?}}"
19*67e74705SXin Li // CHECK-DYN-ASAN: "-dylib"
20*67e74705SXin Li // CHECK-DYN-ASAN: libclang_rt.asan_osx_dynamic.dylib"
21*67e74705SXin Li // CHECK-DYN-ASAN: "-rpath" "@executable_path"
22*67e74705SXin Li // CHECK-DYN-ASAN: "-rpath" "{{.*}}lib{{.*}}darwin"
23*67e74705SXin Li 
24*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
25*67e74705SXin Li // RUN:   -stdlib=platform -fsanitize=undefined %s -o %t.o 2>&1 \
26*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-UBSAN %s
27*67e74705SXin Li 
28*67e74705SXin Li // CHECK-UBSAN: "{{.*}}ld{{(.exe)?}}"
29*67e74705SXin Li // CHECK-UBSAN-NOT: "-lstdc++"
30*67e74705SXin Li // CHECK-UBSAN-NOT: "-lc++"
31*67e74705SXin Li // CHECK-UBSAN: libclang_rt.ubsan_osx_dynamic.dylib"
32*67e74705SXin Li // CHECK-UBSAN: "-rpath" "@executable_path"
33*67e74705SXin Li // CHECK-UBSAN: "-rpath" "{{.*}}lib{{.*}}darwin"
34*67e74705SXin Li 
35*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
36*67e74705SXin Li // RUN:   -fsanitize=bounds -fsanitize-undefined-trap-on-error \
37*67e74705SXin Li // RUN:   %s -o %t.o 2>&1 \
38*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-BOUNDS %s
39*67e74705SXin Li 
40*67e74705SXin Li // CHECK-BOUNDS: "{{.*}}ld{{(.exe)?}}"
41*67e74705SXin Li // CHECK-BOUNDS-NOT: libclang_rt.ubsan_osx.a"
42*67e74705SXin Li 
43*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
44*67e74705SXin Li // RUN:   -fPIC -shared -fsanitize=undefined %s -o %t.so 2>&1 \
45*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DYN-UBSAN %s
46*67e74705SXin Li 
47*67e74705SXin Li // CHECK-DYN-UBSAN: "{{.*}}ld{{(.exe)?}}"
48*67e74705SXin Li // CHECK-DYN-UBSAN: "-dylib"
49*67e74705SXin Li // CHECK-DYN-UBSAN: libclang_rt.ubsan_osx_dynamic.dylib"
50*67e74705SXin Li // CHECK-DYN-UBSAN: "-rpath" "@executable_path"
51*67e74705SXin Li // CHECK-DYN-UBSAN: "-rpath" "{{.*}}lib{{.*}}darwin"
52*67e74705SXin Li 
53*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
54*67e74705SXin Li // RUN:   -fsanitize=bounds -fsanitize-undefined-trap-on-error \
55*67e74705SXin Li // RUN:   %s -o %t.so -fPIC -shared 2>&1 \
56*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DYN-BOUNDS %s
57*67e74705SXin Li 
58*67e74705SXin Li // CHECK-DYN-BOUNDS: "{{.*}}ld{{(.exe)?}}"
59*67e74705SXin Li // CHECK-DYN-BOUNDS-NOT: ubsan_osx
60*67e74705SXin Li 
61*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
62*67e74705SXin Li // RUN:   -stdlib=platform -fsanitize=address -mios-simulator-version-min=7.0 \
63*67e74705SXin Li // RUN:   %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-IOSSIM %s
64*67e74705SXin Li 
65*67e74705SXin Li // CHECK-ASAN-IOSSIM: "{{.*}}ld{{(.exe)?}}"
66*67e74705SXin Li // CHECK-ASAN-IOSSIM-NOT: "-lstdc++"
67*67e74705SXin Li // CHECK-ASAN-IOSSIM-NOT: "-lc++"
68*67e74705SXin Li // CHECK-ASAN-IOSSIM: libclang_rt.asan_iossim_dynamic.dylib"
69*67e74705SXin Li // CHECK-ASAN-IOSSIM: "-rpath" "@executable_path"
70*67e74705SXin Li // CHECK-ASAN-IOSSIM: "-rpath" "{{.*}}lib{{.*}}darwin"
71*67e74705SXin Li 
72*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
73*67e74705SXin Li // RUN:   -stdlib=platform -fsanitize=address \
74*67e74705SXin Li // RUN:   -mtvos-simulator-version-min=8.3.0 %s -o %t.o 2>&1 \
75*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ASAN-TVOSSIM %s
76*67e74705SXin Li 
77*67e74705SXin Li // CHECK-ASAN-TVOSSIM: "{{.*}}ld{{(.exe)?}}"
78*67e74705SXin Li // CHECK-ASAN-TVOSSIM-NOT: "-lstdc++"
79*67e74705SXin Li // CHECK-ASAN-TVOSSIM-NOT: "-lc++"
80*67e74705SXin Li // CHECK-ASAN-TVOSSIM: libclang_rt.asan_tvossim_dynamic.dylib"
81*67e74705SXin Li // CHECK-ASAN-TVOSSIM: "-rpath" "@executable_path"
82*67e74705SXin Li // CHECK-ASAN-TVOSSIM: "-rpath" "{{.*}}lib{{.*}}darwin"
83*67e74705SXin Li 
84*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
85*67e74705SXin Li // RUN:   -stdlib=platform -fsanitize=address \
86*67e74705SXin Li // RUN:   -mwatchos-simulator-version-min=2.0.0 %s -o %t.o 2>&1 \
87*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ASAN-WATCHOSSIM %s
88*67e74705SXin Li 
89*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM: "{{.*}}ld{{(.exe)?}}"
90*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM-NOT: "-lstdc++"
91*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM-NOT: "-lc++"
92*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM: libclang_rt.asan_watchossim_dynamic.dylib"
93*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM: "-rpath" "@executable_path"
94*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM: "-rpath" "{{.*}}lib{{.*}}darwin"
95*67e74705SXin Li 
96*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target armv7-apple-ios  \
97*67e74705SXin Li // RUN:   -stdlib=platform -fsanitize=address -miphoneos-version-min=7 \
98*67e74705SXin Li // RUN:   %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-IOS %s
99*67e74705SXin Li 
100*67e74705SXin Li // CHECK-ASAN-IOS: "{{.*}}ld{{(.exe)?}}"
101*67e74705SXin Li // CHECK-ASAN-IOS-NOT: "-lstdc++"
102*67e74705SXin Li // CHECK-ASAN-IOS-NOT: "-lc++"
103*67e74705SXin Li // CHECK-ASAN-IOS: libclang_rt.asan_ios_dynamic.dylib"
104*67e74705SXin Li // CHECK-ASAN-IOS: "-rpath" "@executable_path"
105*67e74705SXin Li // CHECK-ASAN-IOS: "-rpath" "{{.*}}lib{{.*}}darwin"
106*67e74705SXin Li 
107*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target arm64-apple-tvos \
108*67e74705SXin Li // RUN:   -stdlib=platform -fsanitize=address -mtvos-version-min=8.3 \
109*67e74705SXin Li // RUN:   %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-TVOS %s
110*67e74705SXin Li 
111*67e74705SXin Li // CHECK-ASAN-TVOS: "{{.*}}ld{{(.exe)?}}"
112*67e74705SXin Li // CHECK-ASAN-TVOS-NOT: "-lstdc++"
113*67e74705SXin Li // CHECK-ASAN-TVOS-NOT: "-lc++"
114*67e74705SXin Li // CHECK-ASAN-TVOS: libclang_rt.asan_tvos_dynamic.dylib"
115*67e74705SXin Li // CHECK-ASAN-TVOS: "-rpath" "@executable_path"
116*67e74705SXin Li // CHECK-ASAN-TVOS: "-rpath" "{{.*}}lib{{.*}}darwin"
117*67e74705SXin Li 
118*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target armv7k-apple-watchos \
119*67e74705SXin Li // RUN:   -stdlib=platform -fsanitize=address -mwatchos-version-min=2.0 \
120*67e74705SXin Li // RUN:   %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-WATCHOS %s
121*67e74705SXin Li 
122*67e74705SXin Li // CHECK-ASAN-WATCHOS: "{{.*}}ld{{(.exe)?}}"
123*67e74705SXin Li // CHECK-ASAN-WATCHOS-NOT: "-lstdc++"
124*67e74705SXin Li // CHECK-ASAN-WATCHOS-NOT: "-lc++"
125*67e74705SXin Li // CHECK-ASAN-WATCHOS: libclang_rt.asan_watchos_dynamic.dylib"
126*67e74705SXin Li // CHECK-ASAN-WATCHOS: "-rpath" "@executable_path"
127*67e74705SXin Li // CHECK-ASAN-WATCHOS: "-rpath" "{{.*}}lib{{.*}}darwin"
128