]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Driver/arch-specific-libdir-rpath.c
Vendor import of clang trunk r300422:
[FreeBSD/FreeBSD.git] / test / Driver / arch-specific-libdir-rpath.c
1 // Test that the driver adds an arch-specific subdirectory in
2 // {RESOURCE_DIR}/lib/linux to the linker search path and to '-rpath'
3 //
4 // Test the default behavior when neither -frtlib-add-rpath nor
5 // -fno-rtlib-add-rpath is specified, which is to skip -rpath
6 // RUN: %clang %s -### 2>&1 -target x86_64-linux \
7 // RUN:     -fsanitize=address -shared-libasan \
8 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
9 // RUN:     -frtlib-add-rpath \
10 // RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH-X86_64 %s
11 //
12 // Test that -rpath is not added under -fno-rtlib-add-rpath even if other
13 // conditions are met.
14 // RUN: %clang %s -### 2>&1 -target x86_64-linux \
15 // RUN:     -fsanitize=address -shared-libasan \
16 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
17 // RUN:     -frtlib-add-rpath \
18 // RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH-X86_64 %s
19 //
20 // Test that -rpath is added only under the right circumstance even if
21 // -frtlib-add-rpath is specified.
22 //
23 // Add LIBPATH but no RPATH for -fsanitizer=address w/o -shared-libasan
24 // RUN: %clang %s -### 2>&1 -target x86_64-linux -fsanitize=undefined \
25 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
26 // RUN:     -frtlib-add-rpath \
27 // RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH %s
28 //
29 // Add LIBPATH but no RPATH for -fsanitizer=address w/o -shared-libasan
30 // RUN: %clang %s -### 2>&1 -target x86_64-linux -fsanitize=undefined \
31 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
32 // RUN:     -frtlib-add-rpath \
33 // RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH %s
34 //
35 // Add LIBPATH, RPATH for -fsanitize=address -shared-libasan
36 // RUN: %clang %s -### 2>&1 -target x86_64-linux \
37 // RUN:     -fsanitize=address -shared-libasan \
38 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
39 // RUN:     -frtlib-add-rpath \
40 // RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,RPATH-X86_64 %s
41 //
42 // Add LIBPATH, RPATH for -fsanitize=address -shared-libasan on aarch64
43 // RUN: %clang %s -### 2>&1 -target aarch64-linux \
44 // RUN:     -fsanitize=address -shared-libasan \
45 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
46 // RUN:     -frtlib-add-rpath \
47 // RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-AArch64,RPATH-AArch64 %s
48 //
49 // Add LIBPATH, RPATH with -fsanitize=address for Android
50 // RUN: %clang %s -### 2>&1 -target x86_64-linux-android -fsanitize=address \
51 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
52 // RUN:     -frtlib-add-rpath \
53 // RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,RPATH-X86_64 %s
54 //
55 // Add LIBPATH, RPATH for OpenMP
56 // RUN: %clang %s -### 2>&1 -target x86_64-linux -fopenmp \
57 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
58 // RUN:     -frtlib-add-rpath \
59 // RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,RPATH-X86_64 %s
60 //
61 // Add LIBPATH but no RPATH for ubsan (or any other sanitizer)
62 // RUN: %clang %s -### 2>&1 -fsanitize=undefined -target x86_64-linux \
63 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
64 // RUN:     -frtlib-add-rpath \
65 // RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH %s
66 //
67 // Add LIBPATH but no RPATH if no sanitizer or runtime is specified
68 // RUN: %clang %s -### 2>&1 -target x86_64-linux \
69 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
70 // RUN:     -frtlib-add-rpath \
71 // RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH %s
72 //
73 // Do not add LIBPATH or RPATH if arch-specific subdir doesn't exist
74 // RUN: %clang %s -### 2>&1 -target x86_64-linux \
75 // RUN:     -resource-dir=%S/Inputs/resource_dir \
76 // RUN:     -frtlib-add-rpath \
77 // RUN:   | FileCheck --check-prefixes=RESDIR,NO-LIBPATH,NO-RPATH %s
78 //
79 // RESDIR: "-resource-dir" "[[RESDIR:[^"]*]]"
80 // LIBPATH-X86_64:  -L[[RESDIR]]{{(/|\\\\)lib(/|\\\\)linux(/|\\\\)x86_64}}
81 // RPATH-X86_64:    "-rpath" "[[RESDIR]]{{(/|\\\\)lib(/|\\\\)linux(/|\\\\)x86_64}}"
82 // LIBPATH-AArch64: -L[[RESDIR]]{{(/|\\\\)lib(/|\\\\)linux(/|\\\\)aarch64}}
83 // RPATH-AArch64:   "-rpath" "[[RESDIR]]{{(/|\\\\)lib(/|\\\\)linux(/|\\\\)aarch64}}"
84 // NO-LIBPATH-NOT:  -L{{.*Inputs(/|\\\\)resource_dir}}
85 // NO-RPATH-NOT:    "-rpath" {{.*(/|\\\\)Inputs(/|\\\\)resource_dir}}