|
908 | 908 | // CHECK-CFI-CROSS-DSO-DIAG-ANDROID: "{{[^"]*}}libclang_rt.ubsan_standalone.so"
|
909 | 909 | // CHECK-CFI-CROSS-DSO-DIAG-ANDROID: "--export-dynamic-symbol=__cfi_check"
|
910 | 910 |
|
| 911 | +// CFI by itself does not link runtime libraries. |
| 912 | +// RUN: %clang -fsanitize=cfi \ |
| 913 | +// RUN: -flto -fvisibility=hidden \ |
| 914 | +// RUN: -fsanitize-minimal-runtime \ |
| 915 | +// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \ |
| 916 | +// RUN: -resource-dir=%S/Inputs/resource_dir \ |
| 917 | +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ |
| 918 | +// RUN: -### %s 2>&1 \ |
| 919 | +// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-LINUX |
| 920 | +// CHECK-CFI-MINRT-LINUX: "{{.*}}ld{{(.exe)?}}" |
| 921 | + |
| 922 | +// CFI with diagnostics links the UBSan runtime. |
| 923 | +// RUN: not %clang -fsanitize=cfi -fno-sanitize-trap=cfi -fsanitize-recover=cfi \ |
| 924 | +// RUN: -flto -fvisibility=hidden \ |
| 925 | +// RUN: -fsanitize-minimal-runtime \ |
| 926 | +// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \ |
| 927 | +// RUN: -resource-dir=%S/Inputs/resource_dir \ |
| 928 | +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ |
| 929 | +// RUN: -### %s 2>&1 \ |
| 930 | +// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-DIAG-LINUX |
| 931 | +// CHECK-CFI-MINRT-DIAG-LINUX: 'fsanitize-minimal-runtime' only allowed with 'fsanitize-trap=cfi' |
| 932 | +// CHECK-CFI-MINRT-DIAG-LINUX: "{{.*}}ld{{(.exe)?}}" |
| 933 | +// CHECK-CFI-MINRT-DIAG-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.ubsan_minimal.a" "--no-whole-archive" |
| 934 | + |
| 935 | +// Cross-DSO CFI links the CFI runtime. |
| 936 | +// RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \ |
| 937 | +// RUN: -flto -fvisibility=hidden \ |
| 938 | +// RUN: -fsanitize-minimal-runtime \ |
| 939 | +// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \ |
| 940 | +// RUN: -resource-dir=%S/Inputs/resource_dir \ |
| 941 | +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ |
| 942 | +// RUN: -### %s 2>&1 \ |
| 943 | +// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-CROSS-DSO-LINUX |
| 944 | +// CHECK-CFI-MINRT-CROSS-DSO-LINUX: "{{.*}}ld{{(.exe)?}}" |
| 945 | +// CHECK-CFI-MINRT-CROSS-DSO-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.cfi.a" "--no-whole-archive" |
| 946 | +// CHECK-CFI-MINRT-CROSS-DSO-LINUX: -export-dynamic |
| 947 | + |
| 948 | +// Cross-DSO CFI with diagnostics links just the CFI runtime. |
| 949 | +// RUN: not %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \ |
| 950 | +// RUN: -flto -fvisibility=hidden \ |
| 951 | +// RUN: -fsanitize-minimal-runtime \ |
| 952 | +// RUN: -fno-sanitize-trap=cfi -fsanitize-recover=cfi \ |
| 953 | +// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \ |
| 954 | +// RUN: -resource-dir=%S/Inputs/resource_dir \ |
| 955 | +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ |
| 956 | +// RUN: -### %s 2>&1 \ |
| 957 | +// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-CROSS-DSO-DIAG-LINUX |
| 958 | +// CHECK-CFI-MINRT-CROSS-DSO-DIAG-LINUX: 'fsanitize-minimal-runtime' only allowed with 'fsanitize-trap=cfi' |
| 959 | +// CHECK-CFI-MINRT-CROSS-DSO-DIAG-LINUX: "{{.*}}ld{{(.exe)?}}" |
| 960 | +// CHECK-CFI-MINRT-CROSS-DSO-DIAG-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.cfi_diag.a" "--no-whole-archive" |
| 961 | +// CHECK-CFI-MINRT-CROSS-DSO-DIAG-LINUX: -export-dynamic |
| 962 | + |
| 963 | +// Cross-DSO CFI on Android does not link runtime libraries. |
| 964 | +// RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \ |
| 965 | +// RUN: -flto -fvisibility=hidden \ |
| 966 | +// RUN: -fsanitize-minimal-runtime \ |
| 967 | +// RUN: --target=aarch64-linux-android -fuse-ld=ld \ |
| 968 | +// RUN: -resource-dir=%S/Inputs/resource_dir \ |
| 969 | +// RUN: --sysroot=%S/Inputs/basic_android_tree \ |
| 970 | +// RUN: -### %s 2>&1 \ |
| 971 | +// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-CROSS-DSO-ANDROID |
| 972 | +// CHECK-CFI-MINRT-CROSS-DSO-ANDROID: "{{.*}}ld{{(.exe)?}}" |
| 973 | + |
| 974 | +// Cross-DSO CFI with diagnostics on Android links just the UBSAN runtime. |
| 975 | +// RUN: not %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \ |
| 976 | +// RUN: -flto -fvisibility=hidden \ |
| 977 | +// RUN: -fsanitize-minimal-runtime \ |
| 978 | +// RUN: -fno-sanitize-trap=cfi -fsanitize-recover=cfi \ |
| 979 | +// RUN: --target=aarch64-linux-android -fuse-ld=ld \ |
| 980 | +// RUN: -resource-dir=%S/Inputs/resource_dir \ |
| 981 | +// RUN: --sysroot=%S/Inputs/basic_android_tree \ |
| 982 | +// RUN: -### %s 2>&1 \ |
| 983 | +// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-CROSS-DSO-DIAG-ANDROID |
| 984 | +// CHECK-CFI-MINRT-CROSS-DSO-DIAG-ANDROID: 'fsanitize-minimal-runtime' only allowed with 'fsanitize-trap=cfi' |
| 985 | +// CHECK-CFI-MINRT-CROSS-DSO-DIAG-ANDROID: "{{.*}}ld{{(.exe)?}}" |
| 986 | +// CHECK-CFI-MINRT-CROSS-DSO-DIAG-ANDROID: "{{[^"]*}}libclang_rt.ubsan_minimal.so" |
| 987 | +// CHECK-CFI-MINRT-CROSS-DSO-DIAG-ANDROID: "--export-dynamic-symbol=__cfi_check" |
| 988 | + |
911 | 989 | // RUN: %clangxx -fsanitize=address -### %s 2>&1 \
|
912 | 990 | // RUN: -mmacos-version-min=10.6 \
|
913 | 991 | // RUN: --target=x86_64-apple-darwin13.4.0 -fuse-ld=ld -stdlib=platform \
|
|
0 commit comments